Tips記事
» 2000年10月11日 00時00分 UPDATE

ハードディスクのアクセスが遅いような気がする

[木田佳克,ITmedia]

 標準インストールのままでLinuxを利用していると,たとえUltraATA66のハードディスクドライブを使用していても,DMA転送さえオンになっていない可能性がある。このような可能性がある場合には,次のように入力してみよう。

$ hdparm -t /dev/hda
/dev/hda:
setting using_dma to 0 (off)
using_dma=0 (off)
Timing buffered disk reads:64 MB in 24.20 seconds =2.64 MB/sec

 最近のハードディスクを使用しているにも関わらず,上記のような20秒を超える結果が出たら間違いなくハードディスクの性能が生かしきれていない。DMA転送をオンにすれば明らかに転送レートが上がるだろう。次のように指定すればDMA転送を有効にすることが可能だ。

$ hdparm -t -d 1 /dev/hda
/dev/hda:
using_dma=1 (on)
Timing buffered disk reads:64 MB in6.46 seconds =9.91 MB/sec

■代表的なオプション指定
DMA転送オン hdparm -d1 /dev/hdx
DMA転送オフ hdparm -d0 /dev/hdx
16ビットI/Oモード hdparm -c0 /dev/hdx
32ビットI/Oモード hdparm -c1 /dev/hdx

 さらに,「-d 1」と併用して「-X34」オプションを指定するとDMAモード2をオンにすることもできる。「-X66」オプションを指定すると,UltraDMAモード2をオンにすることも可能だ。

 ただし,「-X」オプションは未対応のドライブで試すとドライブが壊れることもあるため,気軽には行わないほうがよいだろう。十分に注意したい。

# hdparm -X66 /dev/hda

 以上すべての設定は,再起動を行うとクリアされてしまう。カーネルの再構築を行う手段もあるが,/etc/rc.d/rc.localに追加しておくのが手軽だろう。

# vi /etc/rc.d/rc.local
/sbin/hdparm -t -d 1 /dev/hda  ←追加

■hdparmオプションと使い方
オプション
内       容
-A
先読みを行う (「-A 0」:無効、「-A 1」:有効)
-a
先読みセクタ数のチェック
-c
32ビットI/O制御 (「-b 0」:16ビット、「-b 1」:32ビット)
-d
DMA転送モード (「-c 0」:無効、「-c 1」:有効)
-f
バッファキャッシュのフラッシュを行う
-g
ディスクジオメトリの表示をする
-i
ディスク情報の表示をする
-m
マルチセクタI/Oサポート
-p
PIO転送モード制御 (「-p 0」から「-p 5」まで)
-t

転送スピードの測定を行う

-v
現在の設定を確認する
-X
各モード指定を行う。パラメータは以下の通り
「-X08」: PIOモード0
「-X09」: PIOモード1
「-X10」: PIOモード2
「-X11」: PIOモード3
「-X12」: PIOモード4
「-X16」: シングルワードDMAモード0
「-X17」: シングルワードDMAモード1
「-X18」: シングルワードDMAモード2
「-X32」: マルチワードDMAモード0
「-X33」: マルチワードDMAモード1
「-X34」: DMAモード2
「-X67」: UDMAモード3
「-X66」: UDMAモード2 (Ultra ATA33)
「-X68」: UDMAモード4 (Ultra ATA66)
「-X69」: UDMAモード5 (Ultra ATA100)
「-X70」: UDMAモード6 (Ultra ATA133)

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ