[翻译文章]性能监视器的计数器 之一 处理器性能计数器

文章包含下面的一些主题:

  • 处理器性能计数器. 这部分描述了与处理器对象相关的最重要的计数器.
  • 内存性能计数器. 这部分描述了与内存对象相关联的最重要的计数器.
  • 磁盘性能计数器. 这部分描述了与物理磁盘和逻辑磁盘对象相关联的最重要的计数器.
  • 网络性能计数器. 这部分描述了与网络接口, 网络分段, TCP/IP组件相关的最重要的计数器.

这部分列出了所有文章中涉及到的所有的对象和计数器, 还有一些其余有趣的内容. 性能监视器的计数器有几百个, 分别适用于不同的场合. 你可以认为这你会经常使用的供初学者使用的列表. 解释说明和用法会在合适的地方提供给你. 每一个列表都遵循下面的格式.

[对象] : [计数器名]. [解释/用法]

 

请注意, 这里的对象指的是性能监视器对象. 对于任何一个对象都会有多个计数器- [计数器名字]- 并且可能会有多个实例.. 在系统中有多个处理器或者系统有多个硬盘的时候就是这样的. 有些对象或计数器不会出现, 因为某些组件或者其他的软件没有被安装到系统中. 这具体表现在每个对象/计数器的配对儿的[解释/用法]部分.

 

处理器性能计数器

===============

处理器对象主要关注系统中的CPU. 注意有些系统有多个CPU, 计数器对每一个CPU都会有一个独立的实例来显示.

 

这部分列出的计数器都用来衡量处理器的性能, 要么就是用来衡量其他组件对CPU产生的强制影响.

 

Processor : % Processor Time.

-------------------------------------------------

这个计数器提供了处理器真实用在生产线程上的时间量, 还有他忙于为请求服务的频率. 这个计数器实际上提供了一个用100%减去CPU什么也不做的时间的衡量标准. 实际上处理器永远不能坐着白等下一个任务的到来, 这与我们的出纳不同. CPU必须永远永远地忙点什么. 就像当你打开电脑, CPU就像一根电线, 上面总是会有电流经过, 所以它总是不得不做点什么. NT在队列里没有等待的任务的时候, 会给CPU安排点事儿做. 这个就叫做空闲线程(Idle Thread) . 跟记录每个其他线程们运行的时间相比较, 系统可以更容易地衡量空闲线程运行的频率, 这个计数器仅需要简单地用100%减去空闲线程占去的时间比例就可以了.

 

Processor : Interrupts /sec.

-------------------------------------------------

这是个处理器被要求处理的中断的个数. 中断是从硬件组件中产生的, 诸如硬盘控制器和网络接口卡. 该值持续地超过1000说明有问题发生. 问题可以包括配置不当的驱动程序, 驱动中的错误, 对某种设备的过度使用(比如说IIS服务器中的NIC网络接口卡), 或者硬件失败. 把这个值跟System: Systems Calls/sec 进行比较, 如果Interrupts/sec 在一段时间内远远超过System: System Calls/sec, 你很可能遇到了一个硬件问题.

 

Processor : % Interrupt Time.

-------------------------------------------------

这是个CPU花在处理中断上的时间的百分比. 总的来说, 如果这个值超过50%的处理器时间, 你就很可能遇到了一个硬件问题. 有些计算机上的组件能够强制产生这个情况并且实际上不是一个毛病. 比如说一个可编程的IO卡, 比如说老的磁盘控制器卡, 可以占据40%的CPU时间. 一个繁忙的IIS服务器上的NIC可以产生差不多的大比率处理器的活动.

 

Processor : % User Time.

-------------------------------------------------

这个值可以帮助确定影响系统的处理动作的类型. 当然, 结果的值是花在用户态操作上的费空闲时间的总量. 这总体意味着应用程序的代码.

 

Processor : %Privilege Time.

-------------------------------------------------

这是处理器忙于内核态操作的时间量. 如果处理器非常繁忙, 并且这个模式的值很高, 这经常指示着某种NT服务遇到了困难, 尽管用户态程序能够调用内核态的NT组件, 这不经常地会引发这类性能问题.

 

Processor: %DPC Time.

-------------------------------------------------

跟其他的值相似, 这个计数器指示出处理器花费在服务DPC请求上的时间量. 不与网卡相关的情况下, DPC(Deferred Procedure Call)请求更常见.

 

Process : % Processor Time.

-------------------------------------------------

这个计数器是个很自然地选, 它会告诉我们个别进程在使用CPU资源上的花费.在进程对象上, 也有% Privilege Time% User Time计数器来帮助我们鉴定程序花费多数的时间在做什么.

 

System : Processor Queue Length.

-------------------------------------------------

很古怪地, 这个处理器计数器会出现在系统这个对象之下, 不过这样也不是没有理由的. 因为即使有多个CPU, 需要到达处理器的任务们也就只有一个队列. 从而这个计数器提供了抓取日志时所有处理器任务队列的即刻尺寸的一种衡量方式.结果值测量了有多少线程处于准备好的状态等待被处理. 当处理队列的时候, 如果这个值在很长的一个时间段内都超过2, 你肯定遇到了一个正在讨论的这项资源的问题.

 

System : System Calls/sec.

-------------------------------------------------

这个计数器是一个衡量对系统组件和内核态服务的调用的数字. 它衡量了系统在料理应用程序和服务(也就是软件方面)的繁忙程度. 与Interrupts/Sec对比一下, 这会给你一个提示, 告诉你所遇到的问题是硬件的还是软件的. 参考: Interrupts/Sec的部分获得更多信息.

 

System : % Total Processor Time.

-------------------------------------------------

这个计数器将所有的处理器活动并成一组, 来汇报整个系统的总体性能. 在一个单处理器机器上, 这个值等同于处理器对象下的%Processor Time计数器值.

 

System : % Total User Time.

-------------------------------------------------

这是系统中所有处理器的user time的总和. 参考: % User Time来获得更多信息.

 

System : % Total Privledge Time.

-------------------------------------------------

这是系统中所有处理器上的privledge time的总和. 参考:% Privledge Time来获得更多信息.

 

System : % Total Interrupt Time.

-------------------------------------------------

这是一个所有处理器花费在处理中断上的时间的总和. 参考: % Interrupt Time来获得更多信息.

 

Thread Object : % Processor Time.

-------------------------------------------------

这个计数器把分析带入了下一个层次. 典型地, 这个计数器是为程序员所使用的, 但是, 不经常地, 也会有更多的对于它的全局使用. 比如说, 如果你正在检查一个16位的进程的动作. 十六位的应用程序实际上将会是NTVDM进程中的一个线程. 如果你想要看它的处理器使用情况, 而不去看模糊不清的NTVDM和WOWEXEC.exe的话, 你就会希望检查单个的线程了. BackOffice的应用程序倾向于使用非常清楚的多线程, 所以有时候相对于看整个组来说, 看单个线程更有价值. 经常地, 更加复杂的应用程序的线程可以在整个进程中被独立地配置.

 

Thread Object : ID Thread.

-------------------------------------------------

当一个进程创建一个线程时, 系统会给线程赋予一个Thread ID, 这样才能与系统中的其他线程区分开来. 线程ID会在线程创建和销毁时重新赋值. 你不能指望线程每次创建都有同样的ID. 无论何时你查看线程级别的计数器时, 都要注意看线程的ID. 如果线程被删除了, 性能监视器会钉牢在一处, 告诉你线程实际上已经过期了.

 

Thread Object : Priority Base.

-------------------------------------------------

线程会从创建它的进程中获得一个基本的优先级. 线程的优先级可以由系统或编程方式进行调整. 这个优先级的用处是决定该线程在何时获得处理器处理, 还有等待队列中有多少个其他的线程它可以跳过.

 

Process : Process ID.

-------------------------------------------------

每一个Windows NT的进程都有一个进程ID, 用于在系统中唯一的标示这个进程. 你可以引用进程ID计数器来通过API的调用中获得进程相关的信息. 进程ID在该进程运行的过程中被保证会保持不变且唯一. 但是不能保证每次进程运行都能有同样的进程ID.

 

Process : % Processor Time.

-------------------------------------------------

每个进程都会在选择这个计数器的时候表现为一个实例. 这个计数器会分解按进程分解全部进程的CPU时间花费. 在查看所有实例的时候, 别忘了要去掉Idle和Total两个计数器.

 

Process : % User Time.

-------------------------------------------------

这个计数器会按每个进程来分解处理器使用的全部user time.

 

原文:

Performance Monitor Counters

http://technet.microsoft.com/en-us/library/cc768048.aspx#

posted on 2010-01-10 21:25  中道学友  阅读(2151)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上