PIO転送の遅さは異常
どうにも遅くて仕方ないサーバーがあったのだが、原因はディスクの速度が致命的に遅い事だと判った。
# hdparm -t /dev/hda1 /dev/hda1:(ちょっと古いがまともなディスク) Timing buffered disk reads: 64 MB in 5.58 seconds = 11.47 MB/sec # # hdparm -t /dev/hdb1 /dev/hdb1:(1.4って… Timing buffered disk reads: 64 MB in 44.87 seconds = 1.43 MB/sec
これはひどいね(苦笑)1.4 MB/sって10BaseかCDROMドライブかよ。
hdparmを確認した所、DiskがPIO転送におっこってしまっていたかららしい。
# hdparm /dev/hdb /dev/hdb: multcount = 16 (on) I/O support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 0 (off) (PIO転送になっちゃってる… keepsettings = 0 (off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on) geometry = 30401/255/63, sectors = 488397168, start = 0 busstate = 1 (on) # hdparm -d1 /dev/hdb (DMAを有効に # hdparm /dev/hdb /dev/hdb: multcount = 16 (on) I/O support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) (DMAが有効になった keepsettings = 0 (off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on) geometry = 30401/255/63, sectors = 488397168, start = 0 busstate = 1 (on) # hdparm -t /dev/hdb1 /dev/hdb1: Timing buffered disk reads: 64 MB in 1.35 seconds = 47.41 MB/sec
無事直った。
一応原因究明のためにLoadは見ていて、ミョーにSystemが上がっていたは知っていた。古いサーバーだったので*1てっきりメモリスワップ処理やディスクキャッシュ処理だと思っていたのだが…、PIOの処理だったとは。
うーん、基本的な事はちゃんとしらべなきゃダメですね。
つかHDDが1台しかついてないとおもっていて、S.M.A.R.Tまでちゃんと確認したのに気付かなかったよ…。
ちなみに、SMARTの出力もちょっと微妙なので、PIO転送に落ちた理由はちゃんとあるんだろうな、と思った。
# /usr/sbin/smartctl -a /dev/hdb Device: ST3250824A Supports ATA Version 7 Drive supports S.M.A.R.T. and is enabled Check S.M.A.R.T. Passed. General Smart Values: Off-line data collection status: (0x82) Offline data collection activity completed without error Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run Total time to complete off-line data collection: ( 430) Seconds Offline data collection Capabilities: (0x5b)SMART EXECUTE OFF-LINE IMMEDIATE Automatic timer ON/OFF support Suspend Offline Collection upon new command Offline surface scan supported Self-test supported Smart Capablilities: (0x0003) Saves SMART data before entering power-saving mode Supports SMART auto save timer Error logging capability: (0x01) Error logging supported Short self-test routine recommended polling time: ( 1) Minutes Extended self-test routine recommended polling time: ( 100) Minutes Vendor Specific SMART Attributes with Thresholds: Revision Number: 10 Attribute Flag Value Worst Threshold Raw Value ( 1)Raw Read Error Rate 0x000f 117 086 006 132190999 ( 3)Spin Up Time 0x0003 098 098 000 0 ( 4)Start Stop Count 0x0032 100 100 020 9 ( 5)Reallocated Sector Ct 0x0033 100 100 036 0 ( 7)Seek Error Rate 0x000f 053 045 030 61977077 ( 9)Power On Hours 0x0032 097 097 000 2731 ( 10)Spin Retry Count 0x0013 100 100 097 0 ( 12)Power Cycle Count 0x0032 100 100 020 20 (187)Unknown Attribute 0x0032 100 100 000 0 (189)Unknown Attribute 0x003a 100 100 000 0 (190)Unknown Attribute 0x0022 060 051 045 824705064 (194)Temperature 0x0022 040 049 000 40 (195)Hardware ECC Recovered 0x001a 067 052 000 88921148 (197)Current Pending Sector 0x0012 100 100 000 0 (198)Offline Uncorrectable 0x0010 100 100 000 0 (199)UDMA CRC Error Count 0x003e 200 200 000 0 (200)Unknown Attribute 0x0000 100 253 000 0 (202)Unknown Attribute 0x0032 100 253 000 0 SMART Error Log: SMART Error Logging Version: 1 No Errors Logged
ケーブルかな?それともドライブかな?SEEKエラー 多いし、ドライブだろうな。
まだ閾値を超えている物はないけれど、一応近日中にはHDD交換しなきゃな。