nice値を変える November 30, 2006
Rating: 3.5

nice, reniceというコマンドはけっこう知られていないかもしれない。ジョブの相対的な優先度を変更するコマンド。

Influence scheduling priority with nice and renice(linux.com)を読んで、詳細な挙動を知った。

ユニークなのはnice値(niceness value)という指標を使っている点。最初に知ったときは笑った。 nice値は「どれくらいナイスか」を示す値なので、直感に反して数字が大きいほど実行優先度は下がる。 譲りまくりな人ほどナイスである。

ヘビーなジョブを実行するときにniceやreniceでnice値を上げておくとナイスだ。

cronが走ったりすると重くなるので、あわててreniceで強制的によりナイスにさせたりすることがあるのだが、冒頭の記事を読んでこれは意味ないことを知った。 たしかにやってみて挙動が変わっていない手応えがあった。どうやらreniceはCPU割り当てのみを変更するもので、I/Oはそのままらしい。

cronはインデックスのはりかえが中心なので、占有しまくりなのはむしろHDDアクセスの方。 いまどきCPUが貼りつくこともあまり無さそうなので、どちらかというとディスクI/O版のreniceが欲しい。

調べてみると、ioniceというコマンドが存在しているらしい(atmarkit)。CFQというI/Oスケジューラとともに使うもの。

ubuntuには標準では入っていないようで、schedutilsをインストールすると入ることを知った。 cronのI/O優先度を始めから下げておくと良さそうだ。

なお、I/Oスケジューラ自体の変更手順はLinuxファイルI/Oチューニング(ほえほえ)で紹介されている通り。

2007.7.19追記 Why aren’t you using ionice yet???(Fried CPU)という記事がdel.icio.usで人気になっていた。 シェル変数$$を活用して、シェルごとI/Oのプライオリティを変えるTipsが紹介されている。

Comments are closed.