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


10

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

谷歌搜索似乎是一个完全的死胡同。男子nfsstat对此话题一无所获。我能得到的最接近的信息是找出以前可能是“ newcreds ”的东西。

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

我的问题是,我认为我在OpenVPN上看到的NFS性能不佳,我唯一能立即看到的与所有nfsstat Google结果明显不同的是,我的“通话”字段恰好等于“ 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是什么(这个拼写是故意的吗?),为什么在我的情况下它会像这样增加?


当您说慢NFS时,是什么使您相信NFS性能应该更快?你能量化慢吗?一天中的时间是否影响WRT的表现?
Mike Pennington

“慢速NFS”意味着NFS流量毫无问题地占用整个可用带宽,而在VPN上,带宽并不算多(100 kB / sec)。相反,iftop向我显示了tun0上只有几位kB / sec的流量。我相信我已将问题缩小为Portage统计了在与binpkg相关的出现运行期间,PKGDIR中有数千个软件包,这似乎运行缓慢。到目前为止,据我所知,最好的解决方案可能是在远程工作站上定期更新squashfs移植,并通过HTTP binhost(而不是安装在NFS上的PKGDIR)获取binpkgs。
lkraav 2011年

有任何更新吗?我注意到与较旧的SLES 9服务器相比,较新的SLES 11和CentOS 6服务器的NFS客户端性能较差。SLES 9客户端显示速度更快,并且显示速度更快,authrefrsh=0而较新的OS显示的速度更快authrefrsh。我认为这里存在相关性,但并不确定这意味着什么。
Banjer 2013年

您正在执行哪种类型的NFS身份验证?AUTH_SYS
布莱奇利2013年

不过,要回答部分问题,authrefrsh是NFS客户端调用的次数,该次数call_refresh()基本上是发送到RPC服务器(端口映射,rpcbind等)并通过服务器验证其凭据的次数。我们需要找出是否是造成延迟的真正原因。如果您这样做,AUTH_SYS那么开销会很低,并且不是原因。
布莱奇利2013年

Answers:


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;

我有限的理解是,此行移动到call_refresh()发生的位置(较早而不是稍后)。这又意味着大多数nfs请求将导致authrefrsh增加,因为始终使用身份验证。


1

我看到了同一件事(不使用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。


1

据我从此链接了解到,authrefresh =调用并不表示有问题。

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


欢迎使用Unix和Linux!通常,我们希望网站上的答案能够独立存在-链接很棒,但是,如果该链接中断,则答案应该具有足够的信息,仍然会有所帮助。请考虑编辑您的答案以包括更多详细信息。有关更多信息,请参见FAQ
slm

他们的意思是他们不确定是问题的原因还是只是因为问题而上升。“暴涨”绝对表明情况不妙。同样,这通常与丑陋的性能问题同时出现。
Florian Heigl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.