仮想サイズは高いがRAMとGPUのメモリ使用量が低いプロセスの欠点

仮想サイズは高いがRAMとGPUのメモリ使用量が低いプロセスの欠点

私のプロセスのいくつかが私のコンピュータで多くの仮想サイズを占めていることがわかりました。私理解するプロセスの仮想サイズは、実際に使用するメモリ、自己マッピングされたメモリ(X サーバー上のグラフィックカード RAM など)、マッピングされたディスク上のファイル(主に共有ライブラリ)の合計です。プロセスが共有するその他のメモリ。つまり、仮想サイズは、プログラムが現在アクセスできるメモリ量を表します。

仮想サイズ(〜117 GB)は多いが、RAMはほとんど占有しないプロセスを実行しています。

ここに画像の説明を入力してください。

GPUメモリが不足しています。

ここに画像の説明を入力してください。

ディスクI/O不足:

ここに画像の説明を入力してください。

仮想サイズの大きなプロセス(RAM、GPUメモリ、およびディスクI / Oが低い)のために潜在的な副作用がありますか?他のプロセスの速度を遅くすることはできますか?コンピュータには32GBのRAMがあります。

答え1

一般的に言って悪い影響があってはいけません。ただし、Linuxではデフォルトで許可されています。過剰なメモリ使用量。これは、プロセスがメモリを要求すると、Linuxが「確実」であると言うことを意味します。その後、メモリ(スワップ領域を含む)が不足すると、Linuxはプロセスを終了してメモリを解放し始めます。

したがって、プロセスに 117 GB が割り当てられているがほとんどを使用しない場合は、117 GB の仮想メモリが表示されます。しかし、プロセスが突然117GBを埋めることを決定すると、Linuxはメモリ不足のため終了します。たぶん他のプロセスがあるかもしれません。(ここで悪影響が出ます。)

Linuxカーネルは、許容されるオーバーコミット量を設定できます。これを行うプロセスはそのリンクで説明されていますが、すべてを一箇所に保管するためにここでも説明します。

Linuxカーネル≥2.5.30には、これを規制する2つのprocファイルがあります。まず、があります/proc/sys/vm/overcommit_memory。これには3つの値があります。

  • 0:カーネルにどれだけのオーバーコミットが許可されるかを決定します。
  • 1:無制限の超過購読を許可
  • 2:に基づいて過剰コミットを許可します/proc/sys/vm/overcommitment_ratio

別のprocファイルは、/proc/sys/overcommitment_ratio他のファイルがに設定されている場合に許容されるメモリオーバーコミット率を表します2overcommit_memoryに設定すると、LinuxはすべてのスワップスペースとRAMの%をコミットできます2overcommitment_ratio

関連情報