CentOS7でプログラムの優先度を変更するやり方メモ

サーバー運用において、あるプログラムの優先度を下げて(上げて)実行させたいという時があります。そんな時に使うコマンドのメモ書きです。

もくじ

  • プログラムの優先度について
  • プログラム起動時に優先度を予めセットして実行
  • すでに起動済みのプログラムの優先度を後から変える

プログラムの優先度について

CentOSで実行されているプログラム(プロセス)には優先度があります。優先度が高ければ高いほど沢山のCPU時間を割り当てられます。優先度を設定するときは「nice値」を変更します。nice値は -20 ~ 19 までの整数を取ります。実行中のプログラムのnice値は以下の様なコマンドで確認できます。 [VIM] #コマンド例1 top #こんな感じで表示される #Qキーを押せばプロンプトに復帰できる top – 13:43:55 up 1 day, 23:00, 1 user, load average: 0.37, 0.12, 0.07 Tasks: 425 total, 1 running, 424 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 2.0 sy, 6.9 ni, 57.4 id, 33.3 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1868692 total, 70040 free, 957556 used, 841096 buff/cache KiB Swap: 2097148 total, 1746788 free, 350360 used. 743904 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4324 hoge 30 10 905328 311112 61292 D 25.0 16.6 0:03.64 bitcoind 1793 hoge 20 0 1628492 583504 3484 D 2.3 31.2 46:23.46 bitcoin-shutoff 138 root 20 0 0 0 0 S 0.7 0.0 1:34.35 rcuos/0 291 root 20 0 0 0 0 S 0.7 0.0 2:02.70 kswapd0 137 root 20 0 0 0 0 S 0.3 0.0 1:44.85 rcu_sched 947 root 20 0 0 0 0 S 0.3 0.0 0:27.56 xfsaild/dm-2 4334 hoge 20 0 157952 2552 1560 R 0.3 0.1 0:00.03 top 1 root 20 0 191360 1960 552 S 0.0 0.1 0:04.21 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:01.14 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.13 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh [/VIM] [VIM] #コマンド例2 ps -p (プロセスID) -l #こんな感じで表示される F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 1 S 1000 4324 1 2 90 10 – 347500 hrtime ? 00:00:10 bitcoind [/VIM] いずれのコマンドでも「NI」のところに表示されている値がnice値になります(この例ではbitcoindのnice値が10になっています)。プロセスIDは「PID」のところに表示されます。

nice値は小さければ小さいほど優先度が高く(つまりnice値が-20のプロセスが一番優先度が高い)、大きければ大きいほど優先度が低くなります(同じくnice値が19のプロセスが一番優先度が低い)。デフォルトのnice値は基本的に0です。なお、nice値を増やす(優先度を下げる)ことは一般ユーザーの権限でもできますが、nice値を減らす(優先度を上げる)場合はroot権限が必要になるので注意です。

プログラム起動時に優先度を予めセットして実行

プログラム起動時に優先度をセットする場合にはniceコマンドを使います。 [VIM] nice -n (nice値) 実行したいコマンド #例1 nice -n 10 bitcoind -daemon #例2 sudo nice -n -5 yum update [/VIM]

すでに起動済みのプログラムの優先度を後から変える

起動済みのプログラムの優先度を変えたい場合はreniceコマンドを使います。 [VIM] renice -n (nice値) (オプション) #例1(使用したオプション -p (プロセスID)) #プロセスIDは事前に調べること renice -n 11 -p 4324 #例2(使用したオプション -u (ユーザー名)) #該当ユーザーが起動したプロセス全ての優先度を一斉に変更する事が可能 renice -n 5 -u hoge #例3(使用したオプション -u (ユーザー名)) #優先度を上げる場合はsudoなどを用いてroot権限を得る必要がある sudo renice -n -2 -u hoge [/VIM] ユーザーの優先度を変更することで、該当ユーザーが実行しているプログラム全ての優先度を一斉に変更することもできます。

参考リンク

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: