ブログ

プロセスの優先度を変更する方法

at_shiita.ishigaki
2022年1月31日 9時23分

プロセス実行時に優先度を変更するにはniceコマンドを使用します。
プロセスの優先度であるnice値は-20~19に指定することができ、値が小さいほど優先度が高くなります。
nice値を確認するには、/proc/プロセスID/stat ファイルから確認する方法や、psコマンド等を使用して確認する方法があります。
sleepコマンドを実行した時のnice値を表示する方法を以下に示します。

[armadillo ~]# sleep 100&
[1] 12925
/proc/プロセスID/stat から確認する方法(※空白区切りで19番目の値がnice値となります)
[armadillo ~]# cat /proc/12925/stat | cut -d " " -f 19
0
psコマンドから確認する方法(※NIの値がnice値となります)
[armadillo ~]# ps -l 12925
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY        TIME CMD
0 S     0 12925  848  0  80   0 -   340 hrtime ttymxc2    0:00 sleep 100

niceコマンドを使用せずにプロセスを実行した場合nice値は0となり、niceコマンドを使用した場合nice値は10となります。
※ここでは例として、sleep 100のコマンドを実行した時のnice値を変更して確認します。

[armadillo ~]# sleep 100&
[1] 1904
[armadillo ~]# cat /proc/1904/stat | cut -d " " -f 19
0
[armadillo ~]# nice sleep 100&
[2] 1287
[armadillo ~]# cat /proc/1287/stat | cut -d " " -f 19
10

nice値を指定する場合は-nオプションを使用します。
※ここでは例として、nice値を19に指定します。

[armadillo ~]# nice -n 19 sleep 100&
[1] 6126
[armadillo ~]# cat /proc/6126/stat | cut -d " " -f 19
19

実行中のプロセスのnice値を変更するにはreniceコマンドを使用します。
※ここでは例として、実行開始時のnice値を19に設定し、実行後にnice値を-20に設定します。

[armadillo ~]# nice -n 19 sleep 100&
[5] 7086
[armadillo ~]# cat /proc/7086/stat | cut -d " " -f 19
19
[armadillo ~]# renice -20 -p 7086
7086 (process ID) old priority 19, new priority -20
[armadillo ~]# cat /proc/7086/stat | cut -d " " -f 19
-20