Linux / コマンド / nice - 新しいコマンドのCPU優先度調整

niceは、新しいコマンドを開始するときにCPUの実行時間の割り当てに関わるnice値を、現在の値に調整値を加えて変更します。デフォルトより大きいnice値は、通常、他の作業にCPUを譲りやすい方向です。

Linuxの一般的なnice値の範囲は-20から19までで、値が低いほど優先度が高くなります。niceは、すでに実行中のプロセスを変更しません。実行中のコマンドには reniceによるnice値の変更 を使います。

基本的な文法

nice -n 調整値 コマンド [引数 ...]

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

使用例

低い優先度で開始

読み取り可能な実習用 large.log を用意します。現在のnice値へ10を加えてSHA-256チェックサム計算を開始します。値を絶対値10に設定する指定ではありません。

nice -n 10 sha256sum large.log

デフォルト増分で開始

GNU版では調整値を省略すると10を加えます。前のコマンドとの比較例であり、同じファイルを読み取ってチェックサムを計算します。

nice sha256sum large.log

実際の値を確認

1234 を実際の対象プロセス識別番号(PID)へ置き換え、psのNI列 でnice値を確認します。

ps -p 1234 -o pid,ni,cmd

新しいプロセスのnice値を確認する

niceは新たに開始するプロセスのスケジューリングnice値を設定します。以下は現在のnice値が0のシェルで、実習用 sleep に10を加えて開始する例です。GNU版の nice を引数なしで実行すると現在値を確認できます。開始直後に同じシェルで ps を実行します。

nice -n 10 sleep 60 &
ps -o ni,comm -p $!

現在値0から開始した場合の出力例:

 NI COMMAND
 10 sleep

$!は直近のバックグラウンドプロセスのPIDです。一般的に数値が大きいほどCPUスケジューリングの優先度は低くなりますが、これはCPU使用量の上限を意味するわけではありません。既に実行中のプロセスの値を変更するにはreniceを使用してください。

主なオプションと形式

オプション・形式 説明
-n 値 既存のnice値を基準に新しいコマンドの調整値を指定します。
--adjustment=値 GNU実装の長いオプション形式です。
引数なしで実行 GNU実装で現在のnice値を出力します。

使用する際の注意点

nice値はCPUスケジューリングのヒントであり、実行時間を保証したり、メモリ量やディスク入出力の優先度を直接設定する機能ではありません。nice値を下げて優先度を上げる作業は、一般ユーザーには許可されない場合があります。大きな負荷の問題は、原因となるプロセスと資源の種類をまず確認してください。

よくある質問

nice -n 10は10だけ速くなりますか?

いいえ。値が大きくなると通常CPUの優先度が低くなる方向であり、処理速度が一定倍になることを意味するわけではありません。

公式ドキュメント

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