Linux / コマンド / renice - 実行中のプロセスの nice 値を変更

reniceは、すでに実行中のプロセスのnice値を変更します。バッチ作業がCPUを多く使用して他の作業に影響を与えるとき、対象のプロセス識別番号(PID)を確認した後で調整します。nice値はCPUの実行時間の割り当てに関わる相対的な優先度で、使用率の上限ではありません。

nice値が大きくなるほど、一般的にCPUの優先度は低くなります。このコマンドはCPUスケジューリングにのみ関係し、メモリ量やプロセス数を直接制限する機能ではありません。値を下げて優先度を上げる操作は、管理者権限や特別な制限値が必要な場合があります。

基本的な文法

renice -n 優先度 -p PID ...

インストールされている実装とオプションは、配布版によって異なる場合があります。man reniceで現在のシステムの説明を確認してください。

使用例

現在のnice値の確認

1234 を実際の実習用プロセスのPIDへ置き換え、psの所有者・コマンド・NI列 で対象と現在のnice値を確認します。

ps -p 1234 -o pid,user,ni,cmd

実行中のプロセスを調整

以下はutil-linux版で環境変数 POSIXLY_CORRECT が設定されていない場合の例です。対象のnice値を絶対値10に設定します。-n はその環境変数が設定されていると相対的な増減として解釈されるため、同じ意味で使えません。対応版では --priority が絶対値、--relative が相対値を明示します。手元の renice --help も確認してください。

renice -n 10 -p 1234

結果を再確認

変更後に実際の NI 列を確認します。

ps -p 1234 -o pid,ni,cmd

実行中のプロセスの値変更を確認

renice は既に実行中のプロセスの nice 値を変更します。PID は実際の試験プロセス番号に置き換え、変更前後を ps で確認してください。

ps -o pid,ni,comm -p PID
renice -n 10 -p PID
ps -o pid,ni,comm -p PID

元のnice値が 0 で、上記の条件と変更権限を満たす場合、最後の NI 列が 10 になります。renice 自体のメッセージ形式は実装によって異なります。

値を下げて優先度を上げる作業には通常追加の権限が必要です。CPU 問題を解決するために値を変更しても、ボトルネックの原因やディスク・メモリの待機も合わせて確認してください。すでに終了した PID や再利用された PID を対象にしないよう、実行直前に対象情報を再確認してください。

主なオプションと形式

オプション・形式 説明
-n 値 util-linuxでは通常は設定するnice値です。POSIXLY_CORRECTが設定されると相対値になるため注意します。
-p PID プロセス ID を対象に選択します。
-u ユーザー ユーザーに属するプロセスを選択します。範囲が広いため注意が必要です。
-g グループ 指定したプロセスグループIDに属するプロセスをまとめて対象にします。

使用する際の注意点

PIDは再利用される可能性があるため、調整の直前にpsでコマンドとオーナーを再確認してください。renice -uはユーザーの複数のプロセスに影響を与える可能性があります。nice値を下げるには権限が必要で、調整が成功してもほかのCPU制限や、プロセスをまとめて資源を管理するcgroupの設定にも実際の割り当てが影響されます。変更前のNI値を記録しておき、戻す必要がある場合の権限も確認します。nice値を増やす操作はできても、元の小さい値へ戻す操作は許可されない場合があります。

よくある質問

niceとreniceの違いは何ですか?

niceは新しいコマンドの開始時に現在値へ調整値を加えます。reniceは実行中の対象を変更し、値の指定が絶対値か相対値かは実装・オプション・環境によるため確認が必要です。

公式ドキュメント

オプションの正確な動作や実装ごとの差異は、renice関連の公式ドキュメントで確認できます。