Pages

2010/09/22

NFSでgetattrの割合がやたら多い場合のパラメータ設定

bin'd
Creative Commons License photo credit: Robert S. Donovan

とある環境でデータストアにNFSが使えるNASを使ったときのお話。

構築後にしばらく動作させて、NFSクライアントの統計をみるとgetattrの割合が9割近い!これはいかんだろうとNFSのマニュアルをチェック。

acregmin=n
一般のファイル (regular file) の属性 (attribute) がキャッシュされる 最小の時間を秒単位で指定する。 この時間内では、サーバーへの新たな情報の問い合わせは行われない。 デフォルトは 3 秒。
acregmax=n
一般のファイルの属性がキャッシュされる最大の時間を秒単位で指定する。 この時間を越えると、必ずサーバーへ新たな情報の問い合わせが行われる。 デフォルトは 60 秒。
acdirmin=n
ディレクトリの属性がキャッシュされる最小の時間を秒単位で指定する。 この時間内では、サーバーへの新たな情報の問い合わせは行われない。 デフォルトは 30 秒。
acdirmax=n
ディレクトリの属性がキャッシュされる最大の時間を秒単位で指定する。 この時間を越えると、必ずサーバーへ新たな情報の問い合わせが行われる。 デフォルトは 60 秒。
actimeo=n
acregmin, acregmax, acdirmin, acdirmax すべてを同じ値にする。デフォルト値はない。

 

やや特殊なNFSの使い方をしており、ファイル属性取りまくるが1つのクライアントから使う領域は他と共有しない構成だったのでactimeoをがっつり伸ばせばよさそうに見えた。
とりあえず一律120位にしよう。

ほかにもマニュアル見ながらずらずらと追加、
noatime,intr,actimeo=120,noacl,nocto,nodiratime


あたりを設定してクライアント側をOSごと再起動して再集計。
 
 

起動後すこしの状態だとgetattrが 変更前60%⇒変更前5% くらいの劇的な変化がみられました。

結局まったりした負荷しかかからないのであとで40%前後までは上がっていたが十分効果があった。
もっと激しく動くようになればgetattrの割合ももさらに減るかもしれないな。
 

ちなみに共有バリバリ、双方書き込みの環境ではこの設定をしないようにね、不整合を引き起こす。
 

0 件のコメント:

コメントを投稿