nfs 性能分析-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3976817
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2008-02-20 18:29:06

nfs 收集各类 nfs 操作执行情况的统计信息,会同出错信息和性能指标。您可以使用以下命令来识别网络问题和观察在您的系统上进行的各类 nfs 操作。

nfsstat 命令

:none.nfsstat 命令显示有关 nfs 和 rpc 接口到客户机和服务器内核的统计信息。这个命令还可以用来重新初始化这些统计信息的计数器(nfsstat -z)。考虑到性能上的问题,rpc 统计信息(-r 选项)是首先需要察看的。nfs 统计信息向您展示了应用程序使用 nfs 的情况。

rpc 统计信息

:none.nfsstat 命令显示了有关 rpc 调用的统计信息,例如:

    * 已接收或已拒绝的 rpc 调用的总数
    * 从服务器发出的或被服务器拒绝的 rpc 调用的总数
    * 试图接收而无法收到 rpc 包的次数
    * 长度过短或存在残缺头信息的包数
    * 某个调用不得不被重新发送的次数
    * 应答与调用不匹配的次数
    * 某个调用超时的次数
    * 某个调用在客户机句柄繁忙时等待的次数
    * 认证信息不得不被刷新的次数

:none.nfsstat 命令输出的 nfs 统计信息部分被分为 nfs v2 和 nfs v3 两部分。而 rpc 统计信息部分被分为面向连接(tcp)和无连接 (udp)两部分。

nfs 服务器信息

对于已接收的 nfs 调用(calls)和由于认证未通过而被拒绝的调用(badcalls)nfs 服务器显示它们的数目,同时也能显示其他很多种类已发生调用的数目和百分比。

下例展示了 nfsstat 命令带 -s 参数选项时输出的服务器部分,如下:

# nfsstat -s
server rpc:connection oriented:calls   badcalls  nullrecv badlen   xdrcall dupchecks dupreqs15835      0          0          0          0          772        0connectionless:calls    badcalls  nullrecv badlen   xdrcall dupchecks dupreqs0          0          0          0          0          0          0server nfs:calls      badcalls   public_v2  public_v315835      0          0          0version 2: (0 calls)null       getattr    setattr    root       lookup     readlink   read0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%wrcache    write      create     remove     rename     link       symlink0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%mkdir      rmdir      readdir    statfs0 0%       0 0%       0 0%       0 0%version 3: (15835 calls)null       getattr    setattr    lookup     access     readlink   read7 0%       3033 19%   55 0%      1008 6%    1542 9%    20 0%      9000 56%write      create     mkdir      symlink    mknod      remove     rmdir175 1%     185 1%     0 0%       0 0%       0 0%       120 0%     0 0%rename     link       readdir    readdir    fsstat     fsinfo     pathconf87 0%      0 0%       1 0%       150 0%     348 2%     7 0%       0 0%commit97 0%

rpc 输出的服务器部分(-s)包括下列各项:

calls
    从客户机接收到的 rpc 调用总数
badcalls
    被 rpc 层拒绝的调用总数
nullrecv
    被认为应该接收到而事实上没有捕获可用 rpc 调用的次数
badlen
    包截断或包损坏(长度小于最小 rpc 调用标准长度的 rpc 调用数)
xdrcall
    报头无法由扩展数据表示(xdr)解码的 rpc 调用数
dupchecks
    重复请求高速缓存中已查找过的 rpc 调用数
dupreqs
    已发现的重复 rpc 调用数

输出结果中还同时显示了各类调用的数目和各自的百分比。

重复性检查是为那些不能在两次执行中返回同一结果的操作而提供的。这方面经典的例子是 rm 命令。第一个 rm 命令也许成功了,但是如果应答丢失了,客户机将会重发这个命令。我们希望这样的重复请求能获得成功,此时重复高速缓存被查询,如果发现是一个重复请求则相同的(成功的)结果被作为第二个重复请求的结果返回,就好像是由第一个请求所产生的结果一样。

通过查看不同类型操作调用的百分比(如 getattr()、read()、write()、readdir()),您可以决定要用哪一类的调优。例如:如果 getattr() 调用的百分比非常高的话,则调优属性高速缓存是可能会有效果的;如果 write() 调用的百分比过高的话,则磁盘和 lvm 调优就显得重要了;又如果 read() 调用百分比过高,则使用更多的内存用以缓冲文件就能提高性能。

nfs 客户机信息

nfs 客户机显示了已发送和被拒绝的调用数,同时显示已接收客户机句柄的次数(clgets)和各类调用的数目以及各自的百分比。

下例展示了 nfsstat 命令带 -c 参数选项时输出的客户机本分,如下:

# nfsstat -c
client rpc:connection orientedcalls    badcalls  badxids timeouts newcreds badverfs timers0          0          0          0          0          0          0nomem    cantconn interrupts0          0          0connectionlesscalls    badcalls retrans  badxids  timeouts newcreds badverfs6553       0          0          0          0          0          0timers   nomem     cantsend0          0          0client nfs:calls      badcalls   clgets     cltoomany6541       0          0          0version 2: (6541 calls)null       getattr    setattr    root       lookup     readlink   read0 0%       590 9%     414 6%     0 0%       2308 35%   0 0%       0 0%wrcache    write      create     remove     rename     link       symlink0 0%       2482 37%   276 4%     277 4%     147 2%     0 0%       0 0%mkdir      rmdir      readdir    statfs6 0%       6 0%       30 0%      5 0%version 3: (0 calls)null       getattr    setattr    lookup     access     readlink   read0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%write      create     mkdir      symlink    mknod      remove     rmdir0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%rename     link       readdir    readdir    fsstat     fsinfo     pathconf0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%commit0 0%

rpc 输出的客户机部分(-c)包括下列各项:

calls
    从客户机向 nfs 发出的调用总数。
badcalls
    被 rpc 层拒绝的调用总数。
retrans
    由于等待服务器响应而超时重发调用的次数。这仅适用于无连接传输中的 rpc 调用。
badxid
    从服务器接收到响应但是没有任何一个未完成调用与之匹配的次数。这意味着服务器可能用了过多的时间来应答。
timeouts
    由于等待服务器响应而使调用超时的次数。
newcreds
    认证信息不得不被刷新的次数。
badverfs
    由于响应中不正确的校验(verifier)而导致调用失败的次数。
timers
    调用的超时时长大于或等于指定的最小调用超时值的次数。
nomem
    由于内存分配失败而导致调用失败的次数。
cantconn
    由于无法连接到服务器而导致调用失败的次数。
interrupts
    调用在完成前被某个信号中断的次数。
cantsend
    由于无法连接到客户机而导致发送失败的次数。

输出结果中还同时显示了各类调用的数目和各自的百分比。

考虑到性能监视上的问题,nfsstat -c 命令提供信息用以显示网络上是否存在丢弃 udp 数据包的现象。如果一个网络无法处理某个包,则可能会丢弃它。数据包被丢弃可由以下因素引起:网络硬件的响应时间、网络软件的响应时间或服务器上超负载的 cpu。被丢弃的包并没有真正的丢失,因为一个替代请求会为其发送。

rpc 统计信息中的 retrans 列显示了由于等待响应而超时重发的请求数。这种情形就与丢弃 udp 包有关。如果 retrans 这一项中的数目持续地超过第一列中调用总数的百分之五时,就表明存在问题,服务器已经不再能满足需求了。可在服务器上使用 vmstat、netpmon和 iostat 命令检查负载。

很大的 badxid 数目意味着请求被发到不同的 nfs 服务器上,但是服务器由于负载过重而没有能够在客户机的 rpc 调用超时重发之前给予响应。每当已发送的请求接收到一个重复的响应时 badxid 值就递增一(每个 rpc 请求在整个传输生命期内都保留有自己的 xid)。过多的重发请求对服务器产生了额外的压力,进一步使响应时间延长。如果 badxid 和 timeouts 的数目超过了总调用数的百分之五,可以用 smitty chnfsmnt 命令加大 nfs-mount 选项中的 timeo 参数。如果 badxid 是 0,is 0, 但 retrans 和 timeouts 相当大,可以尝试减少 nfs 缓冲区的大小(使用 mount 命令中的 rsize 和 wsize 选项)。

如果服务器是 cpu 绑定的(cpu-bound),nfs 和它的守护进程会受到影响。要在这种情形下提高性能,服务器必须调优、升级或者用户可以让应用程序文件放置在本机上。如果服务器是 i/o 绑定的(i/o-bound),服务器文件系统可以被重新组织或者可以使用本地化的文件。

如果重发和超时的数目接近于同一个值时,可以确定包正在被丢弃。包很少在客户机端被丢弃。通常,包要么是在网络上被丢弃,要么是在服务器上被丢弃。服务器可能在以下两种情况下丢弃包:当包从服务器接口驱动程序的发送队列中溢出时,或者当服务器的用户数据报协议(udp)套接字缓冲区溢出时(nfs_socketsize)。如果在服务器上没有出现套接字缓冲区溢出 或 oerrs ,同时客户机上又有许多的重发和超时,那么包可能就是在网络上被丢弃的。问题也许是出在传播媒介和网络设备上,比如路由器、桥接器或集线器。网络检漏器(network sniffer)以及其他的工具可被用来调试诊断这些问题。更详细的讨论请参见丢弃的包 :none.

在某些场合下,应用程序或用户经历了很差的性能,然而在用 nfsstat -c 命令检查时输出结果却显示超时和重发数目等于零或很少。这说明客户机从服务器接收响应的速度与请求的速度是一样快的。这时,首先要检查在客户机上运行的 biod 守护进程的数目是否适当的。该检查当一个应用程序正在锁定远程文件时仍然可测。当远程文件锁加在一个正服务于 nfs 的文件上时,客户机将关闭所有该文件在高速缓存上的数据和属性而转入一种完全同步的操作方式。结果就导致很慢的执行性能,不幸的是这种情况还十分的普遍。包的锁定可以从 ipreport 的输出结果中通过查找 nlm 请求来识别。

nfsstat -m

:none.nfsstat -m 命令显示服务器名、服务器地址、mount(挂载)标志、当前读写大小、重发次数和每个客户机上 nfs mount 的动态重发次数,如下:

# nfsstat -m/save from /save:itsorus.austin.ibm.com flags:   vers=2,proto=udp,auth=unix,soft,intr,dynamic,rsize=8192,wsize=8192,retrans=5 lookups: srtt=27 (67ms), dev=17 (85ms), cur=11 (220ms) reads:   srtt=16 (40ms), dev=7 (35ms), cur=5 (100ms) writes:  srtt=42 (105ms), dev=14 (70ms), cur=12 (240ms) all:     srtt=27 (67ms), dev=17 (85ms), cur=11 (220ms)

上例输出结果中圆括号内的数字是实际时间,单位是毫秒。其他的值是操作系统内核保留维护的无单位的值。您可以忽略这些无单位的值。上例分别显示出了查找、读、写和所有这些操作组合在一起(all)的响应时间。输出中用到的其他定义如下:

srtt
    平滑往返时间(smoothed round-trip time)
dev
    估计偏差(estimated deviation)
cur
    当前补偿超时值(current backed-off timeout value)

netpmon 命令

有关该命令及其输出的讨论请参见 netpmon 命令。

nfso 命令

:none.nfso 命令用来配置 nfs 属性。可以设置或显示当前运行内核的网络选项。因此,这个命令必须在每个系统启动或网络配置后才能运行。
注:
:none.nfso 命令并不进行范围检查。如果被不正确地使用,nfso 命令可能使您的系统无法工作。

:none.nfso 的参数和各自的取值可以用 nfso -a 命令显示,如下:

(tremor:) # nfso -aportcheck= 0udpchecksum= 1nfs_socketsize= 60000nfs_tcp_socketsize= 60000nfs_setattr_error= 0nfs_gather_threshold= 4096nfs_repeat_messages= 0nfs_udp_duplicate_cache_size= 5000nfs_tcp_duplicate_cache_size= 5000nfs_server_base_priority= 0nfs_dynamic_retrans= 1nfs_iopace_pages= 0nfs_max_connections= 1024nfs_max_threads= 128nfs_use_reserved_ports= 0nfs_device_specific_bufs= 1nfs_server_clread= 1nfs_rfc1323= 1nfs_max_write_size= 0nfs_max_read_size= 0nfs_allow_all_signals= 0nfs_v2_pdts= 1nfs_v3_pdts= 1nfs_v2_vm_bufs= 1000nfs_v3_vm_bufs= 1000nfs_securenfs_authtimeout= 0nfs_v3_server_readdirplus= 1

如果需要查阅有关这些属性的描述,请参见网络可调优参数。许多 nfs 属性是运行时属性(run-time attributes),它们是可以在任何时间被修改的。而要修改负载时属性(load time attributes),如 nfs_socketsize,就需要 nfs 先停下来而后再重新启动。

要显示或者修改一个指定的参数,可使用 nfso -o 命令,如下:

# nfso -o portcheckportcheck= 0# nfso -o portcheck=1

参数还可以重新设置成它们的缺省值,使用 -d 选项,如下:

# nfso -d portcheck# nfso -o portcheckportcheck= 0

nfs 参考

以下是与 nfs 有关的文件、命令、守护进程和子程序的摘要。需要详细信息,请参见 《aix 5l v5.2 系统管理指南:通信与网络》 和 《aix 5l v5.2 命令参考大全》。
网络文件系统(nfs)文件列表

以下是 nfs 文件列表,包括配置信息:

bootparams
    列出了可以用来启动的无磁盘客户机
exports
    列出了可以导出到 nfs 客户机的目录
networks
    包含了因特网上的网络信息
pcnfsd.conf
    为 rpc.pcnfsd 守护进程提供配置选项
rpc
    包含了为远程过程调用(rpc)提供的数据库信息
xtab
    列出了当前已经导出的目录
/etc/filesystems
    列出了试图在系统重新启动时被 mount 的所有文件系统

nfs 命令列表

以下是 nfs 命令列表:

chnfs
    启动指定数目的 biod 和 nfsd 守护进程
mknfs
    配置系统使其运行 nfs 并且启动 nfs 守护进程
nfso
    配置 nfs 网络选项
automount
    自动 mount nfs 文件系统
chnfsexp
    修改 nfs 导出(nfs-exported)目录的属性
chnfsmnt
    修改 nfs 挂载(nfs-mounted)目录的属性
exportfs
    导出目录到 nfs 客户机以及回收(unexport)目录
lsnfsexp
    显示由 nfs 导出的目录特征
lsnfsmnt
    显示已挂载(mounted)nfs 系统的特征
mknfsexp
    使用 nfs 导出一个目录
mknfsmnt
    使用 nfs 挂载一个目录
rmnfs
    停止 nfs 守护进程
rmnfsexp
    从服务器导出列表中删除 nfs 导出(nfs-exported)目录
rmnfsmnt
    从客户机挂载列表中删除 nfs 挂载(nfs-mounted)文件系统

nfs 守护进程列表

以下是 nfc 锁定守护进程列表:

lockd
    通过 rpc 包来处理锁定请求
statd
    为 nfs 上的锁定服务提供崩溃恢复(crash-and-recovery)功能

以下是网络服务守护进程和实用工具的列表:

biod
    发送客户机的读写请求至服务器
mountd
    应答来自客户机的对文件系统的 mount 请求
nfsd
    启动用以处理客户机对文件操作请求的守护进程
pcnfsd
    处理来自 pc-nfs 客户机的服务请求
nfsstat
    显示机器接收调用的性能信息
on
    在远程机器上执行命令
portmap
    将 rpc 程序端口号映射为因特网端口号
rexd
    接收运行远程机器上程序的请求
rpcgen
    生成 c 代码以实现一个 rpc 协议
rpcinfo
    报告 rpc 服务器的状态
rstatd
    返回从内核获得的性能统计信息
rup
    显示本地网络上的一个远程主机的状态
rusers
    报告已登录到远程机器上的用户列表
rusersd
    响应 rusers 命令的请求
rwall
    发送消息至网络上的所有用户
rwalld
    处理 rwall 命令的请求
showmount
    显示所有已挂载远程文件系统的客户机列表
spray
    发送指定数目的包到一个主机
sprayd
    接收由 spray 命令发来的包

以下是网络安全守护进程和实用工具列表:

chkey
    修改用户的加密密钥(encryption key)
keyenvoy
    提供用户进程与密钥服务器之间的中介
keylogin
    解密并存储用户的密钥(secret key)
keyserv
    存储公有和私有密钥
mkkeyserv
    启动 keyserv 守护进程并将 /etc/rc.nfs 文件中适当的注释项改为非注释的
newkey
    在公有密钥文件中创建一个新的密钥
rmkeyserv
    停止 keyserv 守护进程并注释掉 /etc/rc。nfs 文件中为 keyserv 守护进程而设的项
ypupdated
    更新网络信息服务(nis)映象中的信息

以下是无磁盘客户机支持配置文件:

bootparamd
    提供无磁盘客户机启动所需的信息

以下是 nfs 子程序列表:

cbc_crypt()、des_setparity() 或 ecb_crypt()
    实现数据加密标准(des)例行程序。

来源:
阅读(3299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图