優雅な生活の設計と実装

The Design and Implementation of the Gracious Days


LAST MODIFIED: 2013/07/28 17:20:42 UTC

新しい秩序の確立は、他の何にも増して難しく、
成功する可能性が低く、危険な事業である。
改革者は旧秩序から利益を得ている
全ての者を敵にまわし、
新秩序から利益を受けるはずの者からは
及び腰の支持しか集められない。
--- Niccolo Machiavelli, The Prince

この種の「保護」は初心者を保護するかも知れないが、
熟練ユーザを窮地に追い込むことになる。
というのは、何が親切であり、何が適切でないかかという
オペレーティングシステムの考え方の裏をかくことばかりに
かなりの労力を費やさなければならないからである。
--- A.S.Tannenbaum, Modern Operating Systems


不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。

July 2013

感想はこちらまで (内容は匿名のメールで送られます)

コメント:

注: お返事が必要な場合は直接メールください。 ただし、確実にお返事するかどうかはわかりませんのであしからず。

Sunday, July 28

* ZFS 再び

2年ぶりくらいに更新。そろそろ手書きマークアップは止めようかと思いつつ。

ZFS で構成した 10TB クラスのストレージ運用を開始してから数年経ちました。 いろいろな落し穴にはまりつつ、現在は FreeBSD 9.1 で無難な運用ができるようになっています。半年以上トラブルなしです。

鉄則をいくつか。 現在は頑張ってチューニングしなくともかなり安定して動きます。

そして、もうひとつ。ARC を手動で設定 (vfs.zfs.arc_min と vfs.zfs.arc_max) した時には、 増やしすぎていないかをチェックするのを忘れないでください。

このチェックは、当該マシンの ZFS 以外のメモリ負荷に依存しますので、 なかなか調べるのが難しいところです。たとえば NFS サーバとして動いているマシンで ARC を物理メモリぎりぎりまで設定した場合、 クライアントからのアクセスが集中しているタイミングでメモリが足りなくなることが良くあります。 FreeBSD は swap in/out を使ってメモリ不足を回避しますが、性能がかなり低下して見えることと、 かなりまれな確率ですが、swap in/out と ZFS のメモリ要求がデッドロックするパターンがあります。

これは、top や vmstat でメモリ使用量を監視する、という方法で捕捉するのは困難です。 確実なのは、swap in/out の頻度を監視する方法になります。

具体的には、vm.stats.vm.v_swappgsout と vm.stats.vm.v_swappgsin を監視します。 これは swap in/out したページ数を表しています。 10 秒単位で値を保存するスクリプトをつくって 1-2 日稼働させた状態のデータをとり、 1 秒間あたりの処理ページ数に換算してみます。平均して 1 を切っているようなら、特に心配は要りません。 さらに ARC を増やしても大丈夫でしょう。

これが平均しても 10 や 100 と出てきた場合は、ARC のとりすぎです。 値が小さくなるまで、ARC を減らしてください。毎秒 1000 ページ (実に 4MB/s) の swap in/out が発生していても、 FreeBSD は見かけ上安定して動作できるだけの能力を持っていますが、 1000 を超える場合はデッドロックに陥る危険性が高く、安定運用が望めません。(し、swap 処理の負荷が高くて ZFS の性能にも影響が出ます)

1 年ほどまえに構築したシステムでは、これに気づかずに大きめに ARC を設定していた結果、 10-20 日に一回くらいのペースでシステムが止まる、という現象に悩まされました。

感想はこちらまで (内容は匿名のメールで送られます)

コメント:

注: お返事が必要な場合は直接メールください。 ただし、確実にお返事するかどうかはわかりませんのであしからず。