文档库 最新最全的文档下载
当前位置:文档库 › nmon for SUSE Linux监控指标总结

nmon for SUSE Linux监控指标总结

nmon for SUSE Linux监控指标总结

测试一部杨明华

目录

nmon for SUSE Linux监控指标总结 (1)

1. SYS_SUMM (2)

2. AAA (3)

3. StrayLines (3)

4. BBBP (3)

5. CPU_ALL (6)

6. CPU_SUMM (7)

7. DISK_SUMM (8)

8. DISKBSIZE (10)

9. DISKBUSY (10)

10. DISKREAD (12)

11. DISKWRITE (13)

12. DISKXFER (15)

13. JFSFILE (16)

14. MEM (17)

15. NET (19)

16. NETPACKET (21)

17. NFSCLIV3 (22)

18. PROC (23)

19. TOP (25)

20. UARG (28)

21. VM (28)

22. CPU* (29)

本文结合我处近年来承接的SUSE Linux平台性能测试项目,总结了nmon for SUSE Linux 各项监控指标的含义。本文中总结的指标均来自真实项目,非单纯的词句翻译。大部分截图对服务器分区名称,id等信息进行了处理,但不影响正常分析。为突出各Sheet页里的指标特点,本文中的指标举例来自多个项目,因此各Sheet之间的指标值会不一致。

其中nmon for SUSE Linux推荐版本为14i,文中大部分截图也以14i版本生成的nmon 为准,nmon analyser推荐版本为3.4.a。监控过程中增加参数-T以生成TOP等Sheet,加-N 以生成NFS Sheet。

由于项目特点所限,nmon中的Sheet不一定全面,最后,由于经验所限指标内容解读难免有差错,请参考阅读。

文档仅限个人学习交流,禁止商业目的的转载,请尊重个人知识产权,如有问题和建议欢迎邮件沟通:dionysus_ymh@https://www.wendangku.net/doc/ad14604407.html,。

1.SYS_SUMM

本Sheet显示当前服务器的总体性能情况。

Total System I/OStatistics:

●Avg tps during an interval:显示采集间隔内磁盘平均I/O次数,该值等于Sheet

DISK_SUMM中IO/sec列的平均值。

●Max tps during an interval:显示采集间隔内磁盘最大I/O次数,该值等于Sheet

DISK_SUMM中IO/sec列的最大值。

●Max tps interval time:显示磁盘最大I/O所在时间点。

●Total number of Mbytes read:显示采集间隔内磁盘读的总兆字节数,可能是nmon

的bug,该值并不准确,并且使用LVM划分的虚拟磁盘可能会存在重复统计。

●Total number of Mbytes written:显示采集间隔内磁盘写的总兆字节数,该值并不准

确,理由同上。

●Read/Write Ratio:显示Total number of Mbytes read/ Total number of Mbytes written

的值。

●IO/sec:仅显示磁盘IO/sec的图,不包括Network的I/O。

CPU:

●Users%:显示采集间隔内所有CPU在User Mode下的Time占比(Avg、Max)。

●Sys%:显示采集间隔内所有CPU在System Mode下的Time占比(Avg、Max)。

●Wait%:显示采集间隔内所有CPU处于空闲且等待I/O完成的时间比例(Wait%是

CPU空闲状态的一种,当CPU处于空闲状态而又有进程处于D状态(不可中断睡

眠)时,系统会统计这时的时间,并计算到Wait%里),Wait%不是一个时间值,

而是时间的比例,因此在同样I/O Wait时间下,服务器CPU越多,Wait%越低,

它体现了I/O操作与计算操作之间的比例。对I/O密集型的应用来说一般Wait%较

高,且Sheet PROC中Blocked也较高,这时需关注是什么导致了过多的进程等待。

●Idle%:显示采集间隔内所有CPU处于空闲Time的占比(Avg、Max)。

●CPU%:显示采集间隔内所有CPU的user%+system%。

2.AAA

本Sheet显示当前服务器基本信息,如操作系统版本,当前LPAR名,采集时间和次数等。

3.StrayLines

显示本次nmon分析文件中未生成的采集值。

4.BBBP

由于本Sheet内容较多,因此仅选主要内容介绍。

如上图,显示当前服务器的基础资源信息,当前服务器操作系统是SUSE Linux Enterprise Server 11 SP2,64bit版本。

使用的是AMD Opteron 6172处理器,共有4个CPU(Core)。

如上图,显示当前服务器的内存资源。

●MemTotal:显示当前服务器物理内存大小,本服务器有8063180 KB≈7874 MB左右。

●MemFree:显示当前服务器的空闲内存大小,本服务器有5052336 KB≈4934 MB左

右。

●Buffers:显示当前服务器Buffer(在内存中要写到磁盘上的)缓存的大小,本服务

器有459108 KB≈448 MB左右,注意,这里的数值仅是采集初期的静态值,具体Buffer的变化还需要看Sheet MEM。

●Cached:显示当前服务器Cache缓存的大小(从磁盘读取到内存的),本服务器有

1032572 KB≈1008 MB左右。,这里的数值仅是采集初期的静态值,具体Buffer的变化还需要看Sheet MEM。

●SwapCached:显示当前服务器Swap空间已缓存的大小,本服务器尚未使用到Swap

空间。

●SwapTotal:显示当前服务器Swap空间大小,本服务器有8385532 KB≈8189 MB左

右。

●SwapFree:显示当前服务器Swap空闲空间大小,本服务器Swap空间都空闲。

由于执行nmon时所属系统组权限不同,因此BBBP里磁盘的信息可能会缺失,如上图是root权限执行nmon生成文件后显示的磁盘信息,可以看到每个磁盘的大小及磁盘下的分区用途。

如果系统中使用LVM划分了虚拟磁盘,则还能在mapper中看到相关信息,如上图,vgsystem为VG(卷组)名,lv_opt等为LV(逻辑卷)名,LV对应的设备名就是下面的/dev/dm-x。

如上图,显示当前服务器有1个以太网口,一个loop back网口。

5.CPU_ALL

本Sheet显示当前服务器所有CPU在采集时间段内的利用率,按时间及User%、System%、Wait%显示。

当前服务器共有4颗CPU(Core)。

一般情况下CPU利用率里User%应占70%左右,Sys%应占30%左右,如果Sys%或Wait%占比等于或超过了User%则应该关注是什么引起了过多的系统消耗,可能是大量的Disk或Network I/O。

如下图,这个项目随着并发的增加,应用进程对CPU的消耗都增加在Wait%上,经排查是由于NFS读写遇到瓶颈导致:

6.CPU_SUMM

本Sheet显示当前服务器所有CPU的利用率,当前服务器共有4个CPU(Core),每个CPU负载有所不同。

7.DISK_SUMM

本Sheet按采集时间显示所有磁盘和分区的Read/Write的速率(KB/s)和所有磁盘和分区的I/O率。某一采集时间点的IO/sec等于Sheet DISKXFER中该时间点上所有磁盘和分区的IO/sec之和。因此,这一时间点上的I/O值是重复的!另外,本Sheet中的I/O不包括NFS里的I/O。

如上图的WAvg按nmon Guide中的说法是为了去掉采集值中的零值以便贴近真实平均值,但WAvg的公式(对计算列中所有值取平方后加合,再除以列中所有值之和)却不是单纯的去掉零值,这里可以理解为WAvg比Avg更贴近资源消耗的均值,因此以后所有资源Sheet中都推荐关注WAvg。

IBM Redpaper《Linux Performance and Tuning Guidelines》中介绍Linux的I/O子系统架构如下:

nmon(包括iostat)对系统I/O的指标截取大部分来自/proc/diskstats,而这些值来自block layer层,LVM里的Logical Volume会“visible as a standard block device”,因此真实的磁盘,LVM的逻辑卷,分区等在这里都会显示,在nmon计算总值时会被重复统计。

Disk Read/Write KB是同一采集时间点下Sheet DISKREAD、DISKWRITE里该行(所有磁

盘和分区)数值之和,必然包括了重复值,例如某一时刻sda磁盘共write 1000 KB,其中sda1分区write 700 KB,sda3分区write 300 KB,这一时刻Disk Write应是1000 KB,但这里却会重复统计分区数值,导致显示为Disk Write 2000 KB。Disk I/O也存在同样的问题!

还需注意一点,部分nmon生成文件里图中标题指标为kb(小写)/s,但实际统计的却是KB(大写)/s。

8.DISKBSIZE

本Sheet按采集时间显示当前服务器所有磁盘及分区的平均Read/Write Block大小(KB)。这里可以看到采集间隔期内哪个磁盘和分区的操作较频繁,注意,由于这里把磁盘和分区放在一起显示了,因此会有数值上的重复,如下图中的磁盘sda和分区sda3数值是一样的。另外,这里不包括NFS。

9.DISKBUSY

本Sheet显示当前服务器所有磁盘和分区繁忙率。本服务器中sda磁盘下的sda3分区较繁忙,WAvg超过了50%,应重点查看磁盘操作是否正常、合理。

dm-x对应的是LVM划分的虚拟磁盘,磁盘挂在点可以从Sheet BBBP中或执行df命令查看。另外,这里不包括NFS。

为了瓶颈(同时该项目的CPU Wait%占比很高,Sheet PROC里Blocked任务数也很高)。

Disk %Busy与iostat里的%util一样,反应了设备的繁忙度,计算公式是1秒内有多少毫秒在处理读写请求(utilization = ( (read requests + write requests) * service time in ms / 1000 ms ) * 100%)。对单个物理磁盘而言接近100%的利用率说明磁盘带宽基本已经占满,但对LVM虚拟磁盘来说则不一定,在iostat里有可能会看到%util超过100%。但总体来说,高于80%的Disk Busy肯定需要关注

10.DISKREAD

本Sheet显示当前服务器所有磁盘和分区的Read字节数。某一采集时间点上所有hdisk Read KB之和等于Sheet DISK_SUMM中该时间点的Disk Read KB。当前服务器在采集间隔期内主要的读的操作集中在sda3分区。注意,sda磁盘下所有分区(sda3、sda5…)在同一时间点上的Write之和等于sda磁盘的Write值,切莫统计重复了。另外,这里不包括NFS。

另外,使用LVM划分的LV实际磁盘读写也落在物理磁盘或分区下,数值同样也会被重复统计!LV所在VG包含几个PV,LV的Stripe length等参数还需通过其他命令查看,或与

系统管理员询问,但一般从数值上还是比较好看出的。

如上图,dm-0是一个LVM划分出的LV,横跨sdb、sdc两个PV,因此22:39:05上dm-0 Read的1.9 KB和sdb的1.9 KB是一个值(这个例子中Read没有用到sdc,但下面的Write 中就能看到了),统计时不能重复计算!

另外,也有测试环境中多个dm-x在一个磁盘或分区的情况,详见DISKWRITE。11.DISKWRITE

本Sheet显示当前服务器所有磁盘和分区的Write字节数。某一采集时间点上所有hdisk

Write KB之和等于Sheet DISK_SUMM中该时间点的Disk Write KB。当前服务器在采集间隔期内主要的写操作集中在sda3、sda5分区和dm-0磁盘上。注意,sda磁盘下所有分区(sda3、sda5…)在同一时间点上的Write之和等于sda磁盘的Write值,切莫统计重复了。另外,

这里不包括NFS。

与Sheet DISKREAD一样,使用LVM划分的LV实际磁盘读写也落在物理磁盘或分区下,数值同样也会被重复统计!LV所在VG包含几个PV,LV的Stripe length等参数还需通过其他命令查看,或与系统管理员询问。

如上图,dm-0是一个LVM划分出的LV,横跨sdb、sdc两个PV,因此22:35:45上dm-0≈sdb+sdc,而sda≈sda1+sda2,统计时不能重复计算!

另外,也有多个dm-x在一个磁盘或分区上的情况:

如上图,sda3分区包含了dm-0,dm-2,dm-3,3个LV。

12.DISKXFER

本Sheet显示当前服务器所有磁盘和分区的I/O次数。某一采集时间点上所有列之和等于Sheet DISK_SUMM中该时间点的IO/sec。同样,磁盘和其下所有分区在同一时间点上的I/O值也是重复的。另外,这里不包括NFS。

如上图,sda的I/O等于在同一时间点上其下所有分区的I/O之和,而dm-0其实对应的是sda5分区,它俩的I/O是一致的。切莫统计重复了!

nmon for linux版本中磁盘I/O没有细分Read I/O和Write I/O。

由于nmon对磁盘采集的数值来自block layer层,因此这里的I/O次数与程序API、file system等上层提交的I/O次数不一样。只有真正触发磁盘的I/O才会在这里被统计,如果某个应用只是频繁只读同一个文件,fread()只有开始时会触发磁盘I/O,之后的fread()只在file system cache里操作,这里讲不会体现。

13.JFSFILE

本Sheet显示当前服务器中所有文件系统的磁盘占用百分比情况。

当某个文件系统的路径在采集间隔期内占用增长很快时,绿色的Max会有一定显示,此时需要关注是否文件读写过多。

14.MEM

本Sheet显示当前服务器内存使用情况,包含物理内存和Swap空间,由于内容较多,因此仅选主要的介绍。

●memtotal:显示当前服务器物理内存大小,与Sheet BBBP中的MemTotal一致。

●swaptotal:显示当前服务器Swap大小,与Sheet BBBP中的SwapTotal一致。

●memfree:显示当前服务器在采集间隔内空闲内存大小,对于有大量文件读写的系

统,memfree可能会持续减少,这并不表明一定存在内存泄露。

●swapfree:显示当前服务器在采集间隔内Swap空闲大小,如果Swap空闲一直减

少说明有很多页面换出,需要关注内存是否不够了,或有程序的内存泄露。

●cached:显示当前服务器在采集间隔内用于缓存打开文件的Cache占用大小。对于

有文件读写,cached会持续增加,因为它起到文件系统的缓存作用。

●buffers:显示当前服务器在采集间隔内用户缓存块设备的Buffer占用大小。对于

有文件读写的系统,buffers同样会持续增加。

●active:显示当前服务器在采集间隔内正在被应用程序使用的内存大小,一般程序

变量申请大量内存时影响该值变化(C里频繁malloc时该值变大,free后该值减

小)。

●inactive:显示当前服务器在采集间隔内一段时间不被应用程序使用的内存大小,

一般程序读文件时(fclose后内存可能标记为incative)影响该值的变化。

建议在本Sheet再手动增加一列memtotal-memfree-cached-buffers的值,以便查看程序本身的内存占用,如果程序有明显的内存泄露,可以看到曲线的明显上升的。该曲线可以

对照Sheet TOP里对具体应用的Size、ResSet、ResData等列进行分析。

如上图,在一个存在内存泄露的服务器上(真实项目),随着时间的增长应用程序本身的内存(total-free-cache-buffer)曲线一直上涨,对应有内存泄露的程序的ResSet也一样上涨,而此时memfree一直很低,导致用来缓存文件的cache被挤压,曲线一直降低,而且swap空间也被使用到了,swapfree也在减少。

https://www.wendangku.net/doc/ad14604407.html,

本Sheet显示当前服务器所有以太网口的吞吐率(KB/s)。Read表示接收的数据,Write 表示发送的数据。

相关文档