Windows常用监控计数器及瓶颈分析
2011年07月02日
  [b]监测对象[/b][b]一、System(系统) [b]%Total Processor Time[b]
  系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所有处理器的平均繁忙状态,该值为100%,如果有一半的处理器为繁忙状态,该值为50%服务器。器消耗的处理器时间数量.如果服务器专用于sql server可接受的最大上限是80% -85 %.也就是常见的CPU 使用率.
  File Data Operations/sec[b]计算机对文件系统进行读取和写入操作的频率,但是不包括文件控制操作
  Process Queue Length[b]线程在等待分配CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。如果该队列的长度大于处理器个数+1,就表示处理器有可能处于阻塞状态(参考值:处理器个数+1)
  [b]二、Processor(处理器) [b]%Processor Time[b]CPU利用率,该计数器最为常用,可以查看处理器是否处于饱和状态,如果该值持续超过 95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一些由操作系统自行启动的进程属于这类
  %User Time[b]与%Privileged Time计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所花的时间百分比。如果该值较大,可以考虑是否通过算法优化等方法降低这个值。如果该服务器是数据库服务器,导致此值较大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
  %DPC Time[b]处理器在网络处理上消耗的时间,该值越低越好。越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。
  [b]三、Memory(内存)[b]Page Faults/sec[b]当处理器在内存中读取某一页出现错误时,就会产生缺页中断,也就是 page Fault。如果这个页位于内存的其他位置,这种错误称为软错误,用Transition Fault/sec来衡量;如果这个页位于硬盘上,必须从硬盘重新读取,这个错误成为硬错误。硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。
  Page Input/sec[b]表示为了解决硬错误而写入硬盘的页数(参考值:>=Page Reads/sec)
  Page Reads/sec[b]表示为了解决硬错误而从硬盘上读取的页数。
  Page/sec[b]表示为了解决硬错误而从硬盘上读取或写入硬盘的页数(参考值:00~20)
  Pages per second:[b]每秒钟检索的页数。该数字应少于每秒一页Working set:理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
  Available Mbytes[b]剩余的可用物理内存,单位是兆字节(参考值:>=10%)用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
  Cathe Bytes[b]文件系统的缓存(默认为50%的可用物理内存)
  [b]四、Process(进程)[b]private Bytes[b]进程无法与其他进程共享的字节数量。该计数器的值较大时,有可能是内存泄露的信号
  Work set[b]最近处理线程使用的内存页
  [b]五、PhysicalDisk(磁盘)[b]%Disk Time[b]表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比,如果只有%Disk Time比较大,硬盘有可能是瓶颈。指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。应当总小于90%
  Average Disk Queue Length[b]表示磁盘读取和写入请求提供服务所用的时间百分比,可以通过增加磁盘构造磁盘阵列来提高性能(Read Queue Length[b]表示磁盘读取请求的平均数
  Average Disk write Queue Length[b]表示磁盘写入请求的平均数
  Average Disk sec/Read[b]磁盘中读取数据的平均时间,单位是秒
  Average Disk sec/Transer[b]磁盘中写入数据的平均时间,单位是秒,一般来说,定义该值小于15ms最为优异,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或硬盘的RAID方式了
  %Disk reads/sec(physicaldisk_total):[b]每秒读硬盘字节数. 该指标应总小于磁盘I/O子系统的容量
  %Disk write/sec(physicaldisk_total):[b]每秒写硬盘字节数. 该指标应当总小于硬盘I/O子系统的容量
  Disk Bytes/sec [b]指在进行写入或读取操作时从磁盘上传送或传出的字节速率。此值取决于硬盘的速度
  Disk Transfers/sec [b]指在此盘上读取/写入操作速率。正常值=2)个并且处理器的利用率%Processortime超过90%,那么很可能存在处理器瓶颈.如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈.
  CPU瓶颈
  %processor time平均值大于95,processor queue length大于2.可以确定CPU瓶颈.此时的CPU已经不能满足程序需要.急需扩展.
  CPU资源成为系统性能的瓶颈的征兆:
  很慢的响应时间(slow response time)
  CPU空闲时间为零(zero percent idle CPU)
  过高的用户占用CPU时间(%User Time)
  过高的系统占用CPU时间(%Priviliaged Time:长期大于90%或者95%)
  长时间的有很长的运行进程队列(Process Queue Lengt:大于处理器个数+1)
  [b]三、判断内存泄露问题[b]内存问题主要检查应用程序是否存在内存泄漏,如果发生了内存泄漏,process\private bytes计数器和process\working set 计数器的值往往会升高,同时avaiable bytes的值会降低.内存泄漏应该通过一个长时间的,用来研究分析所有内存都耗尽时,应用程序反应情况的测试来检验.
  内存泄露
  图中可以看到该程序并不存在内存泄露的问题.内存泄露问题经常出现在服务长时间运转的时候,由于部分程序对内存没有释放,而将内存慢慢耗尽.也是提醒大家对系统稳定性测试的关注.
  Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。
  [b]四、判断内存不足[b]如果队列长度(Avg.Disk Queue Length)增加的同时页面读取速率(Page Reads/sec)并未降低,则内存不足。
  如果Available Mbytes(剩余物理内存数)的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
  [b]五、硬件问题[b]请观察 Processor\ Interrupts/sec 计数器的值,该计数器测量来自输入/输出 (I/O) 设备的服务请求的速度。如果此计数器的值明显增加,而系统活动没有相应增加,则表明存在硬件问题。
  [b]六、I/O资源成为系统性能的瓶颈的征兆[b]IO Data Bytes/sec(处理从I/O操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。)
  IO Data Operations/sec
  IO Other Bytes/sec
  IO Other Operations/sec
  IO Read Bytes/sec(每秒IO读取字节数)
  IO Read Operations/sec
  IO Write Bytes/sec(每秒IO写出字节数)
  IO Write Operations/sec
  过高的磁盘利用率(high disk utilization)
  太长的磁盘等待队列(Physical Disk\ Current Disk Queue Length,正在等待磁盘访问的系统请求数量)
  等待磁盘I/O的时间所占的百分率太高(Average Disk Queue Length)
  太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
  过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
  太长的运行进程队列,但CPU却空闲(Process Queue Length)
  在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数
  [b]七、监视磁盘的使用情况[b]监视磁盘活动涉及两个主要方面:
  监视磁盘 I/O 及检测过度换页
  隔离 SQL Server 产生的磁盘活动[b]
  监视磁盘 I/O 及检测过度换页
  可以对下面两个计数器进行监视以确定磁盘活动:
  PhysicalDisk: % Disk Time 
  PhysicalDisk: Avg. Disk Queue Length [b]
  在系统监视器中,PhysicalDisk:% Disk Time计数器监视磁盘忙于读/写活动所用时间的百分比。如果PhysicalDisk: % Disk Time计数器的值较高(大于 90%),请检查PhysicalDisk: Current Disk Queue Length计数器了解等待进行磁盘访问的系统请求数量。等待 I/O 请求的数量应该保持在不超过组成物理磁盘的轴数的 1.5 到 2 倍。大多数磁盘只有一个轴,但独立磁盘冗余阵列 (RAID) 设备通常有多个轴。硬件 RAID 设备在系统监视器中显示为一个物理磁盘。通过软件创建的多个 RAID 设备在系统监视器中显示为多个实例。
  可以使用Current Disk Queue Length和% Disk Time计数器的值检测磁盘子系统中的瓶颈。如果Current Disk Queue Length和% Disk Time计数器的值一直很高,则考虑下列事项:
  使用速度更快的磁盘驱动器。
  将某些文件移至其他磁盘或服务器。
  如果正在使用一个 RAID 阵列,则在该阵列中添加磁盘。[b]
  如果使用 RAID 设备,% Disk Time计数器会指示大于 100% 的值。如果出现这种情况,则使用PhysicalDisk: Avg.Disk Queue Length计数器来确定等待进行磁盘访问的平均系统请求数量。
  I/O 依赖的应用程序或系统可能会使磁盘持续处于活动状态。
  监视 Memory: Page Faults/sec计数器可以确保磁盘活动不是由分页导致的。在 Windows 中,换页的原因包括:
  配置进程占用了过多内存。
  文件系统活动。[b]
  如果在同一硬盘上有多个逻辑分区,请使用Logical Disk计数器而非Physical Disk计数器。查看逻辑磁盘计数器有助于确定哪些文件被频繁访问。当发现磁盘有大量读/写活动时,请查看读写专用计数器以确定导致每个逻辑卷负荷增加的磁盘活动类型,例如,Logical Disk: Disk Write Bytes/sec。
  [b]八、判断磁盘瓶颈[b]Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
  Physical Disk\ Disk Reads/sec and Disk Writes/sec
  Physical Disk\ Current Disk Queue Length
  Physical Disk\ % Disk Time
  LogicalDisk\ % Free Space
  测试磁盘性能时,将性能数据记录到另一个磁盘或计算机,以便这些数据不会干扰您正在测试的磁盘。
  可能需要观察的附加计数器包括 Physical Disk\ Avg.Disk sec/Transfer 、Avg.DiskBytes/Transfer,和Disk Bytes/sec。
  Avg.Disk sec/Transfer 计数器反映磁盘完成请求所用的时间。较高的值表明磁盘控制器由于失败而不断重试该磁盘。这些故障会增加平均磁盘传送时间。对于大多数磁盘,较高的磁盘平均传送时间是大于 0.3 秒。
  也可以查看 Avg.Disk Bytes/Transfer 的值。值大于 20 KB 表示该磁盘驱动器通常运行良好;如果应用程序正在访问磁盘,则会产生较低的值。例如,随机访问磁盘的应用程序会增加平均 Disk sec/Transfer 时间,因为随机传送需要增加搜索时间。
  Disk Bytes/sec 提供磁盘系统的吞吐率。
  决定工作负载的平衡要平衡网络服务器上的负载,需要了解服务器磁盘驱动器的繁忙程度。使用 Physical Disk\ %Disk Time 计数器,该计数器显示驱动器活动时间的百分比。如果 % Disk Time 较高(超过90%),请检查 Physical Disk\ Current Disk Queue Length 计数器以查看正在等待磁盘访问的系统请求数量。等待 I/O 请求的数量应当保持在不大于组成物理磁盘的主轴数的 1.5 到2倍。
  尽管廉价磁盘冗余阵列 (RAID) 设备通常有多个主轴,大多数磁盘有一个主轴。硬件 RAID设备在“系统监视器”中显示为一个物理磁盘;通过软件创建的 RAID 设备显示为多个驱动器(实例)。可以监视每个物理驱动器(而不是 RAID)的 Physical Disk 计数器,也可以使用 _Total 实例来监视所有计算机驱动器的数据。
  使用 Current Disk Queue Length 和 % Disk Time 计数器来检测磁盘子系统的瓶颈。如果Current Disk Queue Length 和 % Disk Time 的值始终较高,可以考虑升级磁盘驱动器或将某些文件移动到其他磁盘或服务器。
  [b]
  [/b]
  [b]如何调优[/b][b]一、 CPU问题[b]
  a)考虑使用更高级的CPU代替目前的CPU
  b)对于多个CPU,考虑CPU之间的负载分配
  c)考虑在其他体系上设计系统,例如增加前置机、设置并行服务器等
  [b]二、内存和高速缓存[b]a)内存的优化包括操作系统、数据库、应用程序的内存优化
  b)过多的分页与交换可能降低系统的性能
  c)内存分配也是影响系统性能的主要原因
  d)保证保留列表具有较大的邻接内存块
  e)调整数据块缓存区大小(用数据块的个数表示)是一个重要内容
  f)将最频繁使用的数据保存在存储区中
  [b]三、磁盘(I/O)资源问题[b]a)磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能
  b)磁盘镜像会减慢磁盘写的速度
  c)通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能
  d)把不同的数据库放在不同的硬盘上,可以提高读写速度。建议把数据库、回滚段、日志放在不同的设备上
  e)把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快。
  [b]四、调整配置参数[b]a)包括操作系统和数据库的参数配置
  b)并行操作资源限制的参数(并发用户的数目、会话数)
  c)影响资源开销的参数
  d)与I/O有关的参数
  [b]五、优化应用系统网络设置[b]a)可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样效率较高
  b)调整会话数据单元的缓冲区大小
  c)共享服务进程比专用服务进程提供更好的性能
  [b][b]附录:[/b][b]1、RAID设备[b]RAID(独立冗余磁盘阵列)指的是多个独立的 硬盘(图上的黄色存储区) 结合组成一个较大的逻辑阵列(带斜线的存储区)。 数据存储在磁盘的此阵列带有附加的冗余 信息。 冗余信息可以是数据本身(镜像),也可以是奇偶校验信息计算从 多个数据块(RAID4或RAID5)。 有了RAID,操作系统(Windows*,NetWare*或Unix)不 再单独处理个别磁盘,而是将整个磁盘阵列作为一个逻辑磁盘处理。
  RAID的主要目的是改进数据可用性和安全性。 出现 硬盘故障,RAID可以防止停机,但是它不恢复数据用户删除或者由等重大事件破坏 失窍或起火。 由于此,就必须经常备份您的数据保护您的系统免这些 问题RAID后安装。
  实施RAID解决方案有两种方法。 硬件RAID控制器是智能设备, 自行处理所有的RAID信息。 安装这种系统后,所有控制权,RAID阵列也已解除主机 和控制完全由RAID控制器。 一种方法是使用简易的主适配器和RAID 驱动程序实施RAID。 在这种系统中,驱动程序被集成在操作系统,如Windows*NT。 此时,RAID系统的性能完全依赖于主CPU的处理负荷,它可 在阵列重建阶段负荷带有潜在的问题出现硬盘故障。
  硬件RAID控制器需要关注的地方包括:安装和维护的简便性, 管理软件的功能和制造商的经验,发展RAID组件。 RAID控制器必须支持最 重要的RAID级别(0、1、4、5和10),并且能够 跨通道同时处理不同RAID级别的多个阵列。
  RAID级别-驱动器是如何组织
  RAID的各个层次在阵列驱动器之间分布数据以不同方式并依具体 情况进行优化。 根据我们的目标,我们计划集中在当今最常用的RAID级别。
  [b]如何确定您的RAID级别[/b]
  RAID0此RAID级别组合了两个或更多硬盘驱动器以某种方式结合,数据(黄色存储区的ABCD…)从上方的”用户 被分割成便于处理的块。 这些块以条带形式分布于的不同驱动器的RAID0阵列。 这样, 两个或更多硬盘组合后,读/写(尤其是序列性访问读写)性能可以改善。 然而,中不储存冗余信息一个RAID0阵列,这意味着如果一个硬驱发生故障,所有数据都会丢失。 缺乏冗余这一事实也在号码0,它表明没有冗余。 RAID0因此通常不在 注重安全性的服务器上使用。
  优点:传输率最高[b]缺点:无冗余,也就是说,其中一个磁盘发生故障,所有数据将丢失[b]应用程序:通常用于在工作站临时数据并要求高I/O速率
  RAID1
  在RAID1系统中,相同的数据被存储在两个硬盘上(100%冗余)。 当一个磁盘驱动器发生故障时, 所有数据都可以在其它没有任何影响性能或数据的完整性。 我们称之为 “磁盘镜像”当两个磁盘驱动器镜像一个SCSI通道。 如果每个磁盘驱动器连接到一个独立的 SCSI通道,我们称之为”磁盘双工”(附加安全性)。 RAID1表示一个简单及高效 解决方案为数据安全和系统可用性。
  优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用[b]缺点:要求2磁盘,但只使用其中一个存储[b]应用程序:通常使用于较小的系统,其中容量1磁盘足够,并用作启动盘
  RAID4RAID4非常类似于RAID0。 上面的数据分割在各磁盘之间。 此外,raid控制器也 会计算的冗余性(奇偶校验信息)存储在单个磁盘(p1、p2等)。 即使有一个磁盘 发生故障,所有的数据完全可用。 丢失的数据通过计算数据 以及奇偶校验信息。 与RAID1,只需要一个磁盘空间用于 冗余。 假如有一个RAID4磁盘阵列5磁盘驱动器、80%的安装磁盘 容量用户容量,则只有20%的用于冗余。 如果存在许多小 数据块,奇偶校验磁盘将出现吞吐量的瓶颈。 对于较大的数据块,raid4展示大大 提高的性能。
  优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用[b]优点:很好地利用了磁盘容量(N个磁盘的阵列,N-1用于数据存储)[b]缺点:必须计算冗余信息,这样就限制了写入性能[b]应用程序:通常用于较大的数据存储系统由于安装容量与实际 可用容量的比率较高
  RAID5
  与RAID4,奇偶校验数据在RAID5磁盘阵列中以条带形式分布于所有磁盘驱动器。 RAID5磁盘阵列提供 更加平衡的吞吐量。 即使中的小数据块,它多重任务和多用户环境 的响应时间都十分良好。 RAID5的安全级别相同与RAID4:当一个磁盘驱动器发生故障时,所有的数据 完全可用。 丢失的数据通过有效数据以及奇偶校验信息计算得出。
  优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用[b]优点:很好地利用了磁盘容量(N个磁盘的阵列,N-1用于数据存储)[b]缺点:必须计算冗余信息,这样就限制了写入性能[b]应用程序:通常用于较大的数据存储系统由于安装容量与实际 可用容量的比率较高
  RAID10
  RAID10综合了RAID0(性能)和RAID1(数据安全)。 与RAID4和RAID5,它 不用计算奇偶校验信息。 RAID10磁盘阵列提供了良好的性能和数据安全性。 类似于RAID0, 在较高序列负载条件下可以保证最佳性能。 与RAID1,50%的安装容量被用作 冗余。
  优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用[b]优点:良好的写入性能[b]缺点:需要偶数个磁盘,最少4,只有一半的磁盘容量用于[b]应用程序:通常使用于需要较高序列写入性能的场合
  [b]2、磁盘I/O的计算[b]每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。[b]下表给出了每磁盘I/O的计算公式:[b]RAID类型[b]计算方法[b]RAID0[b](Reads+Writes)/Number of Disks[b]RAID1[b](Reads+2*Writes)/2[b]RAID5[b][Reads+(4*Writes)]/Number of Disks[b]RAID10[b][Reads+(2*Writes)]/Number of Disks
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]