nmon的二次开发

最近需要在linux下监视某几个进程,并且生成报表来研究。发现这款open source的工具 nmon在统计方面做得非常棒,只可惜不支持统计指定的进程。唯一有一个top的指令,可以按照cpu占用率排序的进程,看了源代码,发现一些cpu占用为0的就不再统计了,不符合我的需求。

可以在nmon的官方网站下载到源代码。我习惯于eclipse+cdt做C开发,拷贝到某个工程下面,分析一下源代码。

需要做以下的事情,

1.增加一个参数 -O <processName~processName~...> ,类似这样可以指定需要监视的进程,其他进程就忽略。

2.切割 ~ 分开的进程名,得到的进程放入数组。

3.每一次NMON loop循环的时候(循环次数由 -c <次数>指定),写入 nmon的分析文件。根据 nmon analyser v33g.xls 的VB程序可以写入以下格式的数据,就可以直接用nmon analyser打开,打开后就可以看到柱状图和线性图,刚好满足我的需要。之前我还去更改nmon analyser的VB脚本,弄好后还不如原来默认的效果好。

格式 :  <sheetname>,<A1 name>,<processName1>,<processName2>,...<processNameN>


最后代码重新编译,生成nmon_x86_m2可执行文件。

运行以下命令:

./nmon_x86_m2 -s2 -c30 -fT -O scanCC~retroBB~tgpTT~tgpUU 

最后运行生成localhost_120420_1802.nmon文件.

拷贝这个文件到windows系统,用nmon analyser v33g.xls打开后,就可以看到自己指定的进程统计。


nmon version 12f for Redhat linux, 我在ubuntu 10.10下编译成功,编译过程如下: make cc -o nmon_power_rhel3 lmon.c -g -O2 -D JFS -D GETUSER -Wall -D LARGEMEM -lncurses -g -D POWER lmon.c:26: fatal error: ncurses.h: 没有那个文件或目录 compilation terminated. make: *** [nmon_power_rhel3] 错误 1 zale@zale-infohold:~/下载/nmon-12f$ zale@zale-infohold:~/下载/nmon-12f$ sudo apt-get install libncurses5-dev [sudo] password for zale: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动安装的并且现在不需要了: nvidia-cg-toolkit libogremain-1.7.3 libogrepaging-1.7.3 libogreterrain-1.7.3 libmygui 使用'apt-get autoremove'来卸载它们 下列【新】软件包将被安装: libncurses5-dev 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 需要下载 1,580kB 的软件包。 解压缩后会消耗掉 6,693kB 的额外空间。 获取:1 http://archive.ubuntu.com/ubuntu/ maverick/main libncurses5-dev i386 5.7+20100626-0ubuntu1 [1,580kB] 下载 1,580kB,耗时 53秒 (29.4kB/s) 选中了曾被取消选择的软件包 libncurses5-dev。 (正在读取数据库 ... 系统当前共安装有 236248 个文件和目录。) 正在解压缩 libncurses5-dev (从 .../libncurses5-dev_5.7+20100626-0ubuntu1_i386.deb) ... 正在处理用于 man-db 的触发器... 正在设置 libncurses5-dev (5.7+20100626-0ubuntu1) ... zale@zale-infohold:~/下载/nmon-12f$ make cc -o nmon_power_rhel3 lmon.c -g -O2 -D JFS -D GETUSER -Wall -D LARGEMEM -lncurses -g -D POWER zale@zale-infohold:~/下载/nmon-12f$ ls -l 总计 496 -rw-r--r-- 1 zale zale 154481 2009-11-17 07:26 lmon12f.c -rw-r--r-- 1 zale zale 154481 2011-07-31 19:37 lmon.c -rw-rw-rw- 1 zale zale 2478 2009-03-06 16:45 makefile -rwxr-xr-x 1 zale zale 191075 2011-07-31 19:40 nmon_power_rhel3 zale@zale-infohold:~/下载/nmon-12f$ cc --version cc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
### Nmon 系统监控工具的功能介绍 Nmon(Nigel’s Monitor)是一款功能强大且高效的性能监控工具,适用于AIX与多种Linux操作系统环境。该工具能够实现实时捕获系统资源使用状况,并提供详尽的数据记录[^1]。 #### 主要特点 - **全面的监控能力**:可以监测CPU、内存、磁盘I/O、网络接口等多个方面的情况; - **低开销特性**:即使是在高负载环境下运行也不会占用过多计算资源,一般情况下仅消耗不到2% 的 CPU周期,在较新的硬件平台上甚至更低至1%以内[^4]; - **支持离线分析**:不仅可以在命令行界面直接查看当前状态,还允许导出数据供后续深入研究或报告生成之用; - **易于部署和操作**:安装过程简单快捷,配置选项灵活多样,满足不同场景下的需求[^3]。 ### 安装方式 针对CentOS这类基于Red Hat的企业级Linux发行版而言,可以通过yum源或者手动下载rpm包来进行nmon软件包的安装工作[^2]。 ```bash sudo yum install nmon -y ``` 如果遇到无法通过官方仓库获取最新版本的情形,则可以从第三方站点寻找适合目标平台架构的预编译二进制文件并依照说明完成本地安装流程。 ### 数据收集模式 为了实现持续性的历史趋势跟踪以及长期存储目的,可采用定时采样机制来定期保存快照信息: ```bash ./nmon -s<间隔秒数> -c<循环次数> -f -m <输出路径> ``` 例如设置每隔20秒采集一次样本共执行三次并将最终结果存放在`/usr/local/nmon_output`目录下[^5]。 ### 可视化展示手段 除了基本的文字列表形式外,借助专门开发出来的辅助应用程序——如nmon_analyzer——还可以进一步加工原始日志资料从而得到更加直观易懂图表型报表。 ```python import pandas as pd from matplotlib import pyplot as plt data = pd.read_csv('path_to_nmon_data.csv') plt.plot(data['timestamp'], data['cpu_usage']) plt.xlabel('Time') plt.ylabel('CPU Usage (%)') plt.title('System Performance Over Time') plt.show() ``` 上述Python脚本片段展示了如何读取由nmon产生的CSV格式文档中的时间戳列和对应的CPU利用率数值绘制折线图的过程。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值