プロセス実行優先順位の変更~nice・reniceコマンド~
本記事の対象者
LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。
今回の内容
今回は、プロセス実行の優先順位の変更について解説します。
ナイス値は頻出ですので、必ず抑えておきましょう。
プロセス実行優先順位の確認
プロセスには実行優先度があります。優先度が高いほど優先的に処理されることになります。
優先度を確認するには、「ps -l」コマンド、あるいは「top」コマンドを使用します。
[user@localhost ~]# ps axl F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 167800 4964 - Ss ? 0:01 /sbin/i 1 0 2 0 20 0 0 0 - S ? 0:00 [kthrea 1 0 3 2 0 -20 0 0 - I< ? 0:00 [rcu_gp 1 0 4 2 0 -20 0 0 - I< ? 0:00 [rcu_pa 1 0 5 2 20 0 0 0 - I ? 0:00 [kworke 1 0 6 2 0 -20 0 0 - I< ? 0:00 [kworke 1 0 7 2 20 0 0 0 - I ? 0:00 [kworke 1 0 8 2 20 0 0 0 - I ? 0:00 [kworke (以下省略) [user@localhost ~]# top Tasks: 188 total, 1 running, 186 sleeping, 1 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 978.8 total, 62.7 free, 542.4 used, 373.7 buff/cache MiB Swap: 448.5 total, 36.2 free, 412.3 used. 279.2 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_ 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace 12 root 20 0 0 0 0 S 0.0 0.0 0:00.35 ksoftirqd/0 13 root 20 0 0 0 0 I 0.0 0.0 0:01.23 rcu_sched 14 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 15 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0 16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs (以下省略)
「ps -l」の場合は、「PRI」の列が優先度を表しています。「top」の場合は、「PR」の列が優先度を表しています。
ここでそれぞれの優先度表記の右の列「NI」に注目してください。ここには「ナイス値」が表記されています。
ナイス値とは、優先度の操作をするために指定する値です。ここを設定することにより、プロセスの優先度をユーザー側で変更することができます。
ナイス値は「-20~19」まであり、ナイス値が低いほど優先順位が高くなります。
デフォルトのナイス値は「0」です。
nice
niceコマンドは、プロセス起動時にナイス値を設定することができます。
また、ナイス値を下げる(優先度を上げる)ことができるのはrootユーザーだけです。
一般ユーザは、ナイス値を上げる(優先度を下げる)ことしかできません。
nice | |
---|---|
意味 | プロセス起動時に優先度を設定する。 |
書式 | nice [オプション] コマンド |
niceコマンドのオプションで抑えておくべきものは以下です。
オプション | 説明 |
---|---|
-<値> | 指定した値分増加させたナイス値でプロセスを起動する。 |
-n <値> | 指定した値でナイス値を設定し、プロセスを実行する。 |
[root@localhost ~]# nice vi & [1] 1376 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28886 do_wai pts/0 00:00:00 bash 0 T 0 1376 1361 0 90 10 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1377 1361 0 80 0 - 38331 - pts/0 00:00:00 ps
ナイス値を指定せずに使用すると、10だけナイス値が増加します。
[root@localhost ~]# nice -n -10 vi & [2] 1397 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28922 do_wai pts/0 00:00:00 bash 0 T 0 1376 1361 0 90 10 - 31044 do_sig pts/0 00:00:00 vi 4 T 0 1397 1361 0 70 -10 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1398 1361 0 80 0 - 38331 - pts/0 00:00:00 ps
[root@localhost ~]# nice -10 vi & [3] 1399 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28922 do_wai pts/0 00:00:00 bash 0 T 0 1376 1361 0 90 10 - 31044 do_sig pts/0 00:00:00 vi 4 T 0 1397 1361 0 70 -10 - 31044 do_sig pts/0 00:00:00 vi 0 T 0 1399 1361 0 90 10 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1400 1361 0 80 0 - 38331 - pts/0 00:00:00 ps
PID「1399」が実行したプロセスですが、ナイス値は「10」になっています。
「-10」という指定は、「nice -n 10」と同じです。「ナイス値を-10増加」させたければ「nice ––10」と打たなければいけません。
renice
「renice」コマンドは、実行中プロセスのナイス値を変更できます。renice | |
---|---|
意味 | 実行中のプロセスのナイス値を変更する。 |
書式 | renice [オプション] コマンド |
reniceコマンドのオプションで抑えておくべきものは以下です。
オプション | 説明 |
---|---|
<値> | 指定したナイス値を設定する。 |
-n <値> | 指定したナイス値を設定する。 |
-p プロセスID | 対象のプロセスIDを指定する。 |
[root@localhost ~]# nice -n 5 vi & [1] 1539 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28962 do_wai pts/0 00:00:00 bash 0 T 0 1539 1361 0 85 5 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1540 1361 0 80 0 - 38331 - pts/0 00:00:00 ps [1]+ 停止 nice -n 5 vi [root@localhost ~]# renice 15 -p 1539 1539 (process ID) old priority 5, new priority 15 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28962 do_wai pts/0 00:00:00 bash 0 T 0 1539 1361 0 95 15 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1542 1361 0 80 0 - 38331 - pts/0 00:00:00 ps
[root@localhost ~]# renice -15 -p 1539 1539 (process ID) old priority 15, new priority -15 [root@localhost ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1361 1357 0 80 0 - 28962 do_wai pts/0 00:00:00 bash 0 T 0 1539 1361 0 65 -15 - 31044 do_sig pts/0 00:00:00 vi 0 R 0 1545 1361 0 80 0 - 38331 - pts/0 00:00:00 ps
reniceコマンドで「-n」を指定しない場合、ナイス値の前にオプションの「ハイフン」は必要ありません。
よって、niceコマンドの時のように「–15」と打つ必要はありません。
まとめ
今回は、プロセスの優先度の変更について解説しました。
最後に確認問題で今回学習した内容を是非確かめてください。
確認問題
niceコマンドを使用してプロセスを開始する際、デフォルトのniceレベルはどれですか?
A) 10
B) 0
C) -10
D) 19