'D'
現状を正確に把握しようとしています。
私の場合、次のプロセスは'D'
次のようになりました。
make -f freac/CMakeFiles/freac_objs.dir/build.make freac/CMakeFiles/freac_objs.dir/build
NFS共有を使用します。
部下も増えている。 load_avgは現在1600(40 CPU)です。私は40個のプロセッサが許容可能な制限だと思います。
さて、ところで、私は3つを知りたいです:
'D'
プロセスが状態にあるときに負荷が増加するのはなぜですか?'D'
プロセスが完全に終了せず、NFS共有にアクセスするのが難しい状態になるのはなぜですか?- NFS共有にアクセスする際に突然問題が発生するのはなぜですか(主にネットワークの問題が原因ですか?)
ありがとうございます!
ベストアンサー1
ステータス「D」のプロセスは通常(常にではありませんが)「I / Oを待っている間にブロックされます」。たとえば、ディスクが使用中でサービス時間が長い場合、これが発生する可能性があります。その状態のプロセスは、D
実際のCPUリソースを使用しなくてもロード平均に含まれます。
NFSの場合、プロセスはNFSサーバーの応答を待っている「D」状態で多くの時間を費やす可能性があります。
NFSクライアントのデフォルトの動作は、再試行する前に最大60秒間再試行することです(timeo
のオプションを参照man nfs
)。これは、問題が発生した場合、プロセスが少なくとも60秒間I / Oを待機できることを意味します。
次の作業はretrans
設定とhard/soft
設定によって異なります。
ファイルシステムがマウントされるとhard
無期限に再試行され、マウントするとsoft
最終的にI / O要求が失敗します。ただし、timeo
オプションはretrans
これがすぐには発生しないことを示しています。
クライアントはいくつかの理由でNFSの問題を見ることができます。一般的な理由はネットワーク帯域幅です(特にWiFiネットワークを使用している場合)。もう1つの理由は、要求ボリューム(並列に実行された場合にボトルネックが発生する可能性がある)です。ディスクのパフォーマンスが悪いため、サーバー自体がNFS要求に応答するのが遅くなる可能性があり、サーバーが多数の要求を処理するのに十分なデーモンスレッドを実行できない可能性があります。