利用Windows性能计数器分析软件产品的性能瓶颈
转自:http://blog.163.com/jack_test/blog/static/166620663201061594459936/

【摘要】
本文详细介绍了Windows性能计数器在帮助查找软件产品性能瓶颈中的作用以及使用方法等,为开发、测试以及系统分析人员介绍一种简洁高效性能跟踪评估手段。
1          概述
软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥。如何快速有效地找到软件产品的性能瓶颈,则是我们感兴趣的内容之一。
Windows
2000 附带的 Windows 性能监视器提供的性能计数器具有强大的功能,可以使我们能够获得系统或进程的各种详细信息,比如系统进程、CPU
利用率、磁盘活动、内存使用等等,巧妙灵活地利用这一工具,可以有效地帮助我们确定软件产品性能瓶颈所在。
2          使用说明
Windows
性能监视器置于 Windows
操作系统之中,它允许用户访问系统性能数据。访问性能监视器的简单方法是,从“开始”菜单中,选择“开始”=>“程序”=>“管理工具”=>“性能”即可启动。如果“程序”菜单中没有“管理工具”程序组,请从控制面板中选择。
图(1)展示了最初的性能监视器窗口。


图(1)性能监视器窗口

2.1         性能监视动态显示模式
图(1)显示的是Winword进程CPU占用情况实时分布图。
在视图区,点击右键,选择“添加计数器”,出现如下图所示窗口。


图(2)添加计数器

假设需要对Winword进程的CPU占用时间和句柄数进行监视,则进行如下操作:
(1)       从“添加计数器”窗口中,选择性能对象为“Process”(进程);
(2)       选中“从列表选择实例”;
(3)       选中需要监视的进程,如Winword;
(4)       选中“从列表选择计数器”,从列表框中选中需要监视的特性,如CPU占用时间、句柄数等;
(5)       设置完毕,点击“添加”按钮,关闭窗口,即可实时监视选中的参数。
动态监视的缺点是:监视周期只有1分40秒时长,并且数据不能连续输出到文件中。不能
做后续分析。
2.2         性能数据连续跟踪统计
2.2.1          性能采集设置
当需要对性能数据进行连续统计,并进行后续分析时,我们可以采用另外一种方式:启用计数器日志
图(3)展示了启用计数器日志的性能监视器窗口。


图(3)添加计数器

我们以监视Winword进程的CPU占用时间、物理内存和虚拟内存为例进行说明。
(1)              如上图所示,在左边树图区,展开“性能日志和报警”项,在该分支下选中“计数器日志”;
(2)              在右边视图区,点击右键,选择“新建日志设置”,在弹出的对话框中输入一个名称,如“MyCount”,应用后出现如下图(4)所示属性设置对话框;


图(4)计数器属性设置

(3)              点击“添加”按钮,出现如图(2)所示的“添加计数器”对话框;
(4)              从“添加计数器”窗口中,选择性能对象为“Process”(进程);
(5)              选中“从列表选择实例”;
(6)              选中需要监视的进程,如Winword;
(7)              选中“从列表选择计数器”,从列表框中选中需要监视的特性,如CPU占用时间、物理内存、虚拟内存等;
(8)              设置完毕,点击“添加”按钮,关闭窗口,回到图(4)显示窗口;
(9)              在图(4)对话框中,切换至“日志文件”属性页,如图(5)所示;


图(5)日志文件属性设置

(10)          在图(5)中,将日志类型设置为CSV格式,便于在Excel中导入;
(11)          将日志大小设置为最大限度,也可以根据需要预设定文件记录大小;
(12)          在图(4)对话框中,切换至“计划”属性页,如图(6)所示;


图(6)采集计划定制

(13)          采用默认计划,关闭设置对话框;
(14)          开始采集监视对象性能数据,如果需要停止采集,手工终止即可。
优点:可以设定采样频率,指定时长或者手工控制采样时长不间断地采集性能数据,并且
可以多种格式存储数据,满足不同的需求,便于事后分析。
2.2.2          性能采集数据分析
采集的数据被记录到Execl文件中。数据记录如下:


图(7)采集数据记录

(1)       打开日志文件;
(2)       选中需要分析的数据(列);
(3)       点击工具条中的“图表向导”,出现如下图(8)所示对话框;


图(8)图表类型设置

(4)       选中“折线图”中的第一个图形,进入下一步;


图(9)图表类型设置

(5)       在图(9)中,将数据区域设置为从第二行开始;


图(10)图表系列设置

(6)       完成设置后,以新表格方式插入分布图。
(7)       采用同样的方式,可以绘出物理内存、虚拟内存的分布情况。
2.3         采集对象和可采集的参数
性能计数器可监视的对象多达20种,每一种性能对象又包括若干个可供计数的性能参数满。以最常用的监视对象――进程为例,其可供计数的性能参数多达27种,如进程占用CPU的时间、句柄数、每秒IO字节数、每秒IO读字节数、每秒IO写字节数、虚拟内存、虚拟内存峰值、线程数目、物理内存、物理内存峰值等,能满足大部分需求。
3          效果评估
采样Windows性能计数器对进程的某些特性参数进行统计跟踪,能很好的发现软件的瓶颈和运行状态,特别是我们比较关心的CPU占用、内存使用情况等,具有较大的参考价值

利用Windows自带性能计数器分析软件产品的性能瓶颈(转)的更多相关文章

  1. 利用vs自带工具分析程序性能

    测试程序写好后可以通过VS2010分析菜单里选择启用性能向导 选择CPU采样后就选择需要分析的项目 测试项目选择完成后就可以运行分析,结束分析后VS2010会提供个详细报告文档 从分析结果来看GetC ...

  2. 利用Windows自带的Certutil查看文件MD5

    当遇到需要对比两个文件是否一致时,可以使用下面的命令来显示文件的MD5, 然后对比两个文件的MD5码. certutil -hashfile <filename> MD5 命令的相关帮助信 ...

  3. 用windows自带的ftp.exe实现断点续传的方法

    摘自http://www.jb51.net/article/10604.htm 动画下载地址: http://www.chinesehack.org/soft/book/goonftp-jc.rar ...

  4. 利用windows任务计划备份sqlserver

    sqlserver Express版不含agent service(虽然可以从“服务”里看到,但是无法启动),因此无法使用代理服务执行备份作业,如果代理作业服务正常,建议还是首先采用代理服务. 此备份 ...

  5. 用Python做词云可视化带你分析海贼王、火影和死神三大经典动漫

    对于动漫爱好者来说,海贼王.火影.死神三大动漫神作你肯定肯定不陌生了.小编身边很多的同事仍然深爱着这些经典神作,可见"中毒"至深.今天小编利用Python大法带大家分析一下这些神作 ...

  6. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

    利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  7. Java内存泄露分析和解决方案及Windows自带查看工具

    Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历 ...

  8. windows XP系统内核文件分析(全)

    Windows XP个别 System32 文件 System32 文件夹下个别要移除的文件 我们就要删除另外600 个 system32 文件...我们要一次把它们全都解决掉. 以下是我所删除的 S ...

  9. linux下利用elk+redis 搭建日志分析平台教程

    linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...

  10. 利用windows系统ftp命令编写的BAT文件上传[转]

    利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在w ...

随机推荐

  1. 推荐 5 个 火火火火 的CMS开源.Net项目

    下面推荐5个基于.NetCore开发的CMS开源项目. 一.OrchardCore 基于ASP.NET Core 构建的.模块化和多租户应用程序框架,采用文档数据库,非常高性能,跨平台的系统. 1.跨 ...

  2. Apollo功能及原理详解

    前言 公司里面使用的配置中心是携程开源的Apollo,之前我只使用过Nacos,遂记录一下学习过程. Apollo工作原理 模块介绍 上图就是Apollo的总体设计,从下往上挨个分析: ConfigD ...

  3. vs2017 iisexpress 绑定自定义域名

    1.项目根目录找到 项目/.vs/config/applicationhost.config 2.添加绑定域名 <site name="demo" id="2&qu ...

  4. Java内存模型深度剖析

    为什么要有内存模型  在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情.要说计算机的内存模型,就要说一下一段古老的历史,看 ...

  5. MySQL存储引擎,锁,优化简述

    今天主要分享常见的存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比 ...

  6. DICOM-SCP,可以直接使用的SCP(.net framework 4.5)控制台接收端

    此程序引用的是Dicom.Core 4.0.8.0,也是最后一版支持部署在.net framework 4.5 或以下环境的.如需要部署在.net4.6.1以上的需要查看另一个文档. 1 using ...

  7. Tomcat启用manager管理

    1.修改远程访问限制: 修改webapps/manager/META-INF/context.xml和webapps/host-manager/META-INF/context.xml,在<Co ...

  8. 抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞

    抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞 代码链接 不说废话,上代码!!! get.py # get.py import urllib.request impor ...

  9. uni-app选中状态并改变颜色

    思路 定义一个数组来记录被点击的元素 arr 数组通过indexOf来来查找 如果有,激活类就是true 没有: 激活类为false 这一步最关键的是查找的内容就是显示出来的index, 点击的时候传 ...

  10. RocketMQ实战—2.RocketMQ集群生产部署

    大纲 1.什么是消息中间件 2.消息中间件的技术选型 3.RocketMQ的架构原理和使用方式 4.消息中间件路由中心的架构原理 5.Broker的主从架构原理 6.高可用的消息中间件生产部署架构 7 ...