私の研究グループは CentOS サーバーで時間を共有しており、renice +15 を使用して、長時間実行されるバックグラウンド タスクの優先度を下げようとしています。top を実行すると、これらのプロセスはナイス値 15 として表示されますが、ナイス CPU 負荷の「%ni」測定値は常に非常に低く (1% 未満)、これらのプロセスが 30 コアで動作している場合でも ( %CPU 列に報告されます)。これにより、私たちは実際には renice を正しく使用していないと考えさせられました (ただし、nice プロセスはより優先度の高いタスクに譲歩しているように見えます)。トップで計算されたナイスCPUパーセンテージはどのくらい正確ですか?
1 に答える
上の数字は、ファイル /proc/stat を読み取った結果です。最初の行には、結合されたすべての CPU の概要が含まれています。最初の列は usr 時間で、2 番目の列はナイス タイムです。これらの時間はクロック ティックであり、通常は 1 秒あたり 100 であり、累積されるため、全体を調べて間隔を空け、開始値を終了値から差し引く必要があります。詳細についてはドキュメントを参照してください。私はhttp://man7.org/linux/man-pages/man5/proc.5.htmlが好きです
Linux カーネルは、nice 値が 0 より大きい場合、nice 列に CPU 時間を追加します。それ以外の場合は、それを usr 列に入れます。
個々のプロセスのナイス値は、/proc/[pid]/stat の列 19 を見るとわかります。その数値は 15 で、18 列目の数値は 35 である必要があります (15 のナイスに対するカーネルの内部解釈)。ただし、top が NI 列で 15 として表示されている場合、/ からその値を取得しています。 proc/[pid]/stat.
/proc/[pid]/stat の usr と sys で使用された CPU 時間を比較し、次に /proc/stat の usr、nice と sys で使用された CPU 時間を比較すると、時間がどこに向かっているのかがわかります。おそらく、システムには大量の CPU があります。