Solaris のシステム管理 (上級編)

タイムシェアリングプロセスの優先順位を変更する (nice)

nice コマンドは、SunOS の旧バージョンとの下位互換性を保つためにのみサポートされます。 priocntl コマンドを使用する方がプロセスを柔軟に管理できます。

プロセスの優先順位は、そのスケジュールクラスポリシーと nice 値によって決定されます。 各タイムシェアリングプロセスは、グローバル優先順位を持っています。 グローバル優先順位は、ユーザーが指定した優先順位 (nice コマンドまたは priocntl コマンドの影響を受ける) とシステムで計算された優先順位を加算して算出されます。

プロセスの実行優先順位番号は、オペレーティングシステムによって割り当てられ、スケジュールクラス、使用される CPU 時間、 nice 値 (タイムシェアリングプロセスの場合) などの複数の要素によって決定されます。

各タイムシェアリングプロセスは、親プロセスから継承したデフォルトの nice 値で起動します。 nice 値は、ps レポートの NI カラムに表示されます。

ユーザーは、自分が与える nice 値優先順位を大きくしてプロセスの優先順位を下げることができます。 ただし、nice 値を小さくしてプロセスの優先順位を上げることができるのは、スーパーユーザー (または root) だけです。 これは、ユーザーが各自のプロセスの優先順位を大きくして CPU の独占比率を高めるのを防ぐためです。

nice 値の範囲は 0 から +39 までで、0 が最上位の優先順位となります。 各タイムシェアリングプロセスのデフォルトの nice 値は 20 です。nice コマンドには利用できるバージョンが 2 つあり、1 つは標準バージョンの /usr/bin/nice、もう 1 つは C シェルの組み込みコマンドです。