私のOSはUbuntu 12.10 64ビットです。私はこの問題を長い間経験してきましたが、それ以前のすべてのバージョンのUbuntuでも同様です。すべてのメモリを占有して終了したときにプロセスを起動した場合、コンピュータはまだ麻痺しています。つまり、プロセスを開始する前の速度ほど速くはありません。
それは一般的なシナリオであり、それに抵抗/治癒するために何ができるでしょうか?
私のOSはUbuntu 12.10 64ビットです。私はこの問題を長い間経験してきましたが、それ以前のすべてのバージョンのUbuntuでも同様です。すべてのメモリを占有して終了したときにプロセスを起動した場合、コンピュータはまだ麻痺しています。つまり、プロセスを開始する前の速度ほど速くはありません。
それは一般的なシナリオであり、それに抵抗/治癒するために何ができるでしょうか?
回答:
まず、あなたはおそらくすべてのメモリを占有するプロセスを実行するべきではありません。
これが起こる理由は原因です swap space
。
バスがあります。このバスは、バスの内側に「優先」座席があり、屋根に「オーバーフロー」座席があります。好みの席がすべて揃っていて、まだバスに乗る必要がある場合にのみ、人々は屋根の上に座ります。
このバスには以下のユニークなものがあります。 プロパティ :
また3つあります 文化的ルール このバスについて:
今、あなたがすべての好みの席を埋めると想像してください。その後、より多くの人々がバスに乗りたいと思っています。だから誰かがバスに乗ると、すべての好みの席が取られるので、文化的慣習により、彼らは好みの席に座っている人に屋根まで登ることを強制します。このプロセスは、屋根のオーバーフローシートまでいっぱいになるまで繰り返すことができます。
すべての優先席とオーバーフロー席がいっぱいになると、どうなりますか?最大の人はバスから降りなければなりません。彼らが去るときに彼らが優先席にいるならば、彼らはすぐに去ることができます。しかし、小さい人(または複数の人)は、規則によって、利用可能な優先席に座るために屋根から降りることができます。
さて、この類推を現実に当てはめると、「オーバーフローシート」はハードディスクドライブのスワップスペースであり、「優先シート」はRAMです。バスの規則はかなりきれいに適用されます。
「大人数」(大量のRAMを占有するプロセス)が殺されると、システムはスワップスペース(オーバーフローシート)にあったプロセスをRAM(優先シート)に戻します。これは、優先席からバスに乗船して降りる方がはるかに高速であり、人々は常に乗降するため、人々が乗降する間、長時間停止する必要はないためです。屋根から。
仮想メモリオペレーティングシステムは常に可能な限り多くのRAMを消費します。最も優先度の高い使用法は、これらのRAMセグメントをアクティブに実行してアクセスしているプログラムから実際にマップされたデータ用です。中優先度の使用法は、アクティブに実行されていないプログラムのマップページ用です。最も優先度の低い使用法は "ページキャッシュ"で、これは基本的にあなたのハードディスクドライブの最も頻繁にアクセスされるファイルのキャッシュです。
システム上のほとんどのプログラムは、すべてのRAMを占有するものを除き、大きなプログラムがすべてのRAMを占有するとスワップスペース(オーバーフローシート)に移動します。したがって、大きなプログラムを終了すると、すべてが移動し始めます。デスクトップが反応し続けるようにRAMに戻します。この転送が進行している間は、非常に遅いのでシステムは停止します。仮想メモリマネージャからのI / O要求とアプリケーションからのI / O要求の負荷を分散する必要があるためです。これがなぜ起こるのかについてのより技術的な定義です。
「治療法」は3つあります。