FreeBSDをHDDのAPMが遅くしていた

HDDのAPMがFreeBSDシステム全体のパフォーマンス低下を引き起こしていたので 無効化したら改善したよというお話。

自宅で動かしているFreeBSDのWebサーバはHDDをGPTでZFSのミラーリングで運用しています。しかしながらこのサーバは ls が遅かったりちょっとしたディスクアクセスでいわゆる「詰まる」状態が続いてました。とはいえたいしたことないですし、GPTとZFSの相性のせいかなぁと思って放置していました。

で、先ほど別件でちょっと気になってSMARTを使ってそのHDDを調べてみました。

# portmaster -d sysutils/smartmontools
(snip)

# smartctl -a /dev/ada0

(snip)
193 Load_Cycle_Count        0x0012   001   001   000    Old_age   Always       -       3595400
(snip)

え?! なにこれ。クッキークリッカーで大きな数字を見慣れた私ですら驚く数字。もうこわれてるのと同じやん? 実はこのサーバのHDDはモバイル用の2.5インチでして、どうもAPMの影響でガンガンヘッドが退避してものスゴい数字になってしまってる模様。

だいたい動かしっぱなしのサーバマシンでAPMなヘッドの退避も意味のない話なので、HDDのAPMを切る方法を検索してみました。Linuxとかならhdparmなんですが、FreeBSDはataidleを使うらしいですね。

# portmaster -d sysutils/ataidle
(snip)

# ataidle -P 0 /dev/ada0
# ataidle -P 0 /dev/ada1

その効果は抜群。いままでの「詰まり」がウソのように普通のサーバになりました。いやもう何事も放置しちゃアカンという教訓です。