如何从用户空间监控 NFS 负载?

如何从用户空间监控 NFS 负载?

如果我没有使用正确的术语(虽然我是长期的 Linux 用户,但我不是管理员)或者这是常见问题解答(虽然搜索 SE 获得了很多结果,但我没有看到类似这个问题的内容),请见谅:

我是科学集群的用户(RHEL5 上的作业由 PBS/Torque 管理,仅供参考)。我即将开始我的第一个真正大的工作,因此我向管理员询问了一些配置问题,以避免犯愚蠢的错误。我基本是对的,但他补充了建议“确保您没有用过多的 I/O 来敲打磁盘服务器”,并跟进“使用 top [查看] nfs 是否出现问题。”

怎么做?这是一个集群,所以很多事情都是“幕后”发生的,对我来说是透明的。另外,我几乎没有任何特权。我还只能通过 SSH 使用 CLI,但这是我遇到的最不大的问题。从好的方面来说,我似乎能够进入任何计算节点,包括那些连接了磁盘的节点。

top所以我想知道,如何最好地从用户空间监控 NFS?我对NFS有一点了解,所以我知道我可以做到

top -p$(pgrep nfsd -d ',')

获取 NFS 进程列表(没有?)。但我真正想知道的是——再次强调,作为sudoRHEL5(是的,我们仍在运行它)上的用户(我既不是 root 用户也不是用户)——

  1. 所有 NFS 进程的 NFS 负载的一个或几个汇总统计信息。这是我可以从top或其他工具中获得的,而无需抓取输出并进行自己的计算吗?我应该监控除 之外的进程吗nfsd
  2. 关于量化“NFS 疯狂”的建议。如果我能得到一个/几个汇总统计数据,我大概就能得到一个工作前的基线,但这仍然不能告诉我“多高才算太高”。

笔记: top似乎不是用于此任务的工具,但至少对我来说是可用的。不是可用包括

  1. nfsstat
  2. iostat
  3. iotop

答案1

查看 top 输出是完全错误的。它与 IOPS 有关。要查看 NFS 统计信息,请使用nfsstat

Server rpc stats:
calls      badcalls   badauth    badclnt    xdrcall
40833255   0          0          0          0       

Server nfs v3:
null         getattr      setattr      lookup       access       readlink     
0         0% 1411374   3% 107       0% 43169     0% 747514    1% 790       0% 
read         write        create       mkdir        symlink      mknod        
38138706 93% 0         0% 0         0% 0         0% 0         0% 0         0% 
remove       rmdir        rename       link         readdir      readdirplus  
0         0% 0         0% 0         0% 0         0% 0         0% 491559    1% 
fsstat       fsinfo       pathconf     commit       
6         0% 12        0% 6         0% 0         0% 

如果您有一个监控程序(例如,Zabbix),您可以添加一个用户参数来监视它们:

# NFS stats
UserParameter=nfs.v3.server[*],nfsstat -s -l | awk 'BEGIN {FS=": *"}/v3 server.*$1:/ {print $$2}'

并制作漂亮的图表: 在此处输入图片描述

多高才算太高?这完全取决于你的工作量:

nfs 图

您需要观察文件系统和磁盘潜伏查看磁盘是否超载。

相关内容