Ubuntu11.10とDebianWheezyの両方で、この深刻なパフォーマンスの問題が発生しています。
1つのプロセスが大量のRAM(たとえば、3900MBのうち3700MB)を消費すると、システムはすぐに使用できなくなり、絶え間ないディスクスラッシングが発生します。ウィンドウマネージャーが使用できるようになります。が応答せず、問題のあるプロセスを強制終了するのに数分かかります(実際には、ターミナルに到達し、pkillを発行し、シグナルが実際に通過するまでしばらく待機します)
この問題は、スワップパーティションが完全に無効になっている場合でも発生します。
Iotopで調べたところ、ディスクアクティビティのほとんどはディスクの読み取りであり、googlechromeやXウィンドウレンダラーなどのプロセスに進んでいるようです。ただし、システムがフルスラッシュモードのときにiotopが更新されなくなるため、これは限られた情報にすぎません。
私の質問は:
1)大容量ディスクの読み取りの原因は何ですか? 2)これによりシステムが使用できなくなるのを防ぐにはどうすればよいですか?
システムはRAM内のデータをハードドライブに出し入れして、RAM内の他のデータに道を譲っています。ディスク操作はRAM操作よりもはるかに遅いため、システムの速度が大幅に低下します。システムの物理メモリが不足している場合、システムはこれを実行して、パフォーマンスを犠牲にして、使用可能な「仮想」メモリの量を拡張します。この状態は スラッシング と呼ばれます。
残念ながら、この問題の唯一の完全な解決策は、RAMを追加することです。メモリモジュールは比較的安価です。使用可能な物理メモリの制限に常に達している場合は、コンピュータにメモリを追加する必要があります。
編集:システムの物理メモリが不足しているため、RAMの空き容量が原因で、プログラムはハードドライブからより頻繁に読み取る必要があります。 _は通常、ディスクの読み取りを減らすために頻繁にまたは最近アクセスされたファイルを保存するために使用されます。空きRAMが少ないと、キャッシュできるファイルが少なくなり、パフォーマンスが低下します。これは特に、メモリとI/Oを大量に消費するChromeなどのアプリケーションに当てはまります。繰り返しになりますが、RAMを追加するとパフォーマンスが向上します。キャッシュの詳細については、 ウィキペディアの記事 を参照してください。
問題の原因が既知のプロセスである場合は、ulimit
を使用してそれらを制限できます。たとえば、アプリのランチャーを次のようにスクリプト化します。
#!/bin/bash
ulimit -v 1048576
/usr/bin/greedyapp
アプリは、メモリ不足エラーが発生する前に1 GiBの仮想メモリしか取得できません。ブラウザで試してみましたが、RAM制限に達したときにすぐにブラウザを強制終了することなく、アプリが奇妙に動作する可能性があるため(ユーザー入力への応答を停止するなど)、最初に非常に厳しい制限で試して、アウトで何が行われるかを確認してください。 of-memory。それでも、それらのhdのゴミ箱よりもはるかに優れています。
ulimit
は呼び出し元のプロセスとその子にのみ影響し、そのブランチのすべてのプロセスに制限を設定することに注意してください。セッションスクリプトに入れることはお勧めしません。
DragonLordは正しいです。問題は、OSが過剰な量のRAMを使用することを好まないという事実です。 RAMを最大限に活用することに近づいています。システムは、仮想メモリの使用を開始する状態になります。ハードドライブが高速であるほど、この状態のコンピュータは高速になりますが、そこから得られるパフォーマンスはそれほど多くありません。これが起こらないようにするには、さらにRAMが必要です。
明らかに、問題は特定のプログラムを使用している場合にのみ発生することをすでに認識しています。一部のプログラムは自分で作成したものです。与えられた情報のために、あなたの問題がRAMであると仮定することは論理的です。