Nice (UNIX)

niceコマンドとは



`nice`コマンドは、Unix系オペレーティングシステムにおいて、プロセスの優先度を制御するためのコマンドおよびシステムコールです。このコマンドを使用することで、カーネルスケジューラ内でのプロセスの実行優先度を変更できます。

動作原理と用途



`nice`コマンドは、同名のシステムコールを呼び出すことで、指定されたプロセスの優先度を調整します。優先度は「nice値」として表現され、-20が最も高く、19が最も低い優先度を表します。プロセスのデフォルトのnice値は通常0で、親プロセスから継承されます。

複数のプロセスCPU資源を競合している状況で、`nice`コマンドは特に有用です。優先度の高いプロセスには、優先度の低いプロセスよりも多くのCPU時間が割り当てられます。ただし、CPUに余裕がある場合は、最も低い優先度のプロセスでもCPU時間の大部分を使用できます。

優先度の設定



スーパーユーザー(root)のみが、nice値を小さく設定(より高い優先度を与える)ことができます。Linuxでは、`/etc/security/limits.conf`ファイルを変更することで、他のユーザーやグループにもnice値を変更する権限を付与できます。

reniceコマンド



関連するコマンドとして、`renice`があります。これは、既に実行中のプロセスの優先度を変更するために使用されます。

優先度とCPU時間の関係



`nice`値がCPU時間に与える影響は、オペレーティングシステムのスケジューラの設計によって異なります。一般的に、I/OバウンドのプロセスCPUバウンドのプロセスよりも優先されるなど、ヒューリスティックなアルゴリズムが組み込まれています。

例えば、2つの同一CPUバウンドプロセスが単一CPUのLinuxシステム(2.6.22以前)で同時に動作している場合、プロセスの優先度を `p`とすると、それぞれのCPU時間割り当ては `20 - p` に比例します。

したがって、nice値が+15で動作するプロセスは、通常の優先度のプロセスに比べて、CPU時間がおよそ1/4になります。これは、以下の計算式に基づきます。


(20 - 15) / (20 - 0) = 1/4


BSD 4.xのスケジューラでは、同じ状況下でのCPU時間の比率はおよそ10対1になります。

注意: Linux 2.6.23以降では、CFS(Completely Fair Scheduler)が採用されており、上記のような単純な計算式は適用されません。

ioniceコマンド



Linuxには、`ionice`というコマンドも存在します。これは、CPU時間ではなく、I/Oスケジューリングに影響を与えます。

まとめ



`nice`コマンドは、システムのパフォーマンスを調整し、リソースを効率的に管理するための重要なツールです。プロセスの優先度を適切に設定することで、システム全体の安定性と応答性を向上させることができます。特に、複数のプロセスが同時に動作する環境では、`nice`コマンドの適切な使用が非常に重要になります。

関連項目



GNU Core Utilities
top (UNIX)
ps (UNIX)
kill

参照



Manpage of nice - JM Project
nice(1) - コマンド man page(HP-UX リファレンス)
* renice(1M) - コマンド man page(HP-UX リファレンス)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。