リソースを共有するシステムで実行されるさまざまなタスクを見ると、良い値が無視されるように見えます。 Niceを19に設定したジョブの多くは100%CPU負荷で実行され、Niceを0に設定した他の多くのジョブは10%低いCPU負荷で実行されます。
これらすべてのプロセスは非常に要求が厳しく、アイドルシステムで実行されると、割り当てられたすべてのCPUが最大化されます(例:南部ドイツ)。
私は読んだここそれ
「...[良い]値は調整可能ですが、Linux実装のカーネルスケジューラでは無視できます。」
これは本当ですか?カーネルがnice値を無視することは可能ですか?このようなことが起きているようですが、どうやって確かに分かりますか?私はこれがわからない状態でシステム管理者に問題になることを望んでいません。関連スレッドの議論を読んだ。仕事はどうですか?そしてnice
Linuxにはあまり役に立ちません。ただし、CPU負荷が使用されていない状況については説明しません。
ジョブがリソースを獲得した場合、優先順位の高いジョブに再割り当てする前に、一定期間にわたってそのリソースを保持できますか?優先順位の低いジョブは数日間実行されていましたが、優先順位の高いジョブは実行に10分もかからない短いがトリッキーな計算を繰り返し実行しました。短いジョブの間に、システムが優先順位の低いジョブにリソースを割り当て、優先順位の低いジョブがそのリソースをスケジュールすることは可能ですか?
私が経験しているシステムスタックIQCentOS 6.5パッケージのインストール(一部の詳細では簡単に誤解する可能性があります)。
答え1
Nice値は、プロセスによって生成された実際のCPU負荷については何も伝えません。
良い点は、あなたが思うものとまったく同じです。つまり、特定のワークロードでプロセスがどのように機能するかです。
より正確に:
nice値が高い(==低いスケジューリング確率)プロセスが予約されている場合、nice値が低いか優先順位の高いプロセスがCPUを要求するまでCPUを予約し、潜在的に100%の負荷を生成します。
低いnice値(==より高いスケジューリング確率)を持つプロセスがCPUを放棄すると、ピーク時にCPUを使用しない可能性があります。
これが、高レベルのプロセスよりも少ないCPUを使用する低レベルのプロセスを見る理由です。より良いプロセスはより簡単にあきらめますが、現時点では明らかにすべきことがたくさんあります。
答え2
システムの多くのプロセスは何かが起こるのを待っています。これは、ほとんどのサーバープロセッサまたはデーモン(ssh、メール、Xなど)が実行する操作です。
ワードプロセッシングプログラムを使用している場合は、ただユーザーがどこかをクリックするか、何かを入力するのを待っているだけです。ほとんどの場合、プロセスは予約されておらず、CPU時間をほとんど使用しません。顕著な効果なしに、このプロセスのnice値を0に設定できます。
ただし、プログラムを使用して3D高解像度画像をレンダリングしたり、アニメーションやビデオを処理したりすると、Nice値が影響します。
共有リソースを使用するプロセスは、共有リソースと呼ばれる別の問題に直面しています。他のプロセスがリソースを使用している場合は、通常そのリソースを待つ必要があります。
ハードドライブがその例です。プロセスがハードディスク操作(ファイルの読み取りまたは書き込みなど)を開始すると、操作が完了するまでシステムによって一時停止されます。意見が全くなくても役に立ちません。プロセスが中断されると、CPU時間は使用されません。
効果はnice
非常に微妙かもしれません;-)
答え3
Linuxのスケジューラに関する限り、10分は非常に長い時間です。時間分割は約10ミリ秒です。
CPU使用率のパーセンテージを見ると、これはtop
マルチスレッドプロセスの各スレッド使用量を合計することに注意してください。したがって、10スレッドプロセスは、各スレッドが10%のアクティブ時間を取得したときにCPUを100%使用するように見えます。
Linuxのスケジューラはタスクを中断しないためnice 19
(プロセスのスケジュールを永久にキャンセルできる場合はデッドロックエラーを避けるのが難しいため)、タスクがnice 19
CPU時間を取得するのを防ぎません。スレッドが多い場合は、まだ多くのCPUリソースを使用できます。
I / O、特に仮想メモリページングで一部のプロセスがブロックされると、そのプロセスのCPU使用率が大幅に低下します。dstat
CPU使用率、ディスク、ネットワーク、ページング、コンテキスト切り替えなどの分析ビューなどのタスクを実行します。似ていますが、vmstat
色がもっときれいです。
NI
上の列を見て、プロセスが実際に想像どおりに機能していることを確認してください。 (同じプロセスの異なるスレッドが異なる良いレベルを持つ可能性はありませんが、可能だと思います。)
thisを使用している場合は再帰的ではrenice
ないことを覚えておいてください。親プロセスを調整すると、既存の子プロセスには影響せず、将来の子プロセスにのみ影響します。