どうもLinuxは,HDDのファイルの読み書きが遅いような気がする。
なんか大きなファイルアクセスが有る時なんか,他のプロセスは待たされているような気がする。もし待たされるようなことになっているんであれば,待たせないようにするってことで,こういうことの調整はI/Oサブシステムのスケジューラーってのが管理しているみたいだ。
HDDは,データを読み書きするためにヘッドを正しい位置に素早く移動させ,読み書きする場所を回ってくるのを待つ必要がある。これはRAM等に比べ時間が何倍もかかってしまう。その結果,HDDアクセスがシステム速度のボトルネックになる可能性があり,このボトルネックの影響を最小限に抑えるためにスケジュール管理をしているんだろう。
スケジューラアルゴリズムの役割は,エレベータに例えるとわかりやすい。
エレベータが忙しい時,1階に到着すると,多くの人が乗ってきて行き先を好き勝手に押す。この時これを押された順番に止まって行っては大変なことになる。仮にボタンが押された順番通りに動くようにすると,最初に3階に行ってから10階に行き,その後2階に行ってからまた4階に行くなんてのは,利用者は怒ってしまう。それよりも,2階,3階,4階,10階という順番に停止する方が効率的だからね。
LinuxのI/Oスケジューラーもこれに似たようなことをしているんだろうけど,最近の高層マンションの最上階に住んでいるような人は,1階から自分の部屋に行くたびに何度も止まったりしていらいらしちゃうと思う。こんな理由から,低層階には一切止まらず上層階に直行するエレベータが良く高層ビルには設置されている。上層階に住んでいる人にはメリットだが,低層階に住んでいる人はエレベータが減ってしまう。
まあ,結局全て対応できるものは無いということかも・・・
title Fedora (2.6.32.23-170.fc12.i686.PAE) root (hd0,0) kernel /vmlinuz-2.6.32.23-170.fc12.i686.PAE ro root=/dev/mapper/vg_yueno-lv_root LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEY TABLE=jp106 rhgb elevator=スケジューラーのタイプ quiet initrd /initramfs-2.6.32.23-170.fc12.i686.PAE.img
# cat /sys/block/sda/queue/scheduler
# echo deadline > /sys/block/sdb/queue/scheduler
新しくコメントをつける