読者です 読者をやめる 読者になる 読者になる

NFSの統計情報

はじめに

メモ書きです。間違っている箇所があるかもしれませんが、ご容赦ください。

調査方法

クライアントとサーバ側でそれぞれ取得出来る情報でわけてみます。

NFSクライアント

nfsstat

nfsstatコマンドは、NFS の統計情報を表示するコマンドです。オプションを使い分ける事で、サーバ側とクライアント側の統計情報を見る事が出来ます。
/proc/net/rpc/nfs のデータを利用しています。

オプションの意味

  -s     サーバ側の統計のみを表示する。デフォルトではサーバとクライアント両者の統計を表示する。

  -c     クライアント側の統計のみを表示する。

  -n     NFS の統計のみを表示する。デフォルトでは NFS と RPC 両者の情報を表示する。

  -r     RPC の統計のみを表示する。
# nfsstat -c
Client rpc stats:
calls      retrans    authrefrsh
450        2          452

Client nfs v4:
null         read         write        commit       open         open_conf
0         0% 56        0% 40        0% 0         0% 48        0% 19        0%
open_noat    open_dgrd    close        setattr      fsinfo       renew
0         0% 0         0% 585996    0% 36112     0% 6         0% 0         0%
setclntid    confirm      lock         lockt        locku        access
1         0% 1         0% 616957    0% 0         0% 35        0% 2         0%
getattr      lookup       lookup_root  remove       rename       link
865149    0% 6130763   2% 2         0% 8         0% 13        0% 0         0%
symlink      create       pathconf     statfs       readlink     readdir
0         0% 1         0% 4         0% 584       0% 0         0% 623      94%
server_caps  delegreturn  getacl       setacl       fs_locations rel_lkowner
10        0% 0         0% 0         0% 0         0% 0         0% 598877    0%
secinfo      exchange_id  create_ses   destroy_ses  sequence     get_lease_t
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
reclaim_comp layoutget    getdevinfo   layoutcommit layoutreturn getdevlist
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
(null)
0         0%

#
# cat /proc/net/rpc/nfs
net 0 0 0 0
rpc 662 2 484
proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc3 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc4 48 0 75 15 0 59 55 0 0 708 04 6 0 1 1 57 0 55 4 23 48 2 13 11 0 0 1 4 56 0 783 10 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0
#

-m オプションを使う事で、マウントポジションのオプションもわかる

# nfsstat -m
/var/www from 192.168.1.1:/var/www
 Flags: rw,relatime,vers=4,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.2,minorversion=0,local_lock=none,addr=192.168.1.1

#
nfsiostat

nfsiostatコマンドは、マウントポジション毎の iostat をエミュレートしてくれるコマンドです。 普段から iostat を見ている人であれば、馴染みやすいですね。

# nfsiostat 1

192.168.1.1:/var/www:

   op/s         rpc bklog
1499.72            0.00
read:             ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  4.787          21.138           4.415        0 (0.0%)           2.601           2.750
write:            ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  4.047          21.863           5.403        0 (0.0%)          27.929          27.960

192.168.1.1:/var/www:

   op/s         rpc bklog
   0.00            0.00
read:             ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  0.000           0.000           0.000        0 (0.0%)           0.000           0.000
write:            ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  0.000           0.000           0.000        0 (0.0%)           0.000           0.000

192.168.1.1:/var/www:

   op/s         rpc bklog
  12.00            0.00
read:             ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  2.000           4.184           2.092        0 (0.0%)           0.000           0.000
write:            ops/s            kB/s           kB/op         retrans         avg RTT (ms)    avg exe (ms)
                  1.000           2.723           2.723        0 (0.0%)          30.000          30.000

見慣れないパラメータの意味。
上から、再送回数、クライアントからRPCリクエストが受信されるまでの平均時間、クライアントからRPCリクエストが完了するまでの時間。

          - retrans
                 This is the number of retransmissions.
          - avg RTT (ms)
                 This is the duration from the time that client's
                 kernel sends the RPC request until the time it
                 receives the reply.
          - avg exe (ms)
                 This is the duration from the time that NFS client
                 does the RPC request to its kernel until the RPC
                 request is completed, this includes the RTT time
                 above.

サーバ側

nfsstat

クライアント側で紹介した nfsstat コマンドのサーバ側で実行した場合の出力 こちらは /proc/net/rpc/nfsd のデータを利用しています。

$ sudo nfsstat -s
Server rpc stats:
calls      badcalls   badclnt    badauth    xdrcall
629        0          0          0          0

Server nfs v4:
null         compound
4         0% 608 99%

Server nfs v4 operations:
op0-unused   op1-unused   op2-future   access       close        commit
0         0% 0         0% 0         0% 3         0% 6         0% 0         0%
create       delegpurge   delegreturn  getattr      getfh        link
1         0% 0         0% 0         0% 40        1% 42        1% 0         0%
lock         lockt        locku        lookup       lookup_root  nverify
15        0% 0         0% 4         0% 47  1% 0         0% 0         0%
open         openattr     open_conf    open_dgrd    putfh        putpubfh
12        0% 0         0% 3         0% 0         0% 459      48% 0         0%
putrootfh    read         readdir      readlink     remove       rename
4         0% 25        0% 856      46% 0         0% 9         0% 5         0%
renew        restorefh    savefh       secinfo      setattr      setcltid
2         0% 0         0% 5         0% 0         0% 3         0% 3         0%
setcltidconf verify       write        rellockowner bc_ctl       bind_conn
3         0% 0         0% 4         0% 17        0% 0         0% 0         0%
exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence
0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp
0         0% 0         0% 0         0% 0         0% 0         0%

$
# cat /proc/net/rpc/nfsd
rc 0 2891 2622
fh 0 0 0 0 0
io 2551 1159
th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
ra 32 0 0 0 0 0 0 0 0 0 0 0
net 321 0 512 4
rpc 279 0 0 0 0
proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc3 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc4 2 4 854
proc4ops 59 0 0 0 857 149 0 1 0 0 38 68 0 29 0 86 38 0 0 30 0 2 0 68 0 4 13 28 0 6 25 2 0 15 0 66 3 3 0 18 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#

それぞれの値の見方は下記記事が参考になります。

NFS/トラブルシューティング - ArchWiki

まとめ

ブログを継続させるのって、難しい!