- 2003年8月14日 22:04
- IT関連
回線の混雑具合やその他諸々のボトルネック要因はたくさんあるからだ。ともあれ、マザーボードもディスクもATA133対応のものだし、BIOSレベルでの動作とLinux上での動作が同じとは限らない。どっかにこのあたりの確認とチューンアップ方法が解説されているとことはないかいなとネットを物色。以下2箇所がとてもわかりやすかった。
(1)@ITのLinuxTIPS「HDDのアクセスが妙に遅く感じるときは」
(2)IDEハードディスクの高速化 (Debian)
ディスクアクセススピードのチューンアップができるコマンドとしてはhdparmというのがあるようだ。早速、# apt-get install hdparmでhdparmをインストールした。まず、現在のHDDの動作モードを調べる必要がある。デバイス名は/dev/hdaなので、
# hdparm /dev/hdaと叩き、確認してみた。表示結果は以下のとおり。
# hdparm /dev/hda/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 9964/255/63 sectors = 160086528 start = 0
busstate = 1 (on)
I/O supportが16bit、DMAがusing_dmaを見るとoffになっている。
まずはこのままで現状のディスクアクセススピードを計測してみた。
DMAオフの場合(I/O 16-bit)の計測結果は以下のとおり。
# hdparm -ft /dev/hda/dev/hda:
Timing buffered disk reads: 64 MB in 18.89 seconds = 3.39 MB/sec
DMAがオフになっていて3.39MB/secであることがわかる。DMAをオンにするには、-d1オプションを付けてhdparmコマンドを以下のように実行する(オフにする場合は-d0オプション)。
# hdparm -d1 /dev/hdaこれでDMAはonになるはずだ。再度設定内容を確認してみた。結果は以下のとおり。/dev/hda:
setting using_dma to 1 (on)
using_dma = 1 (on)
# hdparm /dev/hdausing_dma がonになったことが確認された。I/O supportは16bitのままでいじっていないが、このままで計測してみた。/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 9964/255/63 sectors = 160086528 start = 0
busstate = 1 (on)
DMAオンの場合(I/O 16-bit)の計測結果は以下のとおり。
# hdparm -ft /dev/hda3.39MB/secが一気に55.65MB/secになっている。対デフォルト比16.6倍と、劇的に速度が向上したことがわかる。しかし、まだI/O supportが16bitのままである。32bitにしたらまだ速度が上がるかもしれない。 I/O supportを32bitsモードにするには、-c1オプションを付けてhdparmコマンドを実行する(16bitsモードにするのは-c0オプション)。以下のように実行した。/dev/hda:
Timing buffered disk reads: 64 MB in 1.15 seconds = 55.65 MB/sec
# hdparm -c1 /dev/hda再度、設定内容が有効になっているか確認してみる。/dev/hda:
setting 32-bit I/O support flag to 1
I/O support = 1 (32-bit)
# hdparm /dev/hdaI/O supportが32-bitになった。この状態で、更に速度向上が期待できるかわからないが念のため再度計測を試みる。/dev/hda:
multcount = 0 (off)
I/O support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 9964/255/63 sectors = 160086528 start = 0
busstate = 1 (on)
DMAオンの場合(I/O 32-bit)の計測結果は以下のとおり。
# hdparm -ft /dev/hda更に若干ではあるが、速度が速くなっていた。手動で細かく設定ができたのはよいとして、マシンの起動時に現在の動作モードをデフォルトとして動いてくれるのが望ましい。なぜなら、起動の度に上記調整を手動でやるのは面倒である。LinuxにしろFreeBSDにしろ、このような場合、/etc以下のrc関連での設定がある。(1)@ITのLinuxTIPS「HDDのアクセスが妙に遅く感じるときは」ではそこまでの記述がなかったが、どっかに絶対あるはずだと探していて「IDEハードディスクの高速化 (Debian)」を見つけた。「ををを!ワシがやりたかったのはまさにこれや。」 ということでここを参考にさらにチューニングした。/dev/hda:
Timing buffered disk reads: 64 MB in 1.12 seconds = 57.14 MB/sec
-X69オプションで(UltraDMA mode5)を有効にし、
更に現在の設定を維持させる-k1オプションも有効化した。叩いたコマンドは以下のとおり。
# hdparm -c1 -d1 -X69 -k1 /dev/hdakeepsettingsがonになったかを確認した。 結果は以下のとおり。/dev/hda:
setting 32-bit I/O support flag to 1
setting using_dma to 1 (on)
setting keep_settings to 1 (on)
setting xfermode to 69 (UltraDMA mode5)
I/O support = 1 (32-bit)
using_dma = 1 (on)
keepsettings = 1 (on)
# hdparm /dev/hda/dev/hda:
multcount = 0 (off)
I/O support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 1 (on)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 9964/255/63 sectors = 160086528 start = 0
busstate = 1 (on)
keepsettingsがonとなり、設定は維持される。
DMAオンの場合(I/O 32-bit)(UltraDMA mode5)(keepsettings=on)での計測結果は以下のとおり。
# hdparm -ft /dev/hda但し、これはマシンが起動している間設定が有効になっているだけであって、再起動した後もこの状態にならなければならない。ということで、ここの続きをずーっと読んでいくと、起動時に確認、設定を実行できるスクリプトがあった。 これが本命である。私の場合、/etc/init.d/hdparmを下記のように書き換えて保存した。/dev/hda:
Timing buffered disk reads: 64 MB in 1.12 seconds = 57.14 MB/sec
#! /bin/sh # # Setting IDE Bus Master # # chmod a+x /etc/init.d/hdparm # DAEMON=/sbin/hdparm # DAEMON check test -x $DAEMON || exit 0# Select Working
case "$1" in
start)
$DAEMON -d 1 -c 1 -X 69 /dev/hda
;;
stop)
$DAEMON -d 0 -c 0 /dev/hda
;;
status)
$DAEMON -i /dev/hda
$DAEMON -d /dev/hda
;;
bench)
$DAEMON -t /dev/hda
;;
*)
echo "Usage: /etc/init.d/hdparm {start|stop|status|bench}"
exit 1
;;
esacexit 0
おしまい。これでこのサイトの体感表示速度の向上に役立てばいいのだが、サーバなので、スピードよりも安定動作の方が優先順位が高いにしても、魅力のあるチューンナップ方法であることは言うまでもない。
- Newer: アマゾンのアソシエイトプログラム
- Older: 今日で夏休みは終わり