私は56GiBの空きRAM(free -m)を表示しますが、1MiBの空きスワップのみを表示するCentOS7.9システムがあり、3日間この状態を維持しました。最初の問題報告は、大規模な(EEエミュレートされた)アプリケーションがクラッシュし続けていることでした。
この状況で記憶が止まる原因が何であるかを理解するのに役立つ人はいますか?
答え1
実際にどのくらいのスワップスペースが使用されているかは言及していませんが、その量が大きくない場合は、1つのプロセス(またはプロセス)が使用可能なメモリを使い果たしたり消費したりする状況として説明できます(例えばキャッシュしないことを示すことなく多くのファイルを読み取る)。これにより、できるだけ多くのデータがメモリから押し出され、その一部はスワップで終了します。
スワップ領域のデータは必要なときにのみメモリに再インポートされるため、システムは通常、スワップ領域にデータ(特定の時点で使用されているが頻繁に必要ではないデータに対応)を蓄積します。データを使用してもスワップ領域に保存できます。これにより、メモリを解放する必要がある場合(変更されていない場合)、スワップ領域にコピーする必要がなくなります。
スワップ使用量を確実に減らす唯一の方法は、スワップ内のデータを含むプロセスを終了または終了させるか、または利用可能なスワップ自体を減らすことです(swapoff
)。
あなたが説明するような状況が克服できない問題を引き起こすべきではありません。スワップのデータが積極的に使用されている場合、メモリに再ロードされるまでシステムの速度はかなり遅くなりますが、使用可能なメモリが多いため、システムがクラッシュする可能性がはるかに少なくなります。交換して交換するデータをエクスポートします)。
答え2
この大規模なアプリケーションがメモリをいっぱいにすると、「非アクティブ」ソフトウェアの他の部分がスワップ領域にプッシュされます(/proc/sys/vm/swappiness
RAMからスワップ領域にコンテンツをどれだけ積極的に移動するかに影響を与えるように変更できます)。最後にシャットダウン/クラッシュすると、すべてのメモリが解放され、スワップ領域に他のソフトウェアと空きRAMが残ります。
メモリは、そのメモリが属するアプリケーションで使用されるまで、スワップから再び移動されません。スワップのメモリを頻繁に使用しない場合は、RAMに再インポートするのに時間がかかることがあります。スワップ(swapoff -a
)を閉じて、強制的にすべてをRAMにフラッシュし、スワップを消去してからスワップをswapon -a
再度開くことができます。