Linuxのファイルシステム 

常時数百Kbpsのファイルの書き込みが行われている標準設定のext3ファイルシステムにおいて、たまに発生する大量のファイル操作(tar,find,rm)によってシステム負荷が高くなる現象が発生している。
ファイルアクセスを行うプロセスは数秒間ブロックされ、遅延してしまう。どうしたらこうした状況を改善できるだろうか?

もちろん、常に行われているファイルの書き込みを、アルゴリズムやファイル形式、アプリケーションレベルで最適化する方が効果的な可能性があることも分かっているんだけど。

やってみたこと。
(1)/etc/fstabにて、noatimeオプションを付ける
noatimeオプションは、ファイルにアクセスした日時を記録しないようにするオプション。mount(8)によればニュースサーバの様なデータを格納している場合に性能向上を期待できると書かれている。
→今回は殆ど影響がありませんでした。

(2)/etc/fstabにて、data=writebackオプションを付ける
data=writebackオプションは、ext3のジャーナリング機能の安全性を犠牲にして、書き込み性能を向上するためのオプション。
→かなりシステム負荷が低下し、性能向上した。

data=writebackオプションは性能を向上させるけれども、安全性が犠牲になっている。ちょっとこの辺りが気になる。

hdparm 

RAIDはハードディスクアクセスが遅くなるが、どの程度遅くなるのが妥当なのか?
取り敢えず調査のためのツールを確認してみた。

ベンチマーク
hdparm -ft /dev/hda

設定内容確認
hdparm -v /dev/hda

設定変更
hdparm -X?? /dev/hda
-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)

でも、多分hdparmはハードウェアRAIDのチューニングには直接役には立たないんじゃないかしらん?
より生のデバイスにhdparmがアクセスするので、RAIDの提供するデバイスは"焼き過ぎ"なんじゃないかと。

とりあえず、実メモリに比較して充分に大きい(同じ位?)tarファイルを用意して、(1)tarファイルのコピー、(2)tarファイルの展開、(3)tarファイルに圧縮、(4)tarファイルの削除、をやってみることかな。

手元のマシンは、(2)は充分な速度で実行してくれるけど、どうも小さなファイルの書き込みは非常に遅いみたい。

憶え書き: セキュリティの警告を非表示にする 

HKEY_CURRENT_USER¥Software¥Microsoft¥Windows¥CurrentVersion¥Policies¥Attachments¥SaveZoneInformation=dword:1
かつ、
インターネットオプションの[詳細設定]→[署名が無効でもソフトウェアの実行またはインストールを許可する]
のチェックボックスを外す。

最近使ったファイルの一覧を保存しない
HKCU¥Software¥Microsoft¥Windows¥CurrentVersion¥Policies¥Explorer¥NoRecentDocsHistory = REG_DWORD:1