【ナイス】

nice/renice(プロセス優先度) とは?

最終更新:
💡 CPUの譲り方を変える。使用量の上限とは別

LinuxなどでCPUの相対的なスケジューリングに影響するnice値を調整するコマンド。niceは起動時、reniceは実行中の対象に使います。CPU使用率の上限や、ほかのサービスへの影響の解消を保証するものではありません。

📌 このページのポイント
nice/renice:CPUの相対的な扱いを調整Linux:小さいほど優先されやすい−20019優先されやすい譲りやすいGNU nice:nice -n 10 command起動時に元のnice値へ10を加えるrenice --priority 15 --pid 1234util-linux:実行中の対象を15にする例CPU使用率の固定上限やI/Oの制限とは別実装・対象PID・変更権限を確認
矢印は値が増える方向で、実行順ではありません。通常のCPUスケジューリングに影響し、優先度を上げる操作には権限等の条件があります。
ひよこ ひよこ
重い処理をほかにCPUを譲りながら動かせる?
ペンギン先生 ペンギン先生
GNU niceならnice -n 10 commandのように起動できるよ。現在のnice値に10を加える指定で、値が大きくなるほど通常のCPUの取り合いでは譲る側になる。実際に実行するコマンドへ置き換えて使うんだ。
ひよこ ひよこ
10と指定するとnice値が必ず10?
ペンギン先生 ペンギン先生
加算だから、元の値が0なら10になる。元の値も確認しよう。Linuxの範囲は-20から19で、値はCPUの相対的な扱いに関わる。どのポリシーでも最高・最低の優先度になる数字ではないんだ。
ひよこ ひよこ
実行中の処理にはどうする?
ペンギン先生 ペンギン先生
util-linuxならrenice --priority 15 --pid 1234でPID 1234のnice値を15にする。これは対象例なので実際のPIDを確認してね。niceの加算とreniceの設定値の違い、OSやコマンドの実装も確認するんだ。
ひよこ ひよこ
マイナス値だけが管理者用?
ペンギン先生 ペンギン先生
優先度を上げる、つまりnice値を下げる操作には権限などの条件があるよ。19から10に戻す場合も優先度を上げる操作になる。一般ユーザーは通常、自分の対象のnice値を大きくできるけど、戻せるとは限らないんだ。
ひよこ ひよこ
niceだけでサービスへの影響をなくせる?
ペンギン先生 ペンギン先生
CPUの上限を決める機能ではなく、メモリやディスクの競合も残る。グループのスケジューリングなどにも影響されるから、変更前後を確認しよう。使用量を制限したい場合はcgroupsなど、目的に合う機能を別に考えるんだ。
もっと詳しく知りたい人へ

renice -nはnice -nと同じ加算?

util-linuxのrenice -nは通常は絶対値を設定しますが、POSIXLY_CORRECTがあると相対値になります。--priorityは絶対値、--relativeは相対値を明示できます。移植する場合は対象の実装のマニュアルを確認してください。Linuxではnice値はスレッドごとの属性でもあります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「nice / renice」って出てきたら「CPUの相対的な処理優先度を調整するコマンド」と思えばだいたいOK!CPU使用率を固定の上限に抑える命令とは違うよ。
📖 おまけ:英語の意味
「nice」 = 親切な・穏やかな
💬 値を大きくすると通常のCPUの取り合いでほかに譲る方向になる、という覚え方ができます。reniceは実行中の対象のnice値を変更するコマンドです。

参考資料

← 用語集にもどる