Linuxのnice値は、プロセスの優先度を調整するためのパラメータで、-20(最も高い優先度)から19(最も低い優先度)の範囲で設定します。デフォルト値は 0 です。
| 項目 | 数値 | 説明 |
| 最高優先度 | -20 | 最も「ナイスじゃない(傲慢な)」状態。CPUを優先的に占有します。 |
| デフォルト | 0 | 通常のプロセスが起動した時の標準値です。 |
| 最低優先度 | 19 | 最も「ナイスな(謙虚な)」状態。他のプロセスにCPUを譲ります。 |
📝 基本的な使い方
niceコマンド:新しいプログラムを起動する時に優先度を設定します。- 例:低い優先度(高いnice値)で
./myappを実行する場合
nice -n 10 ./myapp- 例:低い優先度(高いnice値)で
reniceコマンド:既に実行中のプロセスの優先度を変更します。- 例:PID 1234のプロセスの優先度を下げる(nice値を上げる)場合
bash renice 10 -p 1234
- 例:PID 1234のプロセスの優先度を下げる(nice値を上げる)場合
💡 重要な概念と動作原理
- 「親切」の意味:
nice値が高いほど、プロセスは他のプロセスに対して「親切」(nice)になります。つまり、自らCPUリソースを譲るため、優先度は低くなります。逆にnice値が低い(特にマイナスの値)ほど、プロセスは「親切ではない」(not nice)状態となり、より多くのCPU時間を確保しようとするため、優先度が高くなります。 - PRIとNIの関係:システム上で表示される最終的なプロセス優先度(PRI)は、おおよそ次の式で決まります:
PRI(最終) = PRI(デフォルト) + NI(nice値)
Linuxでは、このデフォルトのPRI値は通常80または60で、niceで調整するのはNIの部分です。 - 権限の制限:rootユーザーのみが
nice値を下げる(つまりプロセス優先度を上げる、マイナスの値に設定する)ことができます。一般ユーザーは自分のプロセスのnice値を上げる(優先度を下げる)ことしかできません。
✨ 実際の活用シーン
- バックグラウンド処理:ログ処理やデータバックアップなど、時間はかかるが重要度の低いバックグラウンド処理では、
nice値を高く(例:19)設定します。これにより、システムがアイドル状態の時だけ実行され、フォアグラウンドの操作に影響を与えません。 - 重要なサービス:データベースやWebサーバーなど、重要なサービスでは
nice値を低く(例:-5)設定します。これにより、CPUリソースを優先的に取得し、リクエストに迅速に応答できます。
💻 nice値の確認方法
以下のコマンドでプロセスのnice値を確認できます(通常、NI列に表示されます):
# 現在のターミナルで起動したプロセスを確認
top
# またはpsコマンドを使用
ps -l
🤔 より深い理解のために
nice値は主にCPU時間の競争に影響を与えます。I/Oやメモリ帯域への間接的な影響もありますが、計算集約型のタスクではnice値の調整効果が最も顕著に現れます。また、Linuxのスケジューラは非常に賢く、プロセスの対話性に応じて動的に優先度を調整し、デスクトップ環境の応答性を確保しています。

コメント