慢 NFS,nfsstat -c:authrefrsh(又名 newcreds?)字段的详细信息是什么?

lkr*_*aav 11 gentoo nfs openvpn

(net-fs/nfs-utils-1.2.3-r1, 2.6.38.5-zen+ Gentoo)

谷歌搜索这似乎是一个完整的死胡同。man nfsstat对这个主题几乎一无所知。我能得到的最接近的是找出可能以前是“ newcreds ”的东西。

newcreds 必须刷新身份验证信息的次数。

我的问题是,我认为我在 OpenVPN 上看到的 NFS 性能低于标准,唯一我可以立即看到与所有 nfsstat Google 结果显着不同的是,我的“呼叫”字段完全等于“authrefrsh”,因此非常高. 所有搜索结果输出的 authrefrsh 始终为 0 或非常低的数字。在我可以继续调试其他一些方面之前,我可以使用找出这意味着什么。

监视操作正在出现一个基于 NFS 共享移植的包。emerge 在运行过程中确实会遍历一棵大树,但是以前的经验表明我看到的性能是异常的。

$ watch -n 1 nfsstat -c

Every 1,0s: nfsstat -c                                Sat May 21 23:04:55 2011

Client rpc stats:
calls      retrans    authrefrsh
308565     2211       308565

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 172372   55% 17        0% 30485     9% 36057    11% 26831     8%
read         write        create       mkdir        symlink      mknod
25879     8% 107       0% 21        0% 0         0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
16        0% 0         0% 11        0% 0         0% 0         0% 16668     5%
fsstat       fsinfo       pathconf     commit
3         0% 50        0% 25        0% 2         0%
Run Code Online (Sandbox Code Playgroud)

我无法确切地弄清楚 authrefrsh 是什么(这个拼写,顺便说一句,这是故意的吗?)以及为什么在我的情况下它会像这样增加?

Jus*_*son 5

来自评论中的Red Hat 文章,解决方案说

这是预期的行为。

不是很有帮助,但它也指出了它发生的原因。

它引用了 sunrpc 包中的 commit a17c2153d2e271b0cbacae9bed83b0eaa41db7e1,该包移动到进行 nfs 身份验证的位置。我不会复制/粘贴整个提交,但它主要更改这些行。

-struct rpc_cred *cred = task->tk_msg.rpc_cred;
+struct rpc_cred *cred = task->tk_rqstp->rq_cred;
Run Code Online (Sandbox Code Playgroud)

我有限的理解是这条线移动到 call_refresh() 发生的地方(迟早)。这反过来意味着大多数 nfs 请求将导致 authrefrsh 增加,因为始终使用身份验证。


小智 1

我看到同样的事情(不使用 VPN) - authrefrsh == 在客户端调用。在我看来,调用的数量增加,然后减慢,然后 authrefrsh 的数量赶上。

客户端 rpc 统计:

calls      retrans    authrefrsh
261697     0          261697
Run Code Online (Sandbox Code Playgroud)

我也看到非常高的 iowait :

dd if=/dev/zero of=/mnt/omoikane/testfile bs=16k count=2048
Run Code Online (Sandbox Code Playgroud)

(来自iostat:)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          4.04    0.00    4.04   91.92    0.00    0.00
Run Code Online (Sandbox Code Playgroud)

我在wireshark 中看不到任何异常 - 我正在使用nfs3 和tcp。