性能测试【二】:nmon的常用操作
性能测试服务器信息监控
1、nmon介绍说明
- nmon主要记录以下方面的数据:
- CPU占用率;
- 内存使用情况;
- 磁盘I/O速度、传输和读写比率;
- 文件系统的使用率;
- 网络I/O速度、传输和读写比率、错误统计率与传输包的大小;
- 消耗资源最多的进程;
- 计算机详细信息和资源;
- 页面空间和页面I/O速度;
- 用户自定义的磁盘组;
- 网络文件系统;
- 执行步骤
- 第一步:执行nmon工具命令,nmon工具会将输出的内容显示到计算机屏幕同时生成一份nmon文件;
- 第二步:将生成的nmon文件导出到Windows操作系统,使用分析工具对生成的数据文件进行分析;
- 第三步:该分析工具会将收集到的数据绘制成相关的图表,供分析使用;
2、软件下载
2.1、Nmon下载地址
https://nmon.sourceforge.io/pmwiki.php?n=Site.Download
其实nmon就是shell脚本,nmon文件运行时调用其他的文件,生成性能数据,这个工具运行时也是通过执行nmon脚本接受参数。
https://nmon.sourceforge.io/pmwiki.php?n=Site.Nmon-Analyser
2.2、Nmonanalyser下载地址
https://nmon.sourceforge.io/pmwiki.php?n=Site.Nmon-Analyser
3、nmon使用
3.1、将nmon上传至/usr/local/src目录下,并解压
mkdir -p /usr/local/src/nmon
tar -xf nmon16m_helpsystems.tar.gz -C /usr/local/src/nmon
3.2、解压后根据自己系统的实际版本查找相应的使用命令,并给命令赋予可执行的权限
cat /etc/redhat-release
chmod +x nmon_x86_64_centos7
3.3、赋予权限后,执行该命令会,显示结果如下图:
./nmon_x86_64_centos7
在完成配置后,通过一些快捷键调取关心的系统资源指标进行显示,如按键“C”可以查看CPU相 关信息;按键“D”可以查看磁盘信息;按键“T”可以查看系统的进程信息;“M”对应内存、“N”对应网络等等,完整的快捷键对应内容可以通过帮助(按键 “H”)查看,可以显示Linux系统CPU、内存、进程信息,包括了CPU的用户、系统、等待和空闲状态值,可用内存、缓存大小以及进程的CPU消耗等详细指标。该种方式显示信息实时性强,能够及时掌握系统承受压力下的运行情况,每颗CPU利用率是多少、内存使用多少、网络流量多少、磁盘读写……这些数据均是实时刷新,一目了然。常见的快捷键。
参数 | 用法 |
---|---|
c | 带条形图的CPU利用率统计信息(CPU核心线程) |
m | 内存和交换统计 |
d | 磁盘I/O繁忙百分比&每秒读写数据量KB/5图 |
r | 资源:机器类型,名称,缓存详细信息和操作系统版本以及Distro+LPAR |
t | top进程,1基础、3性能、4大小、5I/O仅root用户可用 |
n | 网络统计信息和错误(如果没有错误,则消失) |
j | 文件系统,包括日记文件系统 |
k | 内核统计信息运行队列,上下文切换,派生,平均负载和正常运行时间 |
U | CPU使用率统计信息user,user_nice,system,idle,iowait,irq,softirg,steal,guest,guest_nice |
u | 进程详细信息 |
输入相应的key值可以查看相应的属性,如下图:
3.4、配置环境变量
- 如上配置后,如果使用该命令需要找到该命令的详细路径才能使用,这样不是很方便,所以我们需要将nmon的命令添加到系统环境变量中去,以方便我们可以在任何地方都可以使用该命令。
- 修改启动文件名称:
mv nmon_x86_64_centos7 nmon
./nmon //执行命令
- 添加到环境变量中:
# vim /etc/profile (在profile中写入以下两行内容)
PATH=$PATH:/usr/local/src/nmon ($PATH:后为命令的路径)
export PATH
- 保存退出
- 使配置文件立即生效
# source /etc/profile
# nmon (在任何目录下执行nmon命令启动nmon)
3.5、采集监控数据
为了配合性能测试,我们往往需要将一个时间段内系统资源消耗情况记录下来,这时可以使用命令在远程窗口执行命令:
>/usr/local/src/nmon
>./nmon -f -t -s 5 -c 100
- 参数说明:
-s 5 每隔n秒抽样一次,这里为1秒
-c 100 取出多少个抽样数量,这里为100,即监控=5*100/100
-f 按标准格式输出文件名称:<hostname>_YYMMDD_HHMM.nmon
-t为最消耗资源的进程
-m后跟指定目录 //如果不指定目录会在该命令的源目录下生成相应的监控文件
参数 | 用法 |
---|---|
-f | 标准输出到表格文件,默认-s300-c288,为24小时,输出文件格式为:hostname_YMD_HHMM.nmon |
-F | 类似-f,但是支持指定输出文件的名称 |
-a | GPU加速,统计信息 |
-b | 切换黑白和彩色模式 |
-c | 总统计次数 |
-s | 数据统计间隔时间,单位为:秒 |
-d | 最大的磁盘数,默认256 |
-D | 与-g一起使用以添加磁盘等待/服务时间和运行中状态 |
-g | 用户定义的磁盘组获取数据:生成BBBG和DG行 |
-I | 设置忽略进程和磁盘繁忙阈值(默认为0.1%),不要使用小于此百分比的百分比保存或显示proc/磁盘 |
-J | 关闭日志文件系统统计信息收集(可能导致自动挂载NFS出现问题) |
-l | 数据捕获中的每行磁盘数可避免电子表格宽度问题。默认值为150。EMC=64。 |
-m | 把输出文件保存到指定文件夹。通过cron启动nmon时有用 |
-M | 为每个CPU线程添加MHz统计信息。某些POWER8型号CPU内核的频率可能不 |
-N | 包括适用于V2,V3和V4的NFS网络文件系统 |
-p | mon启动时将输出PID。在脚本中很有用,可捕获PID以便以后安全停止。 |
-r | 在基准测试中用于记录运行详细信息,以供以后分析[默认主机名] |
-t | 在输出中包括top流程 |
-T | -t增强,它将命令行参数保存在UARG部分中 |
-U | 包括LiuX10CPU使用率统计信息(文件中的CPUUTIL行) |
这么多参数,并不需要所有都记住,只需要重点记住几个即可。
输入命令后nmon目录的下面多了一个以.nmon结尾的文件夹,并且容量一直在增加。
因为这个监控文件,持续在写入资源数据,直至100个监控点收集完成,这些操作均自动完成,无需手工干 预,测试人员可以继续完成其他操作。如果想停止该监控,需要通过“#ps –ef|grep nmon”查询进程号,然后杀掉该进程以停止监控。
3.6、生成图形化报表
通过后台监控和定期监控,我们可以得到扩展名为nmon的监控文件,这些文件记录着系统资源的数据,需要配合分析工具(nmon analyser)进行解读。
-
将/usr/local/src/nmon/logs文件夹下生成的命令通过sz命令下载到本地
-
在本地解压nmon_analyser_v52_1.zip,解压后双击打开nmon_analyser_v52_1.xlsm,点击Analyse nmon data导入nmon文件,生成报告结果。
-
点击界面上的Analyse nomn data按钮,将下载的下来的文件添加进去
最后会生成一个xlsm文件,入下图:
注意事项
nmon analyser需要借助Excel的宏,WPS默认没有安装宏,即使你下载了插件,貌似也不能正常使用。所以还是老老实实的使用Microsoft的吧,小编使用的2007,能够正常的生成报表。
生成的报表中的参数意义:
sheet 名称 | sheet 含义 |
---|---|
SYS_SUMM | 系统汇总,蓝线为©Pu占有率变化情沉,粉线为磁盘IO的变化情况; |
AAA | 关于操作系统以及nmon本身的一些信息 |
BBBB | 系统外挂存储容量以及存储类型; |
BBBC | 系统外挂存储位置、状态以及描述信息; |
BBBD | 磁盘适配器信息;(包含磁盘适配器名称以及描述) |
BBBE | 包含通过Isdev命令获取的系统设备及其特征,显示vpaths和hdisks之间的映射关系; |
BBBG | 显示磁盘组详细的映射关系; |
BBBL | 逻辑分区(LPAR)配置细节信息; |
BBBN | 网络适配器信息; |
BBBP | vmtune,schedtune,emstat和Isattr命令的输出信息; |
CPUnn | 显示执行之间内CPU占用情况,其中包含user%、sys%、wait%和idle%; |
CPU_ALL | 所有CPU述,显示所有CPU平均占用情况,其中包含SMT状态; |
CPU_SUMM | 每一个CPU在执行时间内的占用情况,其中包含user%、sys%、wait%和ide%; |
DGBUSY | 磁盘组每个hdisk设备平均占用情况; |
DGREAD | 每个磁盘组的平均读情况; |
DGSIZE | 每个磁盘组的平均读写情况(块大小); |
DGWRITE | 每个磁盘组的平均写情况; |
DGXFER | 每个磁盘组的/O每秒操作; |
DISKBSIZE | 执行时间内每个hdisk的传输块大小; |
DISKBUSY | 每个hdisk设备平均占用情况; |
DISKREAD | 每个hdisk的平均读情况; |
DISKWRITE | 每个hdisk的平均写情况; |
DISKXFER | 每个hdisk的/O每秒操作; |
DISKSERV | 本sheet显示在每个收集间隔中hdisk的评估服务时间(未响应时间) |
DISK_SUMM | 总体disk读、写以及/O操作; |
EMCBSIZE/FAStBSIZE | 执行时间内EMC存储的传输块大小; |
EMCBUSY/FAStBUSY | EMC存储设备平均占用情况; |
EMCREAD/FAStREAD | EMC存诸的平均读情况; |
EMCWRITE/FAStWRITE | EMC存储的平均写情况, |
EMCXFER/FAStXFER | |
EMCSERV/FAStSERV | |
ESSBSIZE | 本sheet记录在系统中每个vpaths下读写操作的平均数据传输大小(blocksize)Kbytes |
ESSBUSY | 本sheet记录使用ESS系统的每个vpaths下的设备繁忙情况 |
ESSREAD | 本sheet记录在系统中每个vpaths,下读取操作的data rate(Kbytes/sec) |
ESSWRITE | 本sheet记录在系统中每个vpaths下写入操作的data rate(Kbytes/sec) |
ESSXFER | 本sheet记录在系统中每个vpaths下每秒的IO操作 |
ESSSERV | 本sheet显示在每个收集间隔中vpaths的评估服务时间(未响应时间) |
FILE | 本sheet包含nmon内核内部的统计信息的一个子集,跟sar报告的值相同 |
FRCA | |
IOADAPT | 对于BBBCsheet每个IO适配器列表,包含了数据传输速度为读取和写入操作(千字节/秒)和1/O操作执行的总数量 |
JFSFILE | 本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的空间百分比 |
JFSINODE | 本sheet显示对于每一个文件系统中,在每个间隔区间正在被使用的inode百分比 |
LARGEPAGE | 本图表显示Usedpages和Freepages随着时间的变化: |
LPAR | |
MEM | 本sheet主图上显示空闲实存的数量 |
MEMUSE | 除%comp参数外,本sheet包含的所有项都和vmtune命令的报告中一样 |
MEMNEW | 本sheet显示分配的内存片信息,分三大类:用户进程使用页,文件系统缓存,系统内核使用页 |
NET | 本sheet显示系统中每个网络适配器的数据传输速率(千字节/秒) |
NETPACKET | 本sheet统计每个适配器网络读写包的数量;这个类似于netpmon-Odd命令 |
NFS_sheets | |
PAGE | 本sheet统计相关页信息的记录 |
PROC | 本sheet包,含nmon内核内部的统计信息。其中RunQueue和Swap-in域是使用的平均时间间隔,其他项的单位是比率/秒 |
PROCAIO | 本sheet包含关于可用的和active的异步IO进程数量信息. |
TOP | |
UARG | |
WLM_sheets | |
ZZZZ | 本sheet自动转换所有nmon的时间戳为现在真实的时间,方便更容易的分析 |
重点需要关注的sheet:SYS_SUMM CPU_ALL MEM
CPU平均占用率可以在SYS_SUMM看
也可以在CPU_ALL看。
内存使用率计算:(memtotal-memfree-cached-)/memtotal*100%
3.7、定时任务
- 除配合性能测试的短期监控,我们也可以实现对系统的定期监控,作为运营维护阶段的参考。定期监控实现如下:
- 1、执行命令:#crontab -u 用户 –e
- 2、 在最后一行添加如下命令:
0 8 * * 1,2,3,4,5 /usr/local/src/nmon_x86_64_centos7 -f -N -m /nmon/log -s 30 -c 1200
表示:
周一到周五,从早上08点开始,监控10个小时(到18:00整为止),输出到/nmon/log
自动按天采集数据:
在 crontab 中增加一条记录:
0 0 * * * root nmon -s300 -c288 -f -m /home/ > /dev/null 2>&1
300*288=86400 秒,正好是一天的数据。