奇妙な方法で停止したようなプロセスがあります。上部には以下が表示されます。
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/79492/statの12番目の変数は336236です。高すぎるでしょうか?
$ cat /proc/79492/oom_score
333
繰り返しますが、これが高すぎるかどうかは不明です。
あまりにも多くの衝突が表示されますか?
そして、システム管理者にマシンにより多くの物理メモリを割り当てるように依頼する以外に、他の解決策はありますか?
ベストアンサー1
メモリ不足が問題だとは思わない。その場合、カーネルメモリ不足(OOM)キラーまたはdmesgのページ割り当てエラーが原因でプロセスが終了することが予想されます。また、メモリのオーバーコミットとスワッピングはパフォーマンスに明らかな影響を与えますが、「正常」であることを覚えておいてください。
実際に何が起こっているのかを確認する最も簡単な方法は、straceを使用してプロセスシステムコールをダンプすることです。
strace -p <PID>
プロセスのPIDに「-p」オプションを使用して、実行中のプロセスにstraceを関連付けます。
あるいは、straceを使用してプログラムを直接実行することもできます。
strace buildheap
幸いなことに、プロセスがアクセスできないファイルを読み取ろうとするなど、プロセスが待機していることを確認できます。