在Windows平台上测试程序的CPU使用率和内存占用量
来源:互联网 发布:中国未来 知乎 编辑:程序博客网 时间:2024/05/18 02:01
程序开发是分阶段的,在完成功能开发和测试后,研发人员还需要获取程序的性能数据,并与竞品进行比较。其中,互联网程序有几个比较重要的指标:网络传输时延、网络传输流量、程序的CPU使用率以及程序的内存占用量等;对于网络相关性能指标,网络已经有较多的工具可以用于分析,就不再阐述,而本文重点关注CPU使用率和内存占用量。
在Windows平台上,微软的开发包中(Micosoft Windows SDK)提供性能分析工具Windows Performance Analyzer(下面简称WPA),它可以获取指定程序的性能数据,并通过图形的形式将其展示出来。其中,该工具对WIn7和vista支持的比较好,就是可以分析更多的指标。
ETW(Event Tracing Windows)提供了WPA的基础功能。ETW架构如图所示:
ETW有三种组件构成:
- 控制器(Controller):负责启动和停止事件跟踪会话,以及打开提供者;
- 提供者(Provider):返回指定事件;
- 消费者(Consumer):分析提供者产生的数据。
WPA使用原则:
- 打开提供者,进行事件跟踪;
- 从指定的提供者收集事件数据;
- 停止收集事件数据,并将数据写入etl文件;
- 使用WPA查看etl文件。
下面提供一种查看指定程序CPU使用率和内存占用量的语法,一种是指定程序名称:
- 启动“NT Kernal Logger”,收集内核事件:xperf –on Base –BufferSize 1024 –MinBuffers 10 –MaxBuffers 16
- 初始化堆会话,黑色斜体部分需要替换为指定程序:xperf -start HeapSession -heap -PidNewProcess “C:\Program Files\Windows Sidebar\sidebar.exe” –BufferSize 1024 –MinBuffers 128 –MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc
- 停止会话,并将事件数据写入到指定文件:xperf –stop -stop HeapSession –d heapTrace.etl
- 以图形的形式查下事件数据:xperf heapTrace.etl
另一种指定程序ID:
1. xperf -start HeapSession -heap –Pids 1472 -BufferSize 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc
分析结果如下:
CPU使用率:
内存占用量:
此外,在加载了符号表的情况下,还可以查看哪些函数导致CPU使用率或内存占用量增高。
- 在Windows平台上测试程序的CPU使用率和内存占用量
- ubuntu系统查看内存占用和CPU使用率的方法
- zabbix监控进程的CPU和内存占用量
- android平台应用性能测试之CPU和内存占用
- 在Ubuntu 12.04工具栏上用数字显示网速、CPU负荷和内存占用量,安装触摸板管理器,GNOME 风格的应用程序菜单
- 如何降低Windows程序的内存占用量
- w3wp.exe进程cpu使用率高和内存占用多的问题
- 怎么测试一个java程序占用的内存和cpu消耗?
- Ubuntu工具栏上用数字显示网速、CPU负荷和内存占用量
- 获得应用程序内存占用 cpu使用率
- Linux 内存和CPU占用高的程序
- linux查看内存和cpu进程占用量
- linux 在 cpu/内存 使用率
- Jprofiler如何测试内存溢出和CPU使用率?
- windows下获取CPU和物理内存使用率
- 有关Windows平台下CPU使用率的计算
- 有关Windows平台下CPU使用率的计算
- 有关Windows平台下CPU使用率的计算
- POJ 1016 Numbers That Count
- validate和causesvalidation的区别1
- GetDlgItem使用
- EJB基础--JBoss服务器
- ubuntu切换用户root时认证失败
- 在Windows平台上测试程序的CPU使用率和内存占用量
- c++一个实现分数大小比较和各种运算的类
- StrongOD hook的API
- 开篇博客
- 设计模式C++实现(7)——外观模式、组合模式
- Linux内核学习笔记-1.环境搭建
- DateTime 相加减
- poj 3468 A Simple Problem with Integers
- Python数据处理方式