web-dev-qa-db-ja.com

仮想サイズは大きいがRAMおよびGPUメモリの使用量が少ない)プロセスの欠点

私のプロセスのいくつかは私のコンピューターで多くの仮想サイズをとることに気づきました。 I 理解 プロセスの仮想サイズは、実際に使用しているメモリ、プロセスがそれ自体にマップしたメモリの合計です(たとえば、ビデオカードのRAM Xサーバー)、それにマップされたディスク上のファイル(特に共有ライブラリ)、および他のプロセスと共有されたメモリ。つまり、仮想サイズは、プログラムが現時点でアクセスできるメモリの量を表します。

私が実行しているプロセスは、多くの仮想サイズ(〜117 GB)を使用しますが、RAMはほとんどありません。

enter image description here

そして少しのGPUメモリ:

enter image description here

および低ディスクI/O:

enter image description here

仮想サイズが大きい(ただし、RAMが少なく、GPUメモリが少なく、ディスクI/Oが少ない)このようなプロセスがもたらす可能性のある悪影響はありますか?彼らはどういうわけか他のプロセスを遅くすることができますか?コンピューターには32GBのRAMが搭載されています。

2

一般的に、それはおそらく悪い影響を与えることはありません。ただし、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_memory2に設定されている場合、Linuxはすべてのスワップスペースに加えてRAMのovercommitment_ratio%をコミットすることを許可します。

5
marinus