【ナイス】

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

💡 プロセスに「譲り合いの精神」を設定するコマンド
📌 このページのポイント
nice / renice — プロセスの優先度制御 nice 値(-20 〜 +19) -20 最高優先 0 デフォルト +19 最低優先 A B C A: DB サーバー nice -n -10 mysqld CPU を優先的に割当 B: Web サーバー nice 0(デフォルト) 通常の優先度 C: バッチ処理 nice -n 15 backup.sh 他に譲る(謙虚) nice -n 10 command(起動時) renice -n 5 -p PID(実行中) 値が小さいほど「強気」、大きいほど「譲り合い(nice)」
nice 値によるプロセス優先度のイメージ
ひよこ ひよこ

重いバッチ処理を動かしたいんだけど、他のサービスに影響しないか心配…

ペンギン先生 ペンギン先生

nice 19 /path/to/heavy-script.sh のように実行すれば、そのプロセスの優先度が最低になって、他のサービスにCPUを優先的に譲るようになるよ。

ひよこ ひよこ

数字が大きいほど優先度が低いってちょっとわかりにくいね

ペンギン先生 ペンギン先生

nice値は「他のプロセスへの親切度」と考えるといいよ。19は「めっちゃ親切(自分は後回し)」、-20は「全然親切じゃない(自分が最優先)」。プラスは一般ユーザーでも設定できるけど、マイナス値はroot権限が必要だよ。

ひよこ ひよこ

すでに動いてるプロセスの優先度も変えられる?

ペンギン先生 ペンギン先生

reniceを使えばOK。renice 15 -p 1234 でPID 1234のプロセスのnice値を15に変更できるよ。topコマンドのNI列でnice値を確認しながら調整するのが定番だね。

ひよこ ひよこ

niceだけでリソース制御は十分なの?

ペンギン先生 ペンギン先生

niceはあくまでCPUの「相対的な」優先度を変えるだけで、CPUの使用割合を厳密に制限するものではないんだ。厳密にリソースを制限したい場合はcgroupsを使う方がいいよ。ただ、「バックアップやログ解析は低優先度で回す」くらいの用途ならniceで十分。シンプルで使いやすいのが魅力だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「nice/renice」って出てきたら「プロセスCPU優先度を調整するコマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「nice(親切な)」 = 他のプロセスに対して「親切」にする
💬 nice値が高いほど他のプロセスにCPUを「譲る(親切にする)」という意味だよ
← 用語集にもどる