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

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

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

谷歌搜索这似乎是一个完全的死胡同。男子 nfsstat关于这个主题什么也没说。我能得到的最接近的信息就是找出以前可能发生的事情”新信用”。

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

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

监视操作正在出现一个基于 NFS 共享 portage 的包。 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%

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

答案1

来自红帽文章在评论中解决方案说

这是预期的行为。

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

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

-struct rpc_cred *cred = task->tk_msg.rpc_cred;
+struct rpc_cred *cred = task->tk_rqstp->rq_cred;

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

答案2

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

客户端 rpc 统计:

calls      retrans    authrefrsh
261697     0          261697

我也看到非常高的 iowait :

dd if=/dev/zero of=/mnt/omoikane/testfile bs=16k count=2048

(来自iostat:)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          4.04    0.00    4.04   91.92    0.00    0.00

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

答案3

据我从此链接了解, authrefresh = Calls 并不表明存在问题。

https://bugzilla.redhat.com/show_bug.cgi?id=785931

相关内容