最近研究性能测试工具中发现这些所谓的性能测试工具的数据、全部来至windows操作系统提供的数据、然后通过API提供给性能测试工具、性能测试工具在用一种比较直观的图形展示出来。
也就是说不部分情况下如果把你没有弄明白性能监视器中数据得意义,那么性能测试工具的那些图表对你的意义也就没有多大的用处。
下面我整理了一部分windows中性能监视器中比较常用的性能计数器。
这里整理的比较多的内容:处理器对象、系统对象、逻辑磁盘对象、物理磁盘对象、内存。
这些性能计数器我们经常在使用的过程中都会用得到,所以这篇文章大部分内容是这些的。
▪ 1. 处理器对象(Processor Object)一条经验规则是不要使你所监控的每个处理器的C P U使用率高于9 0%。
峰值超过9 0%是可以接受的,但平均使用率超过9 0%则是应该避免的。
• 处理器时间百分比(%Processor Time)处理器执行一个非空闲线程的时间百分比。
用%1 0 0减去处理器空闲的总时间得出这个值。
这是整个系统的C P U使用的一个好的指示器。
• 特权时间百分比(%Privileged Time) 处理器用于在特权模式下(即,执行操作系统功能和运行驱动器,如I / O )工作时间的百分比。
这个时间包括C P U (或C P U )用于维护中断和延迟过程调用( D P C )的时间。
• 用户时间百分比(%User Time) 处理器用于在用户模式工作的时间百分比。
这种类型的工作是由应用产生的。
通常,希望极大化用户时间百分比的值,极小化特权时间百分比的值。
• 中断时间百分比(%Interrupt Time) CPU忙于维护硬件中断的时间百分比。
系统中的许多硬件部件,如鼠标、网络接口卡或磁盘控制器,都可以发出处理器中断。
你可以将中断看作为Windows NT正常操作的一部分发生。
• 中断数/秒(Interrupts/sec) 处理器每秒接收并处理的硬件中断的数量。
它不包括系统D P C,系统D P C单独计数。
▪ 2. 系统对象(System Object)系统对象与它的相关计数器衡量处理器上运行的线程的总计数据。
虽然使用这些计数器不能观察一个特定处理器的工作负载或一个特定线程的行为,但它们提供了有关整个系统性能有价值的内部信息。
系统计数器如下所示:• 处理器队列长度(Processor Queue Length) 处理器队列中的线程的数量。
换句话说,它是等待运行的线程数。
即使你的系统具有多个处理器,但只有一个队列用于处理器时间。
计数器只记录那些准备执行但仍处于等待的线程,不是那些正在运行的线程。
• 环境切换/秒(Context Switches/sec) 系统上的所有处理器从一个线程切换到另一个线程的组合比率。
当一个正在运行的线程自动地放弃处理器,处理器由一个高优先级的待命线程抢占时发生环境切换,或在用户模式和特权(核心)模式之间切换,以使用一个执行或子系统的服务。
这是线程的总和:计算机上运行在所有处理器上的所有线程的环境切换数/秒。
这个Processor Queue越大,对硬件性能的考验就越大,微软在windows2000时推荐的是如下:1。
对于多核系统(〈=3CPUS)推荐值为1-32。
对于四核以及以上的,推荐值为4-12但是目前操作系统为2003,CPU的硬件性能已经得到很大的提高,系统的处理能力也有所增强。
所以该性能检测的阈值可适当放大紧紧靠系统的队列平均数还是不够的,还要查看你的CPU的利用率和内存的使用情况故总结如下1:检查系统的CPU\MEM利用率,如果CPU利用率比较高\MEM比较高(同时大于50%).队列长度比较大的情况下,就要考虑升级硬件了2:CPU利用率一般(目前的CPU处理能力得到很大的提升,问题一般不会出在这里。
)而内存的利用率比较高(70%),队列长度大于10,就要考虑升级内存了。
3:如果CPU和MEM利用率都不高,可按照OPmanager推荐的做法来设置监控阈值▪ 3. SQL Server:缓冲区管理器对象( B u ffer Manager Object)缓冲区管理器计数器提供了SQL Server使用的内存缓冲区的有关信息。
这些计数器如下所示:• 高速缓存命中率( B u ffer Cache Hit Ratio)引用当前位于高速缓存中页的需求的百分率。
预先在内存中拥有页,允许SQL Server避免请求从磁盘子系统执行一次物理I / O。
因为访问内存相对于访问物理I / O,代价更小,一个高的缓冲区高速缓存命中率增强了系统的性能与吞吐量。
如果你的系统很好地调整过,这个命中率应该是8 0%或更高。
如果具有一个低的缓冲区高速缓存命中率,你应该为SQL Server分配更多的内存。
如果你已将现有的所有内存都分配给了SQL Server,那么需要增加系统中物理内存的数量。
• 高速缓存大小(页)(Cache Size) 在SQL Server缓冲区高速缓存中的页的数量。
这个数量乘以8 K B,即可得到正在使用的以千字节为单位的缓存数。
• 空闲缓冲区(Free Buffer) 空闲SQL Server内存缓冲区的数量。
• 读的页/秒(Page Reads/sec) 每秒请求的物理数据页I / O的数量。
• 偷取的页计数(Stolen Page Count) SQL Server用于缓冲区高速缓存的页数,这些内存被给予系统中的另外一个进程。
Windows NT回收这个内存以满足其他系统部件的需要。
• 写的页/秒(Page Writes/sec) 由SQL Server执行的每秒写的物理数据页的数量。
▪ 4. SQL Server:数据库对象(Database Object)数据库对象计数器提供了有关SQL Server数据库的信息,包括可用的空闲日志空间量和数据库中活动事务的数量。
对于系统中的每个数据库的每个计数器有一个实例。
这些计数器包括如下:• 日志刷新等待/秒(Log Flush Wait/sec) 在能够继续执行前,必须等待日志刷新的数据库提交数量。
• 日志使用的百分比(Percent Log Used) SQL Server实际使用的当前定义的日志空间的百分比。
▪ 5. SQL Server:常规统计对象(General Statistics Object)常规统计对象含有常规服务器范围活动的有关信息,它有一个计数器:• 用户连接数(User Connections) 系统中用户连接的当前数量。
▪ 6. SQL Server:闩对象(Latches Object)这个对象计数器提供了在内部SQL Server资源中有效的闩的信息。
计数器如下:• 平均闩等待时间(毫秒) ( Average Latch Wait Time) 闩请求在得到服务之前必须等待的平均时间,以毫秒为单位。
• 闩等待数/秒(Latch Waits/sec) 不能立即服务,被迫等待其他资源释放的闩请求的数量。
▪7. SQL Server:锁对象(Locks Object)锁对象提供了由SQL Server提出的各个锁请求的有关数据,例如锁生命周期和死锁。
可以在系统上具有多个这些计数器的实例。
计数器如下所示:• 平均等待时间(毫秒) ( Average Wait Time) 每个锁请求被迫等待的平均时间量,以毫秒为单位。
• 锁到期数/秒(Lock Timeouts/sec) 在系统中过期的锁请求的数量。
• 锁等待数/秒(Lock Wa i t s / s e c )不能立即满足,需要调用线程在给予锁之前处于等待状态的锁请求的数量。
• 死锁数/秒(Number of Deadlocks/sec) 导致产生死锁的锁请求的数量。
▪8. SQL Server:内存管理器对象(Memory Manager Object)内存管理器对象含有有关SQL Server内存使用的信息,包括SQL Server正在使用的高速缓存内存的数量。
这个对象下的计数器如下所示:• 内存授权挂起(Memory Grants Pending) 等待授予工作空间内存的进程的当前数量。
• S Q L高速缓存内存(KB)(SQL Cache Memory) SQL Server用于动态SQL 高速缓存的动态内存数量。
• 目标服务器内存( K B ) ( Ta rget Server Memory) SQL Server将会消耗的动态内存的总额。
• 总的服务器内存( K B ) ( Total Server Memory) SQL Server当前消耗的动态内存的总额。
▪9. SQL Server:S Q L统计对象(SQL Statistics Object)这个对象提供了系统上正在执行的S Q L查询的有关信息,包括查询编译和重新编译的数量的数据。
它有如下计数器:• 批请求/秒(Batch Requests/sec) 服务器接收到的S Q L批请求的数量。
• SQL 编译/秒(SQL Compilations/sec) SQL Server每秒执行的S Q L语句编译的数量。
• S Q L重新编译/秒(SQL Re-Compilations/sec) SQL Server每秒执行的S Q L语句重新编译的数量。
▪10. 逻辑磁盘对象(Logical Disk Object)逻辑磁盘对象提供了有关逻辑磁盘I / O性能的信息。
逻辑磁盘计数器与Windows NT磁盘系统管理员分配给逻辑磁盘驱动器的字母相关。
这个对象含有如下计数器:• 磁盘读时间百分比(%Disk Read Time) 选中的逻辑磁盘忙于服务读请求总共用去时间的百分比。
• 磁盘写时间百分比(%Disk Write Time) 选中的逻辑磁盘忙于服务写请求总共用去时间的百分比。
• 磁盘时间百分比(%Disk Time) 选中的逻辑磁盘忙于服务读请求或写请求总共用的时间的百分比,是磁盘写时间百分比与磁盘读时间百分比的和。
• 空闲时间百分比(%Idle Time) 逻辑磁盘在采样时间间隔中处于空闲状态的时间百分比。
• 平均磁盘队列长度( Avg. Disk Queue Length) 在采样的时间间隔中,选中的逻辑磁盘读请求和写请求排队的平均数量。
• 平均磁盘读队列长度( Avg. Disk Read Queue Length) 在采样的时间间隔中,对选中的逻辑磁盘读请求排队的平均数量。
• 平均磁盘写队列长度( Avg. Disk Write Queue Length) 在采样的时间间隔中,对选中的逻辑磁盘写请求排队的平均数量。
• 平均磁盘秒数/读( Avg. Disk sec/Read) 从逻辑磁盘读数据的平均时间,以秒为单位。