nmon使用方法

安装方法

方法1:

最简单方法:

#dnf install nom

验证

执行命令:

#nmon

方法2:

下载安装包安装,下载地址

官网:nmon and njmon | Site / Download

或者:https://sourceforge.net/projects/nmon/files/

根据自己的系统平台选择合适的安装包,本文使用的虚拟机openEuler系统,X86平台,因此选择:nmon16p_32_binaries_feb_2024.tar.gz

解压nmon16p_32_binaries_feb_2024.tar.gz

#tar -xzvf nmon16p_32_binaries_feb_2024.tar.gz

然后选择对应的平台验证,例如:

#./nmon_x86_64_oel9

交互使用

直接运行 nmon 进入交互式界面,通过快捷键切换监控视图:

常用快捷命令说明

1、# c

查看CPU相关信息

2、# m

查看内存相关信息

3、# d

查看磁盘相关信息

4、# n

查看网络相关信息

5、# t

查看相关进程信息

6、# h

查看帮助相关信息

7、# q

退出nmon

例如,按c键:

数据记录与分析

保存监控数据

使用 -f 参数后台运行并生成 CSV 文件

#nmon -f -s 10 -c 60 -m /opt/software/nmon1/

-f 监控结果以文件形式输出,默认机器名+日期.nmon格式

-F 指定输出的文件名,比如test.nmon,如果没有-F参数指定文件名称,则文件默认命名规则:hostname_YYMMDD_HHMM.nmon

-s 每隔多少秒抽样一次,单位是秒,上述命令配置是10s;

-c 采样次数,上述命令配置是60,即监控总时长为10*60=600秒

-m 指定生成的文件目录

手动结束任务或等待自动完成,建议用 pkill 终止:

#pkill nmon

分析监控数据

1.使用 nmon Analyzer

将 .nmon 文件转换为可视化报告(需 Excel):

下载 nmon Analyzer。

用 Excel 打开工具,加载 .nmon 文件,自动生成图表报告。

  1. 命令行分析

直接用脚本或工具(如 awk)解析 CSV 文件:

#awk -F, '/CPU_ALL/ {print 4 "," 5 "," $6}' hostName1_250708_1508.nmon

高级用法

  1. 定时任务监控

通过 crontab 定期运行 nmon,以下示例每天 9 点到 18 点每小时监控 5 分钟:

0 9-18 * * * nmon -f -s 300 -c 12 -m /opt/software/nmon1

  1. 监控特定子系统

通过参数指定需要监控的模块:

nmon -f -t -T -p -r test_run

-t:包含 Top 进程统计。

-T:输出网络和磁盘的详细信息。

-p:记录进程状态。

结果解读关键指标

重点关注:SYS_SUMM,CPU_ALL,CPU_SUMM,DISK_SUMM,DISKBUSY,MEM,NET

每个指标对应结果文件中的同名sheet页,每个页面除了采样数据,还提供了对应的图表数据。在实际结果分析时,一般选择性能测试中所采样的数据,也就是说,如果你的nmon程序是在性能测试前就启动的,或者性能测试结束后仍然有采样的,此时的结果文件会包括一些非相关的数据。所以,我的建议是:在性能测试开始后启动nmon监控,通过设置监测时长使nmon在性能测试结束前。

SYS_SUMM

系统汇总页面(SYS_SUMM):

该页面主要显示系统CPU(蓝线)和I/O(粉红线)的使用情况,其中坐标左纵轴为cpu(user%+sys%)使用率,横轴为运行时长,右纵轴为磁盘传输次数(Disk xfers),坐标图下方展示统计数据。

其中,User%为用户进程的CPU占比

Sys%为系统和中断的CPU占比

Wait%为进程阻塞等待完成一次IO请求的CPU占比

Idle%为空闲CPU占比。通常,CPU被充分使用的经验值是:User%:65%-70%;Sys%:30%-35%;Idle%:0%-5%。

CPU使用情况(CPU_ALL、CPU_SUMM)

CPU_ALL页面展示在采样周期内服务器的CPU的使用情况,实际上,与SYS_SUMM展示的CPU数据是相同的,区别只是前者使用线状图表示。

  • User%:用户态程序占用的 CPU 时间。
  • Sys%:内核态操作的 CPU 时间。
  • Wait%:CPU 等待 I/O 完成的时间(若 >10%,可能磁盘瓶颈)。
  • Idle%:空闲 CPU 百分比。
  • 图表:时间曲线展示各指标变化,帮助定位 CPU 峰值。

CPU Sheet:每个逻辑 CPU 核心的独立利用率(适用于多核分析)。

  • 单核过载:特定核心负载过高可能因进程绑定或任务分配不均。

CPU_SUMM页面展示的是每颗CPU的使用情况,与使用top命令,按数字键"1"显示各颗CPU的效果是一样的。

磁盘使用情况(DISK_SUMM、DISKBUSY)

DISK_SUMM页面主要显示磁盘读、写、IO情况,其中,需要注意的是:某一时间点的磁盘读写数据(Disk Read KB/s\Disk Write KB/s)等于该时间点上所有磁盘和分区的Read/Write的速率(KB/s)之和,分别与页面DISKREAD、DISKWRITE对应;某一采集时间点的IO/sec等于页面DISKXFER中该时间点上所有磁盘和分区的IO/sec之和。因此,该时间点上的I/O值统计是会有重复的。

DISKBUSY页面主要显示各个磁盘及分区的繁忙程度,是磁盘使用时间和全部时间的比值,即磁盘有百分之多少时间是活动的。通常,根据该页面显示的磁盘百分比数据,可以快速了解该磁盘的使用情况。

内存使用情况(MEM)

MEM页面主要显示系统总内存、已用内存、可用内存、swap、cached等内存统计信息,统计单位为MB,图表左轴有个"千"字,单位换算后,memfree约19G,如图:

网络使用情况(NET)

NET页面显示服务器各个网络适配器读写数据情况,单位KB/s,注意与带宽单位(bps)的换算,1MB/s = 8Mbps,如图:

CPU 使用率

  • User%: 用户程序占用。
  • Sys%: 系统内核占用。
  • Wait%: I/O 等待时间(高值可能表示磁盘瓶颈)。

内存

  • MemFree: 空闲内存。
  • Cached: 缓存内存(可被快速释放供程序使用)。
  • Swap 使用率: 过高可能需增加物理内存。

磁盘 I/O

  • Disk KB/s: 每秒读写数据量。
  • IO/s: 每秒 I/O 操作次数(高值可能需优化磁盘配置)。

网络

  • Recv/s 与 Trans/s: 网络接收/发送速度,警惕流量突增。

典型性能问题诊断

1. CPU 问题

  • 症状:User% 或 Sys% 长期高于 80%。
  • 操作 :结合 PROC Sheet 查找高 CPU 进程,优化代码或调度策略。

2. 内存不足

  • 症状:Swap 使用量持续增加,Page In/Out 频繁。
  • 操作:扩展物理内存或优化应用内存管理。

3. 磁盘瓶颈

  • 症状:Disk Busy% >70% 或 Wait% 伴随高值。
  • 操作:升级为 SSD、优化 I/O 调度算法或使用 RAID 分散负载。