Home > IT関連 > 自宅サーバのディスクアクセス

自宅サーバのディスクアクセス

  • Posted by: mastuoka
  • 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

/dev/hda:
setting using_dma to 1 (on)
using_dma = 1 (on)

これでDMAはonになるはずだ。再度設定内容を確認してみた。結果は以下のとおり。
# hdparm /dev/hda

/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)

using_dma がonになったことが確認された。I/O supportは16bitのままでいじっていないが、このままで計測してみた。

DMAオンの場合(I/O 16-bit)の計測結果は以下のとおり。

# hdparm -ft /dev/hda

/dev/hda:
Timing buffered disk reads: 64 MB in 1.15 seconds = 55.65 MB/sec

3.39MB/secが一気に55.65MB/secになっている。対デフォルト比16.6倍と、劇的に速度が向上したことがわかる。しかし、まだI/O supportが16bitのままである。32bitにしたらまだ速度が上がるかもしれない。 I/O supportを32bitsモードにするには、-c1オプションを付けてhdparmコマンドを実行する(16bitsモードにするのは-c0オプション)。以下のように実行した。
# hdparm -c1 /dev/hda

/dev/hda:
setting 32-bit I/O support flag to 1
I/O support = 1 (32-bit)

再度、設定内容が有効になっているか確認してみる。
# hdparm /dev/hda

/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)

I/O supportが32-bitになった。この状態で、更に速度向上が期待できるかわからないが念のため再度計測を試みる。

DMAオンの場合(I/O 32-bit)の計測結果は以下のとおり。

# hdparm -ft /dev/hda

/dev/hda:
Timing buffered disk reads: 64 MB in 1.12 seconds = 57.14 MB/sec

更に若干ではあるが、速度が速くなっていた。手動で細かく設定ができたのはよいとして、マシンの起動時に現在の動作モードをデフォルトとして動いてくれるのが望ましい。なぜなら、起動の度に上記調整を手動でやるのは面倒である。LinuxにしろFreeBSDにしろ、このような場合、/etc以下のrc関連での設定がある。(1)@ITのLinuxTIPS「HDDのアクセスが妙に遅く感じるときは」ではそこまでの記述がなかったが、どっかに絶対あるはずだと探していて「IDEハードディスクの高速化 (Debian)」を見つけた。「ををを!ワシがやりたかったのはまさにこれや。」 ということでここを参考にさらにチューニングした。

-X69オプションで(UltraDMA mode5)を有効にし、
更に現在の設定を維持させる-k1オプションも有効化した。叩いたコマンドは以下のとおり。

# hdparm -c1 -d1 -X69 -k1 /dev/hda

/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)

keepsettingsが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

/dev/hda:
Timing buffered disk reads: 64 MB in 1.12 seconds = 57.14 MB/sec

但し、これはマシンが起動している間設定が有効になっているだけであって、再起動した後もこの状態にならなければならない。ということで、ここの続きをずーっと読んでいくと、起動時に確認、設定を実行できるスクリプトがあった。 これが本命である。私の場合、/etc/init.d/hdparmを下記のように書き換えて保存した。
#! /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
;;
esac

exit 0


おしまい。これでこのサイトの体感表示速度の向上に役立てばいいのだが、サーバなので、スピードよりも安定動作の方が優先順位が高いにしても、魅力のあるチューンナップ方法であることは言うまでもない。

Comments:0

Comment Form

画像の中に見える文字を入力してください。

Trackbacks:0

TrackBack URL for this entry
http://www.atopic-info.com/mt/mt-tb.cgi/278
Listed below are links to weblogs that reference
自宅サーバのディスクアクセス from Atopic Information:アトピー性皮膚炎のブログ

Home > IT関連 > 自宅サーバのディスクアクセス

検索
Feeds

Return to page top