使用nmon analyzer 分析网络性能
本人写的文章只是个人工作经验的免费分享,不代表本人供职公司的观点,不承担由此带来的任何责任。
上一篇,我介绍了更好的性能监控工具nmon, 你有去试用吗?
hugulas:更好用的nmonzhuanlan.zhihu.com如果是对某个workload采集性能数据,我们一般会把nmon的结果保存成文件。
例子命令:
nmon -f -s10 -c 360
- -f: 使用工作表格式保存输出
- -s: 采样间隔,-s10表示间隔10秒
- -c:采样次数 -c 360表示采样360次,也就是采样一小时
在完成这样的采样后,我们可以通过nmon的spreadsheet analyzer来找出当时workload的性能瓶颈。
然后,你下载nmon analyzer就可以在excel中打开nmon离线的看当时的性能监控数据了。
链接-> http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser
注意:在这个包里还有他的英文使用文档,看了这个文档(NA_UserGuide v66.pdf),你就不用满世界去找每个tab数据的含义了。
实战分析网络性能
我这一篇会介绍怎么通过nmon analyzer分析网络的性能数据。
和网络有关工作表主要有如下几个:
- BBBN:网络的名字,速度和MTU大小
- BBBP:emstat和lsattr的结果,你可以看到netstat的信息
- NET:这一页显示了每张网卡的分时数据吞吐量,包括了读,写和总吞吐量(读+写)
- NETPACKET:这一页显示了每张网卡的分时传输的包数量,包括了读,写和总数
- NETSIZE:每张网卡上的包的大小
在进行分析之前,我们首先要确定网络的接口的一些参数,比如网卡类型,带宽和MTU。这些参数决定了网络接口的性能。如果你没有在Excel中找到网卡的类型和速度,可以通过以下命令查看。
首先,我们可以在linux上的/sys/class/net找到网络接口对应的网卡设备。
hugulas@hugulas-PC:/sys/devices$ ls -la /sys/class/net
total 0
drwxr-xr-x 2 root root 0 May 15 10:11 .
drwxr-xr-x 53 root root 0 May 15 10:11 ..
lrwxrwxrwx 1 root root 0 May 15 10:11 docker0 -> ../../devices/virtual/net/docker0
lrwxrwxrwx 1 root root 0 May 24 16:02 enp1s0 -> ../../devices/pci0000:00/0000:00:03.1/0000:01:00.0/net/enp1s0
lrwxrwxrwx 1 root root 0 May 24 16:02 lo -> ../../devices/virtual/net/lo
然后,我们打开设备的speed文件看看网卡设备的速度:(我这张网卡是100Mbps的)
hugulas@hugulas-PC:/sys/devices$ cat /sys/class/net/enp1s0/speed
100
再次,还可以看看网卡的MTU:
hugulas@hugulas-PC:/sys/devices$ cat /sys/class/net/enp1s0/mtu
1500
如果我们想判断网卡是否瓶颈呢,我们可以先看excel中NET表来观察网络流量。这个页面有几张和网络流量有关的图表,也有分时分卡的网络流量数据。在按照网络接口来划分的直方图中我们可以看到流量集中在了千兆卡上,读和写的峰值分别是90MB/s和110MB/s,这张网卡是张千兆网卡1000Gbps(125MB/s),已经接近它的极限了。
从分时图也可以看到,瓶颈出现时,网络流量达到了一个瓶盖期。
我们接着再来看下网络的包大小。我没有拿到NETSIZE工作表,但是可以根据NETPACKETS算出包大小,峰值时,读写在210K/s,那么包大小大约在428到523Byte之间。包还是非常小的。如果包的大小比较小,那么这张卡的最大吞吐量会更差。(你的包的大小受制于MTU大小,最大不能大于MTU。所以,一般认为把MTU配成9000,对于高速网卡来说,性能会更好)。
结合以上两种数据,我们可以知道这张卡大概率到了瓶颈期。
下一篇,会更加贴合实战来介绍怎么判断网络是不是瓶颈。
hugulas:怎么判断网络到底是不是瓶颈?如何寻找参照物?zhuanlan.zhihu.com