プロセスは、使用可能な物理メモリよりも多くの仮想メモリで停止しました。

プロセスは、使用可能な物理メモリよりも多くの仮想メモリで停止しました。

奇妙な方法で停止したようなプロセスがあります。上部には以下が表示されます。

   PID USER       PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 38984 gergely    20   0  332m  276  184 S  0.7  0.0  18:13.16 Holmake
 79492 gergely    20   0 10.7g 6.5g  316 D  0.7 84.5 107:04.76 buildheap

ビルドヒープは、合計物理メモリの84.5%と10.7 GBの仮想メモリを使用します。これは8GBの物理メモリが割り当てられているマシンにあります。ただし、プロセス自体はCPUサイクルの0.7%しか使用しません。

以下の回答Linux:プロセスがあまりにもスラッシングされているかどうかを検出する方法は?

/proc/7949​​2/statの12番目の変数は336236です。高すぎるでしょうか?

$ cat /proc/79492/oom_score
333

繰り返しますが、これが高すぎるかどうかは不明です。

あまりにも多くの衝突が表示されますか?

そして、システム管理者にマシンにより多くの物理メモリを割り当てるように依頼する以外に、他の解決策はありますか?

ベストアンサー1

メモリ不足が問題だとは思わない。その場合、カーネルメモリ不足(OOM)キラーまたはdmesgのページ割り当てエラーが原因でプロセスが終了することが予想されます。また、メモリのオーバーコミットとスワッピングはパフォーマンスに明らかな影響を与えますが、「正常」であることを覚えておいてください。

実際に何が起こっているのかを確認する最も簡単な方法は、straceを使用してプロセスシステムコールをダンプすることです。

strace -p <PID>プロセスのPIDに「-p」オプションを使用して、実行中のプロセスにstraceを関連付けます。

あるいは、straceを使用してプログラムを直接実行することもできます。

strace buildheap

幸いなことに、プロセスがアクセスできないファイルを読み取ろうとするなど、プロセスが待機していることを確認できます。

おすすめ記事