プロセスのniceレベルを高く設定することは、システムの負荷/ CPU時間への影響を減らす効果的な方法ですか?


10

サーバーの負荷を押してモニターアラートをトリガーするrsync cronジョブがあります。ジョブを高いniceレベルで実行するように設定した場合、システム負荷値に与える影響を効果的に減らすことができますか?


rsyncの場合、そのスイッチを使用して圧縮を減らすか、帯域幅の使用を制限する方が効果的です。
Nemo

回答:


9

負荷は軽減されません。

リソースの競合が発生している可能性がある場合にのみ、他のプロセスがより多くのCPU時間を使用できるようにします(いくつかのプロセスは、十分な使用可能なCPU時間を「競合」しています)。


9

nice値を変更しても、システムの負荷は直接軽減されません。ただし、それを使用して、残りのプロセスで使用可能なリソースを増やすことができます。

http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/から

カーネルは、nice値に基づいて、プロセスに必要なプロセッサ時間を決定します。考えられるnice値の範囲は、-20〜20です。nice値が-20のプロセスは、非常に優先順位が高くなります。nice値が20のプロセスの優先度は非常に低くなっています。

したがって、他のプロセスが優先されることを確認したい場合は、他のプロセスよりも高いレベルでcronジョブを実行する必要があります。

これを行うには、cronスクリプトを次のように実行します。

/bin/nice -n 10 /path/to/cron-script

これにより、cronスクリプトがnicenessを10ずつ増やして実行されます。残りのプロセスとスクリプトの実行時間のバランスを見つけるために、少しテストしたいと思うでしょう。

また、どのように良い仕事ですか?詳細については、http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/をご覧ください。


5

プロセスのniceレベルを変更しても、システムの負荷値には影響しません。システム負荷値は、実行キューの平均の長さです。これは、基本的にはCPUを使用するプロセスの数です。

CPUにバインドされたプロセスを実行している場合(rsyncはそうではありませんが、単なる例です)、使用可能なプロセスがある場合は常にCPU時間を使用する必要があります。常に実行したいので、システムの負荷値に1.0の負荷値を提供します。実行キューの平均の長さは実行キュー内のプロセスの順序に影響されないため、プロセスの適切なレベルは何でもかまいません。


これは覚えておくことが重要です。素晴らしいプロセスをたくさん実行すると、実際の作業が遅くなっていなくても、システムの負荷が非常に高くなります。場合によっては、負荷によって実際の問題が明らかになります。つまり、Linuxは、問題のない状態で実際に使用できるすべてのリソースをLinuxが使用できないようにすることができません(ほとんどすべての時間、何の利益も得られません)。
Nemo

3

システム負荷/ CPU時間へのプロセスの影響を軽減する3つの方法を検討する場合があります。

  • niceコマンドを使用して、タスクの優先度を手動で下げます。
  • cpulimitコマンドを使用してプロセスを繰り返し一時停止し、一定の制限を超えないようにします。
  • Linuxを使用built-in control groupsします。これは、プロセスで使用可能なリソースの量を制限するようにスケジューラーに指示するメカニズムです。

資源

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups


システムグループのバランスをとるためにcgroupを使用したいと考えています。これにより、リソース(CPU、メモリ、ディスクIO、ディスク帯域幅)を必要に応じてパーティション分割でき、低負荷の状況では、「優先度の低い」プロセスでも最大のパフォーマンスが得られます。
Mikko Rantalainen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.