「ディスクI/O性能はどのようにすればあげられるのか」を考えてみよう。
そんな本題を考える上でよさげな資料「Performance Comparison of IDE and SCSI Disks 」を見つけた。直接的には、IDEとSCSIを比較した物だが、パフォーマンスを考える上で着眼しなくては行かない点を示してくれる。
ちょー適当にまとめると
- ランダムアクセスを向上するには、Tagged Queuing が重要である。ディスク内部のスケジューラが寄与する部分である(つまりはディスクのファームの支配領域)。SCSIとIDEともに TCQ/NCQ として知られており、シーク性能に応じてこれを深くすると良い。但し、IDEのシーク性能が若干劣るのでTCQ/NCQの最大の深さ32では足りなそう。
- kernel側のスケジューラは重要。例ではFreeBSDなのでパットしない(デバドラ内にスケジューラがあるのかぁ、、、?)が、ランダムアクセスやインタリーブアクセス?が向上するらしい。多分、複数プロセスで発生するI/Oを捌くには重要な事らしい。
- ファイルシステムの種類によって同じ負荷時に発生するI/Oのパターンが変わるらしい。IDE/SCSIはその発生パターンに応じて性能の善し悪しがあるらしい。。。のかぁ?
- RAID0/RAID5は使った方がよろしい。HardwareRAID(隠れたSoftwareRAIDを含む)のI/Oスケジューラは馬鹿に出来ないらしい。出来ればベンダー提供のドライバを使った方が吉か!?
つまりは、TCQ/NCQとI/O elevatorとファイルシステムが重要で、ベンダー提供のRAID用ドライバはI/Oスケジューラの改良が入ってる場合があるので馬鹿にならないのかぁ、、、最後が微妙。
ディスクの並行実行性とスケジューリングが性能向上に重要といえば当たり前に聞こえる。検索に結構この問題に対する論文が引っかかってくる(1)。
- Linux では、SCSI では TCQ は設定出来るが、IDE (/dev/hd?になるデバドラ)にはTCQは入ってい無さそう。SATAのドライバ(libata??)からNCQが使えそうだが詳細は不明だし。
- Linuxの各種ファイルシステムの善し悪しはどうなんだろう。。。ext3 で良いじゃんと思うが。
- ベンダー提供RAID用ドライバのI/Oスケジューラの向上はどれくらい入っていたのかも気になる。
- Linux, Solaris, WindowsNT, FreeBSD/NetBSD 間で I/O elevator を比較をしてみたい気がする。
さて、どれやろうかなぁ。
0 件のコメント:
コメントを投稿