nmon需严格匹配系统架构与发行版版本,如x86_64+CentOS 7应选nmon16m_x86_64_rhel7;采集用-s 5 -c 720(每5秒1次、共1小时);报表必须用Microsoft Excel打开最新版nmon_analyser_v50_5.xlsm并启用宏,禁用WPS/中文路径/时间跳变文件。

nmon 不需要图形界面、不依赖数据库、也不用装一堆 Python 包,直接下载二进制就能跑;但导出报表这一步,必须在 Windows 上用 Excel 打开 nmon_analyser 才能生成图表——这是最常卡住的地方。
怎么选对 nmon 二进制文件
Linux 下的 nmon 不是通用可执行文件,它严格绑定系统架构和发行版。选错就报错:bash: ./nmon_x86_64_centos6: No such file or directory(即使文件明明存在),本质是 glibc 版本或 CPU 指令集不兼容。
- 先确认系统:运行
uname -m看是x86_64还是aarch64;再跑cat /etc/redhat-release或lsb_release -is确认发行版和大版本(如 CentOS 7、Rocky 8、Ubuntu 22.04) - 去 SourceForge nmon 页面 找对应命名的文件,例如
nmon16m_x86_64_rhel7或nmon16m_x86_64_ubuntu20;别用_generic后缀的,它大概率不 work - 下载后加执行权限:
chmod +x nmon16m_x86_64_rhel7,建议重命名为nmon并软链到/usr/local/bin/,避免每次都要写全路径
后台采集数据时 -s 和 -c 的实际含义
-s 是采样间隔(秒),-c 是总次数,两者相乘才是总时长。但很多人误以为 -c 是“持续多少秒”,结果设成 -c 300 却只跑了 5 分钟——其实它只采了 300 次,如果 -s 是 1,那就是 5 分钟;如果 -s 是 5,那就是 25 分钟。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 推荐组合:
nmon -f -s 5 -c 720→ 每 5 秒采一次,共 720 次 = 1 小时,文件大小可控,Excel 解析不卡 - 慎用
-s 1:高频采集会导致 .nmon 文件急速膨胀,且 Linux 内核统计本身有最小刷新粒度,1 秒未必比 2 秒更准 - 加
-t可记录 top 进程(CPU 占用前 10 的进程名+PID),但会显著增大文件体积;加-T则记录所有进程快照,仅调试用,生产环境别开
为什么 .nmon 文件打不开、没图表、报错 #VALUE!?
根本原因只有一个:你没用对 nmon_analyser 版本,或者没按规范操作。这个 Excel 工具是宏启用的 .xlsm 文件,它对 Excel 版本、宏设置、文件路径长度都敏感。
- 必须用 Microsoft Excel(2010 及以上),WPS / LibreOffice 打开会丢宏、无按钮、无法解析
- 首次打开要启用宏:点击「启用内容」,否则「Analyse nmon data」按钮根本不显示
- .nmon 文件不能放在中文路径、带空格路径或 OneDrive/腾讯微云等同步盘根目录下,Excel 宏读取会失败;建议放到桌面或
C:\temp\ - 用最新稳定版
nmon_analyser_v50_5.xlsm(IBM 官方 Wiki 提供),别用 v33/v34 等老版本,它们不支持 nmon16m 之后新增的指标(如 cgroup、NVMe 设备名)
导出报表后发现某张图全是空白或数据断层
不是工具坏了,而是采集期间系统时间被跳变过(NTP 同步、手动改时间、VM 时间漂移),nmon 的时间戳是相对起始时刻的秒数,一旦系统时间回拨,后续时间戳就变成负数或乱序,nmon_analyser 直接跳过这些行。
- 检查原始 .nmon 文件:用
head -20 hostname_260411_1000.nmon看前几行时间字段是否单调递增 - 若发现时间倒流(比如第 50 行是
T0050,17:22:30,第 51 行变成T0051,17:22:28),说明采集过程发生了时间校正,该文件不适合做趋势分析 - 预防方式:监控前运行
sudo chronyc tracking确认 NTP 偏移 sudo vmware-toolbox-cmd time sync(VMware)或sudo systemctl restart systemd-timesyncd(KVM)
真正麻烦的从来不是启动 nmon,而是确保从采集那一刻起,时间连续、路径干净、Excel 宏就位——这三个点漏掉任何一个,后面花两小时调图表都是白忙。


















