お兄ちゃん!
重たい処理を動かしたら
他の処理に影響が出たんだ!
キー入力にラグが出たりして
使いにくよ…
なんとかならないかな?
もちろん対応できるよ
今回はプロセスの
優先度を学んでいこう!
-20
~ 19
の範囲の
整数で指定するんだ
大きな値ほど優先度が低くなるよ
プロセスの優先度は
0
~ 39
の40段階なんだね
こっちも大きいほど
優先度が低くなるんだ
NICE値のデフォルトは
0
だよ
優先度で表すと 20
ということだね
プロセスのNICE値を変えることで
優先度を管理するんだ
nice
コマンドnice
はNICE値を設定して
コマンドを実行してくれるんだ
nice [-n NICE値] コマンド
NICE値が指定されなければ
10
が指定されるよこうやって優先度を下げてコマンドを実行できるんだね逆に優先度を上げることもできるのかな?
プロセスの優先度を上げるのは管理者の仕事なんだ一般ユーザは優先度を下げるしかできないよ
renice
コマンドプロセスの優先度は動かしたタイミングでしか設定できないのかな?動かしたけど重たくて優先度を下げたいという場合もあると思うんだけど…
そういう時は
renice
を使うよ動いているプロセスの優先度を変更するんだrenice [-n NICE値] PID...
NICE値の指定を 「現在の値から といった指定も可能だよ
+5
とすれば5
増加」プロセスが動いた後もNICE値を変更できるんだね!
では実際にNICE値の変更をしてみよう!
重たい作業を試したいんだけどどんなコマンドがいいかな?
yes > /dev/null
は負荷をかける目的で使われることがあるんだこのコマンドにNICE値を指定してバックグラウンド実行してみようnice -n 5 yes > /dev/null &
実行したよ!
[1] 4986
ジョブ番号とPID が表示されたね!
top
はプロセスのCPU やメモリの使用状況を表示してくれるんだtop
で確認してみようtop
うん、実行するね!
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
...
4986 midori 25 5 3740 1792 1792 R 99.0 0.0 2:11.35 yes
...
おお!
yes
が CPU を食ってるね!PR
と NI
という項目を見てみようこれが優先度は
25
でNICE値が 5
だね!指定どおりのNICE値だし優先度も定義どおりの値だね!top
は q
で終了するようん!元のシェルの画面に戻ったよ!
今度は
renice
でプロセスのNICE値を変更してみようrenice -n 19 4986
うん!
4986 (process ID) old priority 5, new priority 19
5
から 19
に変わった」これで
nice
と renice
を試せたねyes
プロセスは CPU を占有し続けるので確認が済んだら停止させようkill 4986
これで後片付けも完了だね!
今回はプロセスの優先度を表すNICE値とそれを変更する
nice
, renice
を学んだよ!NICE値からプロセスの優先度を管理するよ重たいけど急がないプロセスがあれば優先度を下げて他の作業に支障が出ないようにしよう!