nmon analyser——生成 AIX 性能报告的免费工具,可从 NMON 的输出中生成大量的报告图形。nmon_analyser 工具以 NMON 性能工具生成的文件作为输入,然后将它们转换为 Microsoft Excel 电子表格,并自动地生成相应的图形。
在用nmon_analyser 工具中的“nmon analyser v334.xls”打开.nmon文件时,2003版的Excel跳出个对话框,提示“由于安全级别被设为高,并且没有附加数字签字的可信任证书,因此这些宏被禁用。若要运行这些宏,请将安全级别设置为更低级别,或请求作者使用证书颁发机构锁颁发的证书对宏进行数字签名。”
然后打开2003版的Excel中的“工具”——》“宏”——》“安全行”中的“安全级”选择“低”,而且“可靠发行商”中选择“信任所有安全的加载项和模板”和选择“信任对应XXX的访问”。然后关闭Execl,然后再重新打开Execl就可以使用“宏”了。
注:“宏”:指一系列EXCEL能够执行的VBA语句。当执行一个宏时,EXCEL按照宏语句执行的情况就像VBA代码在对EXCEL进行“遥控”。
1.背景在性能测试过程中,往往需要监控服务器的性能情况,并记录这些性能指标结果。不论是云下数据库服务器还是应用服务器,都可以通过nmon来进行监控,设定打点间隔和打点次数,将性能指标情况保存成nmon文件,并通过工具,如Excel插件Nmon_Analyzer、Java GUI工具nmon visualizer等读取nmon文件内容,分析采集结果。但当监控的服务器数量较多时,依次采集多个nmon文件中的性能指标结果会耗费时间,同时,人工读取和记录数据也可能会出现记录错误的偶然误差。因此我们可以尝试使用自己熟悉的编程语言,如Python等,来开发一款简单易实现的小工具,用于自动采集性能测试nmon文件中的性能测试指标。
2. 工具介绍与设计
工具实现的基本思想是逐个扫描指定路径下的nmon文件,根据nmon文件的内部格式,提取出目标性能指标数据,再对提取出来的数据进行加工处理,得到结果,并将结果自动保存到新生成的结果Excel文件中。为了更直观地获取用户输入的nmon文件路径及结果保存路径,我们可以编写GUI界面,利用界面上的文本输入框来获取用户的输入,并采用界面上的按钮来触发这一采集事件。
图1 工具设计流程图
3. 工具实现
(1)导入所需模块
由于我们的工具中包含对文件和路径进行 *** 作,这需要依赖os模块实现。在逐行读取nmon文件内容时,用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode。re模块是python独有的匹配字符串的模块,利用正则表达式对字符串进行模糊匹配,提取自己需要的字符串部分,使用该模块可以实现逐行扫描进行模糊匹配查找到CPU和内存的相关性能指标。xlwt库的作用是将数据写入Excel表格中。Tkinter 是 Python 的标准 GUI 库,导入 Tkinter 模块后可以使用控件快速的创建 GUI 应用程序。 tkinter.StringVar 能自动刷新的字符串变量,可用set和get方法进行传值和取值,以此来接收用户输入。
图2 代码-导入所需模块
(2)窗口的实现
利用Tkinter模块创建窗口并插入输入框控件用来获取用户输入的路径信息,输入框的内容存储到StringVar当中,设置按钮Button用于和鼠标点击事件绑定。
图3 代码-窗口的实现
图3 窗口的实现图
(3)编写事件代码——求CPU平均利用率的函数
不同版本的nmon文件内部格式略有不同,因此在编写程序时,要先了解目标版本的内部结构,用来确定字符串模式匹配时,需要利用nmon文件中性能指标相关内容的哪些特征。
为了计算均值,需要获取nmon文件中记录的打点次数。通过了解nmon文件中AAA参数是关于 *** 作系统以及nmon本身的一些信息,可以查找该行来进行提取。
图4 代码-获取打点次数和打点间隔
CPU_ALL参数是对所有CPU的概述,显示所有CPU平均占用情况,将记录的CPU占用率逐个取出存放在数组里,并求数组元素的平均值,即为整个监控期间CPU的平均利用率,函数将该值返回。
图5 代码-求CPU平均利用率
(4)编写事件代码——求内存均占用率的函数
类似地,通过MEM参数获取内存占用情况,与CPU情况不同的是,该参数行包括多项内存相关指标,而在监控性能指标时,我们常用公式1来计算内存的占用率,因此需要从MEM参数中提取相关指标,包括memtotal、memfree、cached、buffers,按照公式进行计算,并返回内存占用率。
公式1 内存占用率常用计算公式
图6 代码-求内存占用率
(5)编写事件代码——鼠标点击事件
该事件用于和界面上的按钮Button进行绑定,实现当点击按钮后的一系列 *** 作:从输入框取nmon文件路径和目标保存路径,生成Excel文件并创建工作表,写入默认的表头内容,调用求CPU平均利用率的函数和求内存均占用率的函数,将返回的值写入Excel文件并保存。
图7 代码-鼠标点击事件
4. 总结
该工具是基于Python语言的简单实践,可以实现批量自动提取nmon文件中的性能指标结果,并且可以沿用本思路根据需要对工具的功能进行修改或扩展。使用本工具进行性能结果的自动采集相比人工读取数值更加节省时间,并且避免了记录时出现错误的偶然误差,有助于提升准确度和测试效率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)