web-dev-qa-db-ja.com

ユーザープロセスを速くするために、ニース値を低く設定する必要がありますか?

私は最近、プロセスの素晴らしい価値について学びました。ユーザープログラムを実行している場合、Nice値をできるだけ低く設定する必要がありますか?

5
Nagri

短い答え

それは悪い考えなので、(通常のユーザーとして)できません。

長い答え

ほとんどの場合、違いはありません(実行中の唯一のプロセスである場合、または実行中のスレッドの総数がCPUコアの数より少ない場合)。

それが違いを生むとき、プロセスはニースではありません。それはあなたのプロセッサを独占します。コンピュータが応答しなくなります。

より長い答え:

Niceneseを削減することが理にかなっているのは、リアルタイムプロセスの場合のみです。これは、時間枠内で物事を成し遂げる必要があるプロセスのためのものです。これらのプロセスは、(Niceではなく)ニースになるように作成する必要があります。それはそこで仕事をして、それからプロセッサをあきらめることです。あなたはおそらくこれをいじくりたくないでしょう。とにかく、適切に動作するプロセスの動的優先順位が高くなるため、これはおそらく必要ありません。 (リアルタイムの優先順位もあることに注意してください(リアルタイムスケジューラを参照)。これはさらに極端です。おそらくこれまで触れたくないでしょう。特に本番システムでは重要です。それは重要なことをしているものです。)

4
ctrl-alt-delor

通常、開始されるプログラムのNice値はゼロです。つまり、システムで実行されている他のほとんどのプロセスのNice値よりも高くも低くもありません。 Nice-valueは、プロセスのスケジューリング優先順位を変更します。

非特権ユーザーはonlyニース値を指定できますlower自分のプロセスのスケジューリング優先順位(つまり、「より良い」にする)。

スケジューリング優先順位の高いプロセスは、必ずしも低い優先順位のプロセスよりもfasterで実行されるとは限りませんが、カーネルの実行キューが長くなると(ビジーシステムで多くの同時プロセスがCPU時間を争っている場合) )および負荷(実行キューの長さの測定値)が増加すると、キュー内の他のプロセスと比較して、実行がスケジュールされる可能性が高くなります。 もっと頻繁にを実行する可能性があります。

それ以外の場合idleシステムでは、Nice値が高いプロセスを実行することは、Nice値が低いプロセスを実行することと同じです。それにもかかわらず、CPUの100%、または100%近くを取得します。速くも遅くも実行されません。

非特権ユーザーの場合、Niceおよびreniceユーティリティは、自分のプロセスのスケジューリング優先順位を下げて、他の人にいいようにするためのユーティリティです。

Rootユーザーは、実行中のプロセスのスケジューリング優先順位を上げたり、プロセスを高い値で開始したりできます。

私の(OpenBSD)システムで、高いスケジューリング優先度で実行されている唯一のプロセスはntpd(タイムキーピングデーモン)とsndiod(OpenBSDのオーディオ/ MIDIサーバー)、つまりプロセスです。これは、他のプロセスがジョブを実行するのを待たずに、「リアルタイム」またはそれに近い時間で実行できる必要があります。

5
Kusalananda