-
entry001328
comments
諸事情で HP ML115 を 13,750 円で購入し、2GB のノー・ブランド DIMM DDR2 SDRAM 二枚を 7,760 円で購入して突っ込み、CentOS5.2 をインストールし、MySQL で大きめな統計処理をぐるぐると回しておりました。 が、あまりにも遅い。 同じ処理を RAM 512MB の Dell SC430 でも実行していたのだけれど、その数倍の時間をかけても完了しません。 おかしい・・・。
vmstat をみても、block in / block out がさして多いわけでもなく、CPU usage が 100% 近辺をさまよっています。 ディスクを使わず、メモリ上で CPU がブン回っている理想的な状態です。 が、しばらく見ていると、たまに cpu wait が跳ね上がります。 確かに、データベースを使っていて disk I/O を 0 にするのは厳しいので、これは仕方ない。 が、しかし、よくよく見ると I/O wait が 100% 近くになったまましばらくまたされます。 SC430 はもう少し頻繁に Disk I/O が発生していますが、ML115 ほど I/O wait が跳ね上がったままの状態が続かないぞ・・・。 確かに CPU 性能には差がありますが(AMD Athlon 64 3500+ / Intel Pentium D 2.8GHz)、それは I/O wait 時間に関係がありません。 となると、ディスク性能があやしくなってきます。
まずは dbench を実行してみました。
以下の手順でコンパイルし、
$ wget http://samba.org/ftp/tridge/dbench/dbench-4.0.tar.gz $ tar zxf dbench-4.0.tar.gz $ cd dbench-4.0 $ ./autogen.sh $ ./configure $ make
実行。
ML115 $ ./dbench -c client.txt 1 ... 1 30795 8.61 MB/sec warmup 21 sec latency 201.968 ms 1 31612 8.50 MB/sec warmup 22 sec latency 500.014 ms 1 32777 8.41 MB/sec warmup 23 sec latency 810.937 ms ...
SC430 $ ./dbench -c client.txt 1 ... 1 257768 53.93 MB/sec warmup 26 sec latency 21.852 ms 1 272487 54.93 MB/sec warmup 27 sec latency 21.601 ms 1 287121 55.80 MB/sec warmup 28 sec latency 21.750 ms ...
桁違いです・・・。 スループットもレイテンシーも文字通り桁が違います。 参った・・・。
続いて hdparm を走らせてみます。
ML115 $ sudo hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 222 MB in 3.00 seconds = 73.93 MB/sec
SC430 $ sudo hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 216 MB in 3.02 seconds = 71.61 MB/sec
あれ? 殆ど同じ数値です。 何度か取り直しても殆ど同じ。 あれれ・・・うーむ・・・
ここではたと気付いたのですが、hdparm は "disk reads" だけを測定しているんですね。 一方の dbench はもちろん read / write 双方。 これは怪しい。 そこで、ディスクの情報を確認してみると、
ML115 $ sudo hdparm -i /dev/sda /dev/sda: Model=FB080C4080 , FwRev= HPF0, SerialNo=6RW2A54G Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=?16? CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 AdvancedPM=no WriteCache=disabled Drive conforms to: unknown: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7 * signifies the current active modeSC430 $ sudo hdparm -i /dev/sda /dev/sda: Model=ST3320620AS , FwRev=3.AAD , SerialNo= 3QF0KHCA Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=?8? CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 AdvancedPM=no WriteCache=enabled Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7 * signifies the current active modeなんと ML115 は Write Cache が disabled です! こいつか・・・。 この設定を変えるには以下のようにします。
$ sudo hdparm -W1 /dev/sda
これで WriteCache enabled になります。 dbench の結果も改善されました。
ML115 $ ./dbench -c client.txt 1 ... 1 290707 63.28 MB/sec warmup 25 sec latency 48.369 ms 1 302699 63.30 MB/sec warmup 26 sec latency 48.974 ms 1 314756 63.30 MB/sec warmup 27 sec latency 44.975 ms ...
めでたい!
と、さらっと書いていますが、ここまで 12h 近くが経過してしまいました。 ふぅ、大変だった。 さて、計算のやり直しだ。
MTEntryMore