使用 Microsoft 性能数据助手进行自定义分析

本文介绍了如何利用 Microsoft 性能数据助手库(PDH)创建自定义性能监视应用程序,以解决 Windows 性能监视器的局限性。通过示例,展示了如何使用 PDH 库来收集和分析 CPU、I/O 瓶颈等性能数据,帮助开发者和测试人员诊断和优化系统性能。
摘要由CSDN通过智能技术生成

引言

随着用户不断地努力挖掘系统在吞吐量和利用率两个方面的最大潜能,计算机应用程序的性能正变得越来越重要。然而,常常会出现这样的情况,系统性能因某些无法预料的瓶颈而受到干扰,这会降低系统上应用程序的效率,并且使系统得不到充分的利用。

在研究运行在 Windows® 平台上的应用程序的性能时,Microsoft®Windows NT® 和 Windows 2000附带的 Windows 性能监视器(Windows Performance Monitor)提供的工具使我们能够重新获得各种详细的信息,比如系统进程、CPU利用率、磁盘活动等等。这可以帮助我们确定性能瓶颈。但是这种内置功能有一个很大的缺陷,它不能自动收集这样的信息。在另一方面,Windows公开了基础性能数据库,性能监视器能够通过编程接口加以利用,而我们可以创建自定义 C++应用程序来访问这个库。

本文介绍了 Microsoft 性能数据助手库(Microsoft Performance Data Helper library,PDH.dll)及其功能,并且通过示例说明了如何利用这个库的可用性来创建有效的自定义性能监视应用程序。

本文以及文中的示例是为需要访问详细的性能数据的开发人员和测试人员准备的。

 




回页首


性能瓶颈

有好几种不同类型的性能瓶颈,但是事实上与所有的软件产品和应用程序都有关系的两个主要方面是 CPU和 I/O,指的就是 CPU-bound 或 I/O-bound。接近利用100%的 CPU处理能力的应用程序可认为是 CPU-bound;如果 CPU相当清闲,远远没有发挥其利用价值,而 I/O等待的时间却非常之长,那么这种应用程序可认为是I/O-bound。

让我们考虑一种特殊的场景,在这种场景中,因业务的需要必须对公司的应用程序做些改动,要求显著增加系统的吞吐量。公司试图通过把更多的用户添加到系统中来增加吞吐量,而这些增加过早地达到了峰值,其吞吐量低于所期望的水平。这样一种情形最有可能是由于性能瓶颈导致的,可能是CPU、磁盘 I/O或某些其他的方面。要达到所期望的吞吐量水平,就需要进行某些调查,以找出限制因素在哪里,接着通过分析来确定消除限制的最好方法。

例如,假定 Windows 2000 服务器系统在四路(four way)NetFinity®机器上运行 WebSphere®MQ、WebSphereBusiness Integration Message Broker 和 DB2®:

  • 系统一直在满负荷运行。
  • DataFlowEngine 进程、基本的 WebSphere Business Integration Message Broker 进程 CPU 的占用率只有7%,而不是潜在的25%(这个简单的示例涉及的是 DataFlowEngine 进程的单个实例,包含单个消息流,因此只能运行在四个 CPU 中的某一个内,相应地,最大的 CPU 占用率就是25%)。
  • 在对系统进行研究之后发现,DB2 和 WebSphere MQSeries 日志记录平均要花15毫秒。这被认为是相当高的,因而也就意味着系统可能是 I/O bound。为了解决这个问题,把系统放在快速写入高速缓存磁盘上,以减少磁盘写入时间。
  • 然后发现 DataFlowEngine 进程占用25%的处理器能力,等同于机器可用的四个处理器中的一个的能力,因而意味着,现在机器是 CPUbound,因为进程正使用它可用的所有 CPU。从某个方面来说,这实际上是非常好的,因为它意味着系统将很好地响应更快的处理器或附加的处理器(通过在某个剩余的处理器中运行 DataFlowEngine进程的另一个副本)。
  • 因此可以做出决定,运行 DataFlowEngine进程的其他副本,从而满足吞吐量目标。

虽然这是一个很小的示例,侧重的也只是两个简单的瓶颈,但是它突出了访问系统性能信息的基本优势。

那么您可以如何获取这些数据?

有两种获取数据的方式:第一种是通过 Windows操作系统附带的 Windows性能监视器。第二种是通过使用编程接口。

 




回页首


Windows 性能监视器

Windows 性能监视器置于 Windows操作系统之中,它允许用户访问系统性能数据。访问性能监视器的简单方法是,从Windows Start 菜单中,选择 Start => Settings => Control Panel => Administrative Tools => Performance

图1展示了最初的性能监视器窗口。


图1. 性能监视器
性能监视器

要开始使用性能监视器:

  1. 在工具栏上选择 Add 按钮( +)打开“Add Counters”对话框(图2)。
    图2. 性能对象及其计数器
    性能对象及其计数器
  2. 指定下列值:
    • Performance object:事实上表示要监视的系统的特定区域,比如处理器、内存或进程。
    • Counter:您想要查看的实际数据项;例如,如果您选择 Process对象,那么计数器就可以是 %Processor Time、ElapsedTime、Handle Count 等等。
    • Instance:要监视的特定区域的名称(只是在某些计数器上适用);一个实例特别应用于 Process计数器,如图3所示。

    图3. 计数器及其实例
    计数器及其实例
  3. 当您选取了所有的选项并且决定了监视什么时,就可以通过选择 ADD按钮来指示性能监视器开始监视此数据(图3)。此计数器的监视然后将立即开始,而数据将显示在监视器窗口中。
  4. 重复步骤2和3来添加其他的计数器(如果有必要的话)。当添加完所有的计数器时,选择“Add Counters”对话框上的 Close将控制权归还给性能监视器。
  5. 已收集的性能数据将显示在监视器窗口中,而且通过选择性能监视器工具栏上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值