NFS


http://www.asahi-net.or.jp/~AA4T-NNGK/nfs.html


http://www.linux.or.jp/JF/JFdocs/NFS-HOWTO/performance.html

5.6. NFSD のインスタンスの数
Linux でも他の OS でも、ほとんどの起動スクリプトでは、 nfsd のインスタンスを 8 つ起動します。 NFS の最初の頃に Sun はこの値を経験則として決め、その後はみんなこの値をコピーしているのです。どのくらいのプロセス数が最適かを決める良い基準はありませんが、トラフィックの大きいサーバではより大きな値にするのが良いでしょう。最低でもプロセッサ当たりひとつのデーモンは起動すべきで、プロセッサ当たり 4 から 8 というのがだいたいの目安になるでしょう。 2.4 以降のカーネルを使っている人は、各 nfsd スレッドがどのくらい使われているかを /proc/net/rpc/nfsd で見てみるといいでしょう。このファイルの th 行の最後の 10 個の数字は、割り当て可能な最大値に対する各パーセンテージにそのスレッドがあった秒数を示しています。最初の 3 つの値が大きいときは、 nfsd のインスタンスを増やすほうが良いでしょう。これを行うには、nfsd を起動するときのコマンドラインオプションでインスタンスの数を与えます。 NFS の起動スクリプト (Red Hat なら /etc/rc.d/init.d/nfs) では RPCNFSDCOUNT で指定します。詳細は nfsd(8) の man ページを見てください。

$ cat /proc/net/rpc/nfsd
rc 0 68600615 110220187
fh 717 0 0 0 0
io 853144948 1853098711
th 8 5952061 48723.994 13748.644 5152.618 0.000 6289.483 651.729 248.858 204.663 0.000 1248.984
ra 16 5582239 6983 2189 4071 1104 2096 1881 912 1491 817 898206
net 178850847 456872 178363842 118618
rpc 178812543 21 21 0 0
proc2 18 152290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc3 22 152329 82300927 410464 3092326 11932660 123 6501806 68184881 546 25 0 0 1260 271 113 0 3062 1061958 3568656 35 0 1295575
proc4 2 152293 26

http://sugi.nemui.org/diary/200412.html

nfsstat はろくな情報を出してくれないのだけれど、/proc/net/rpc/nfsd に細かい統計があるようだ。まず最初に /proc の下を見る癖を付けないといけないな。

……なのだけれどもこれのドキュメントが見当たらない。 Linux NFS-HOWTO の日本語訳 はちょっと意味が取れないし、かといって 原文 を読んでも、どうやら訳が間違っているらしき事は分かるものの、やっぱり意味はさっぱりだ。 Google でうろうろしていたら「最後の8つはそれぞれのスレッドが100%使われていた時間だ」とか言う文書も見付けて余計困る。スレッドが8つじゃないときはどうするんだ。

とかウロウロした挙げ句、fs/nfsd/stats.c を読んだら明解に書いてありました。 HowTo 文書に頼ろうとするのはいかんね……。

th <10%-20%> <20%-30%> ... <90%-100%> <100%>
time (seconds) when nfsd thread usage above thresholds
and number of times that all threads were in useというわけで NFS HowTo が言いたかった事は「後ろの3つ(80%〜100%)の時間が長かった(り、100%使い切った回数のカウントが多い)場合は nfsd のスレッド数を増やせ」ということらしい。