私のプロセスのいくつかは私のコンピューターで多くの仮想サイズをとることに気づきました。 I 理解 プロセスの仮想サイズは、実際に使用しているメモリ、プロセスがそれ自体にマップしたメモリの合計です(たとえば、ビデオカードのRAM Xサーバー)、それにマップされたディスク上のファイル(特に共有ライブラリ)、および他のプロセスと共有されたメモリ。つまり、仮想サイズは、プログラムが現時点でアクセスできるメモリの量を表します。
私が実行しているプロセスは、多くの仮想サイズ(〜117 GB)を使用しますが、RAMはほとんどありません。
そして少しのGPUメモリ:
および低ディスクI/O:
仮想サイズが大きい(ただし、RAMが少なく、GPUメモリが少なく、ディスクI/Oが少ない)このようなプロセスがもたらす可能性のある悪影響はありますか?彼らはどういうわけか他のプロセスを遅くすることができますか?コンピューターには32GBのRAMが搭載されています。
一般的に、それはおそらく悪い影響を与えることはありません。ただし、Linuxではデフォルトで メモリのオーバーコミット が許可されています。つまり、プロセスがメモリを要求した場合、Linuxは「確実」と言います。次に、実際にメモリ(スワップスペースを含む)が不足すると、Linuxはメモリを解放するためにプロセスの強制終了を開始します。
したがって、プロセスが117GBを割り当てても、そのほとんどを使用しない場合は、117GBの仮想メモリが表示されます。ただし、プロセスが突然その117GBをいっぱいにすることを決定した場合、Linuxはメモリを使い果たしてそれを強制終了し、おそらく他のプロセスも同様に(ここで悪影響が発生します)。
Linuxカーネルは、どの程度のオーバーコミットを許可するかについて構成できます。これを行う方法のプロセスはそのリンクで説明されていますが、すべてを1か所にまとめるためにここでも説明します。
2.5.30以上のLinuxカーネルでは、これを規制する2つのprocファイルがあります。まず、/proc/sys/vm/overcommit_memory
があります。これには3つの値があります。
0
:カーネルが許容するオーバーコミットメントの量をカーネルに決定させます1
:無制限のオーバーコミットを許可する2
:/proc/sys/vm/overcommitment_ratio
に従ってオーバーコミットを許可します。もう一方のprocファイル/proc/sys/overcommitment_ratio
は、もう一方が2
に設定されている場合に許可されるメモリのオーバーコミットの割合を示します。 overcommit_memory
が2
に設定されている場合、Linuxはすべてのスワップスペースに加えてRAMのovercommitment_ratio
%をコミットすることを許可します。