| ニース | |
|---|---|
| 開発者 | AT&Tベル研究所 |
| 初回リリース | 1973年11月 (1973-11) |
| オペレーティング·システム | UnixおよびUnixライク |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | coreutils : GNU GPL v3 4.4BSD : BSDライセンス |
niceは、 UnixおよびLinuxなどのUnix系オペレーティングシステムで使用されているプログラムです。同名のカーネルコールに直接マッピングされます。特定のCPU優先度を持つユーティリティまたはシェルスクリプトを呼び出すために使用され、これにより、プロセスに他のプロセスよりも多くのCPU時間またはより少ないCPU時間が割り当てられます。nice値は-20が最も低く、最も高い優先度です。プロセスのデフォルトのnice値は親プロセスから継承され、通常は0です。 nice
最低優先度についてはシステムによってばらつきがあります。Linuxシステムでは最低優先度としてnice値19が文書化されており、[ 1 ] BSDシステムでは最低優先度として20が文書化されています。[ 2 ]どちらの場合も、「最低」優先度は他に何も実行されない場合にのみ実行されると文書化されています。
ナイス値は、*nix システムのプロセスに付加される数値で、カーネル プロセス スケジューラによって他のデータ (各プロセスによって実行されるI/Oの量など) とともに使用され、プロセスの「真の優先度」を計算します。この優先度は、プロセスに割り当てる CPU 時間の量を決定するために使用されます。
プログラム名niceは、プロセスの niceness 値を変更するというタスクを暗示しています。
nicenessという用語自体は、niceness値が高いプロセスはCPUパワーの要求が少なくなるため、システム内の他のプロセスやユーザーにとってより親切であるという考えから来ています。つまり、CPU使用の観点からはシステムにとってより親切ではない、より要求の高いプログラムのために処理時間とパワーを解放することになります。[ 3 ]
nice複数のプロセスがCPUが提供できる以上のリソースを要求している場合に有用となる。この状態では、優先度の高いプロセスは優先度の低いプロセスよりも多くのCPU時間を取得する。スーパーユーザー/etc/security/limits.conf(root)のみがnice値をより低い値(つまり優先度の高い値)に設定できる。Linuxでは、他のユーザーやグループが低いnice値を設定できるように変更することができる。 [ 4 ]
ユーザーが他のプロセスの速度を低下させずに大きなファイルを圧縮したい場合は、次のコマンドを実行します。
$ nice -n 19 tar cvzf archive.tgz大容量ファイル プロセスに特定の nice 値を設定することによる正確な数学的効果は、その Unix の実装上でスケジューラがどのように設計されているかによって異なります。特定のオペレーティング システムのスケジューラには、さまざまなヒューリスティックも組み込まれています (たとえば、主に I/O バウンドのプロセスを CPU バウンドのプロセスよりも優先するなど)。簡単な例として、2 つの他の点では同一の CPU バウンド プロセスがシングル CPU の Linux システムで同時に実行されている場合、それぞれの CPU 時間の割り当ては 20 − p に比例します( pはプロセスの優先度)。したがって、 で実行されるプロセスは、nice +15通常の優先度のプロセスに割り当てられた CPU 時間の 25% を受け取ります: (20 − 15)/(20 − 0) = 0.25。[ 5 ]一方、 BSD 4.x スケジューラでは、同じ例の比率は約 10 対 1 です。
関連reniceプログラムを使用すると、すでに実行中のプロセスの優先度を変更できます。[ 1 ]
LinuxにはioniceCPU時間ではなくI/Oのスケジュールに影響を与えるプログラムもあります。[ 6 ]