1 NMON介绍
Nmon由 IBM 开发并已开源 (Nmon for linux 版本已经在 2009 年 7 月 27 日开放源码 ) ,是收集 AIX 或 Linux 主机的性能数据并分析的工具,使用简单易用。主要有两个,一个是 nmon 采集数据的工具,一般名称为 nmon_** ,例如 nmon_aix5.3 ,另一个是分析结果的工具,它是一个 excel 的文件,一般名称为 nmon analyser v***.xls ,例如 nmon analyser v33g.xls 。Nmon在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。
nmon_analyser 工具以 NMON 性能工具生成的文件作为输入,然后将它们转换为 Microsoft Excel 电子表格,并自动地生成相应的图形。
Nmon运行不会占用过多的系统资源,通常情况下CPU利用率不会超过2%。
针对不同的操作系统版本,Nmon有相应版本的程序,需要注意的是该文件需要执行授权操作方可正常运行。Nmon最方便之处就是能迅速抽取不同维度的性能概览数据。
Nmon是Linux的性能检测工具。该工具能给管理员提供大量重要的检测信息。能够通过该工具显示CPU、内存、网络、磁盘、文件系统、NFS、进程、资源和功率信息。Nmon 工具可以为 AIX和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:
- CPU 使用率
- 内存使用情况
- 内核统计信息和运行队列信息
- 磁盘 I/O 速度、传输和读/写比率
- 文件系统中的可用空间
- 磁盘适配器
- 网络 I/O 速度、传输和读/写比率
- 页面空间和页面速度
- CPU 和 AIX 规范
- 消耗资源最多的进程
- IBM HTTP Web 缓存
- 用户自定义的磁盘组
- 计算机详细信息和资源
- 异步 I/O,仅适用于 AIX
- 工作负载管理器 (WLM),仅适用于 AIX
- IBM TotalStorage? Enterprise Storage Server? (ESS) 磁盘,仅适用于 AIX
- 网络文件系统 (NFS)
- 动态 LPAR (DLPAR) 更改,仅适用于面向 AIX 或 Linux 的 pSeries p5 和 OpenPower
2 Nmon 安装与使用
2.1 安装
该工具是一个独立的二进制文件(不同的 AIX 或 Linux 版本中该文件也有所不同)。安装过程非常简单:
1. 将 nmon_x86_64_sles11文件复制到计算机。
2. 修改nmon_x86_sles11的文件权限,chmod 777 nmon_x86_64_sles11
3. 要启动 nmon 工具,输入 ./ nmon_x86_sles10。
2.2 运行
Nmon可以交互式运行
1. 启动该工具 ./ nmon_x86_sles10
2. 使用单键命令来查看您所需要的数据。例如,要获取 CPU、内存和磁盘统计信息,启动 Nmon 并输入: c m d
3. 获取相关的帮助信息,按 h 键。
使用下面这些键来切换显示状态:
c = CPU 显示CPU相关性能信息数据
l = CPU Long-term 显示最近一段时间的CPU相关性能信息数据
- = Faster screen updates 加快屏幕更新速度
m = Memory 显示内存相关性能信息数据
j = Filesystems 显示日志文件系统相关性能信息数据
+ = Slower screen updates 减慢屏幕更新速度
d = Disks 显示磁盘I/O相关性能信息数据
n = Network 显示网络I/O相关性能信息数据
V = Virtual Memory 显示虚拟内存相关性能信息数据
r = Resource 显示系统资源相关性能信息数据
N = NFS 显示NFS文件系统相关性能信息数据
v = Verbose hints 简单报告CPU、使用最频繁的磁盘的使用率(性能压力)是否过高,给出的结果为OK/Warnings/Danger。对于CPU来说,使用率(busy程度)低于80%即为OK,高于80%即为Warnings,高于90%即为Danger;对于磁盘来说,使用率(busy程度)低于40%即为OK,高于40%即为Warnings,高于60%即为Danger;
k = kernel 显示操作系统内核运行状态相关性能信息数据
t = Top-processes 显示占用系统资源最多的进程的状态信息
. = only busy disks/procs 仅显示处于busy状态的磁盘IO/进程的性能信息数据
h = more options 打印帮助信息
q = Quit 退出Nmon
2.3 捕获数据到文件
捕获数据到文件,只要运行带 -f 标志的 Nmon 命令。执行nmon –f ***后,nmon 将转为后台运行。要查看该进程是否仍在运行,可以输入: ps -ef | grep nmon。
示例:
每1秒捕获数据快照,捕获20次
nmon –f -s 1 -c 20
每30秒捕获数据快照,捕获120次,包含进程信息
nmon –ft -s 30 -c 120
命令将在当前目录中创建输出文件,其名称为: <hostname>_date_time.nmon。该文件采用逗号分隔值 (CSV) 的格式,并且可以将其直接导入到电子表格中,可进行分析和绘制图形。
4 NMON使用方法
实际工作中,Nmon有三种常用的使用模式,分别是实时监控、后台监控和定期监控模式。下面分别加以介绍。
1、实时监控:在完成配置后,只需要“#./nmon”命令即可运行程序,通过一些快捷键调取关心的系统资源指标进行显示,如按键“C”可以查看CPU相关信息;按键“D”可以查看磁盘信息;按键“T”可以查看系统的进程信息;“M”对应内存、“N”对应网络等等,完整的快捷键对应内容可以通过帮助(按键“H”)查看,可以显示Linux系统CPU、内存、进程信息,包括了CPU的用户、系统、等待和空闲状态值,可用内存、缓存大小以及进程的CPU消耗等详细指标。该种方式显示信息实时性强,能够及时掌握系统承受压力下的运行情况,每颗CPU利用率是多少、内存使用多少、网络流量多少、磁盘读写……这些数据实时刷新,一目了然。但是如果我们希望将一段时间的资源情况记录下来,以备后续的分析工作,则需要以另一种方式使用Nmon。
2、后台监控:为了配合性能测试,我们往往需要将一个时间段内系统资源消耗情况记录下来,这时可以使用命令:./nmon -f -s 10 -c 360。说明:
-f :按标准格式输出文件名称:<hostname>_YYYYMMDD_HHMM.nmon
-s :每隔n秒抽样一次,这里为10秒
-c :取出多少个抽样数量,这里为360,即监控=10*360/3600=1小时
该命令启动后,会在Nmon所在目录下生成监控文件,并持续写入资源数据,直至360个监控点收集完成——即监控1小时,这些操作均自动完成,无需手工干预,测试人员可以继续完成其他操作。如果想停止该监控,需要通过“#ps –ef|grep nmon”查询进程号,然后杀掉该进程以停止监控。
3、定期监控:除配合性能测试的短期监控,我们也可以实现对系统的定期监控,作为运营维护阶段的参考。定期监控可通过“#crontab -e”命令实现,在最后一行添加“0 8 * * 1,2,3,4,5 /nmon -f -s 30 -c 1200”,表示:周一到周五,从早上08点开始,监控10个小时(到18:00整为止)。
5 NMON监控结果分析
通过后台监控和定期监控,我们可以得到扩展名为nmon的监控文件,这些文件记录着系统资源的数据,需要配合分析工具进行解读。nmon analyser.xls可以将.nmon文件转化为Excel文件,并生成统计图,直观显示系统资源情况。
nmon_analyser_v33g.xls
在测试过程中,我们往往需要更加详细的信息以分析系统性能情况,如果认为磁盘IO偏高,我们需要进一步获取磁盘的详细信息加以分析,在Nmon结果中打开“DISK_SUMM”标签页结合系统实际设置,可以进一步确定造成问题的原因,如系统日志级别过低等等。NMON能够提供CPU、内存、硬盘、网络等各方面的信息,对于我们的分析工作能够提供很好的数据支持。
另外,我们可以通过一些输出参数的调整以得到偏重不同角度、或不同形式的统计结果,其中比较常用的“Intervals”参数,该参数定义了原始.nmon文件的取值范围,即统计内容取自原始数据的哪部分。因为原始数据是多个采样点的集合,通过设置“Intervals”的开始、结束值。
6 Nmon工具实时监控模式运行截屏
Nmon性能监测工具启动时的截屏如下图所示,其中给出了各个按键触发的相应性能统计数据的监控信息。
按键h触发Nmon给出帮助信息(如下图所示),再次按键h,则关闭帮助信息;
按键r触发Nmon给出Linux操作系统及处理器的相关信息(如下图所示),再次按键r,则关闭该信息;
按键c触发Nmon给出系统某一采样时间内的CPU使用率的相关信息(如下图所示),再次按键c,则关闭该信息;其中U代表用户时间,S代表系统时间,W代表等待I/O完成的时间。空白表示系统Idle的时间。
按键l触发Nmon给出系统过去70个采样点的时间内的CPU使用率的相关信息(如下图所示),再次按键l,则关闭该信息;其中U代表用户时间,S代表系统时间,W代表等待I/O完成的时间。空白表示系统Idle的时间。其中白色的竖直线条是代表移动的采样时间点,一直向右移动,到达最右端后又从最左端开始向右段移动,其中竖直线条中的“+”表示了当前图像中的数据的平均值(也就是过去70个采样点的时间内的CPU平均使用率)
按键m触发Nmon给出系统的内存使用情况的详细信息(如下图所示),再次按键m,则关闭该信息;
按键d触发Nmon给出系统的磁盘及磁盘分区的使用率、读写吞吐量等性能信息(如下图所示),再次按键d,则关闭该信息;R表示磁盘执行读操作,W表示磁盘执行写操作,空白表示磁盘Idle状态。
按键D触发Nmon给出系统的磁盘及磁盘分区的使用率、读写吞吐量、TPS等性能数据的详细信息(如下图所示),再次按键D,则关闭该信息;
按键j触发Nmon给出系统中当前已挂载的日志文件系统及其使用状态的信息(如下图所示,图中根文件系统所在分区已使用70%),再次按键j,则关闭该信息;
按键n触发Nmon给出系统各个网卡的网络I/O的详细信息(如下图所示,图中的系统主要使用eth1网卡),再次按键n,则关闭该信息;
如果超过一定的时间(约5秒钟)没有出现网络错误,将会自动关闭网络错误计数的统计信息,只留下网络I/O的相关信息(如下图所示)。
按键k触发Nmon给出系统内核状态的详细信息(如下图所示),包括运行队列个数、上下文切换次数、Fork子进程次数、中断发生次数、平均负载、平均CPU使用率、系统运行时间、系统Idle时间等等。再次按键k,则关闭该信息;
按键o触发Nmon给出系统各个磁盘分区的使用情况(繁忙程度)的详细信息(如下图所示),图中包含10个磁盘(或分区),按照Key:提示的信息可以看出磁盘0和磁盘2的业务处理的使用在90%以上,其他7个磁盘的则是0%。再次按键o,则关闭该信息;
按键t触发Nmon给出系统的进程的相关信息,默认为模式3,按照CPU使用率的顺序对进程排序(如下图所示)。再次按键t,则关闭该信息;
按键t然后再按1触发Nmon给出系统的进程的相关信息以模式1的方式显示,按照进程优先级顺序对进程排序(如下图所示),同时给出进程的运行状态信息。再次按键t,则关闭该信息;
按键t然后再按4触发Nmon给出系统的进程的相关信息以模式4的方式显示,按照进程占用内存大小的顺序对进程排序(如下图所示)。再次按键t,则关闭该信息;
按键t然后再按5触发Nmon给出系统的进程的相关信息以模式5的方式显示,按照进程产生IO的大小的顺序对进程排序(如下图所示),同时给出进程的运行状态信息。再次按键t,则关闭该信息;