ionice 

うるめねっと技研にて、ioniceを知った。I/Oスケジューラに対してプロセスの優先度を指定するというもの。裏で数GBytesのgzip圧縮を流しながら、Firefoxを起動したいと思ったときにFirefoxの起動を優先させることができるようになる。(大きなバイナリのアプリケーション起動は、CPUというよりはディスクI/Oがネックになっていると思う。まぁ、ioniceを実行する時間でFirefoxが起動したりgzip圧縮が終わっていたりしそうだけどね)
早速手元のFedoraCore5を見たところインストールされている模様。試したところ、実行はroot権限が必要な感じ。ふが日記に書かれているように、realtime classだけroot限定にしてくれれば一般ユーザで実行させても良いと思うのだけど。ちょいと不便。それはそれとして、

ionice -c 3 rm -rf tmp/沢山

なんてやればいいわけ。idle classを指定して大量ファイルの削除をさせてアプリケーション起動をさせてみたら実際ちゃんと後回しにしてやってくれている模様。
どうやらI/Oスケジューラでの優先度低下は、niceで変更すると一緒に変更してもらえるらしい。するってぇと何かい? 色々調べたのはあんまり意味ないじゃん。あれこれ考えずにnice/reniceしておけば大体問題なく実現できるってぇことだよな。
ディスクアクセスは大量に行うが優先度を下げて良く、かつCPUの優先度を下げたくない(ioniceが役立つ)場面はどんなのがあるんだろう? 何かあるのか? 大量のディスクアクセスを行いながら、割込みがあったら短時間で答えを返してやらないといけない、とか? しかもその処理のためにディスクアクセスが必要な場合には優先度が低い。どんな処理だ?
というか、Linux Kernel 2.6のI/O elevator CFQによって、かなりI/Oスケジューラが改善された、という結論で良さそうだ。それはそれで良いことだ。後は一般ユーザ向けにioniceを改善してもらえばそれで良いはずだ。

実際に試した所、niceでプロセスの優先度を下げた際には効果が見られなかった。niceによるプロセス優先度減少がioniceによるディスクI/O優先度減少も伴うというのは(少なくとも私の環境では)ないようだ。
しかしながらrootでioniceを実行した際には十分な効果が見られた。優先度を-c3(アイドル時のみ実行)として大量ファイルのコピー(cp -vrf SRCDIR DSTDIR)を行った所、他のディスクアクセス要求(ls -alF など)があるたびにファイルコピーが中断されているのを見ることができた。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://haginov.blog35.fc2.com/tb.php/68-22caa62d