最近研究性能测试工具中发现这些所谓的性能测试工具的数据、全部来至windows操作系统提供的数据、然后通过API提供给性能测试工具、性能测试工具在用一种比较直观的图形展示出来。也就是说不部分情况下如果把你没有弄明白性能监视器中数据得意义,那么性能测试工具的那些图表对你的意义也就没有多大的用处。下面我整理了一部分windows中性能监视器中比较常用的性能计数器。
这里整理的比较多的内容:处理器对象、系统对象、逻辑磁盘对象、物理磁盘对象、内存。这些性能计数器我们经常在使用的过程中都会用得到,所以这篇文章大部分内容是这些的。
在测试程序的一些资源使用情况时,可以使用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) 系统上的所有处理器从一个线程切换到另一个线程的组合比率。当一个正在运行的线程自动地放弃处理器,处理器由一个高优先级的待命线程抢占时发生环境切换,或在用户模式和特权(核心)模式之间切换,以使用一个执行或子系统的服务。这是线程的总和:计算机上运行在所有处理器上的所有线程的环境切换数/秒。
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) 从逻辑磁盘读数据的平均时间,以秒为单位。
• 平均磁盘秒数/写( Avg. Disk sec/Write) 向逻辑磁盘写数据的平均时间,以秒为单位。
• 平均磁盘秒数/传输( ( Avg. Disk sec/Transfer) 从逻辑磁盘进行传输的平均时间,以秒为单位。
• 磁盘读/秒(Disk Reads Bytes/sec) 逻辑磁盘上每秒读字节。
• 磁盘读/秒(Disk Writes Bytes/sec) 逻辑磁盘上每秒写字节。
• 磁盘读/秒(Disk Reads/sec) 逻辑磁盘上的读操作比率。
• 磁盘写/秒(Disk Writes/sec) 逻辑磁盘上的写操作比率。
• 磁盘传输/秒(Disk Transfers/sec) 逻辑磁盘上的读和写操作的比率。
11. 物理磁盘对象(PhysicalDisk Object)
物理磁盘对象提供了有关物理磁盘I / O性能的信息。它的磁盘计数器与系统中的物理驱动器有关,并且只有当运行了D i s k P e r f服务时,它才被激活。这个对象下的计数器如下所示:
• 磁盘读时间百分比(%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) 从物理磁盘读数据的平均时间,以秒为单位。
• 平均磁盘秒数/写( Avg. Disk sec/Write) 向物理磁盘写数据的平均时间,以秒为单位。
• 平均磁盘秒数/传输( Avg. Disk sec/Transfer) 从物理磁盘进行传输的平均时间,以秒为单位。
• 磁盘读/秒(Disk Reads Bytes/sec) 物理磁盘上每秒读字节。
• 磁盘读/秒(Disk Writes Bytes/sec) 物理磁盘上每秒写字节。
• 磁盘读/秒(Disk Reads/sec) 物理磁盘上的读操作比率。
• 磁盘写/秒(Disk Writes/sec) 物理磁盘上的写操作比率。
• 磁盘传输/秒(Disk Transfers/sec) 物理磁盘上的读和写操作的比率。
12. 内存
内存在任何系统中都是一个非常有价值的资源。Windows NT不只允许过量使用内存,而且鼓励你过量使用内存。Windows NT提供了一种透明机制,允许应用“相信”它们具有比系统中可用的物理内存更多的内存。当Windows NT处理应用时,它将不使用的内存页调出(交换出)到磁盘上的页文件中。在大多数系统中,页调度是正常的,但过量的页调度会削弱整个系统的性能。下面的计数器允许你监控系统的页调度。
• 失效的页/秒(Page Faults/sec) 每秒由处理器处理的失效页的全部数量。当一个进程需
要的代码或数据不在它的工作区(它的空间在物理内存中)中时,发生失效页。这个计数
器包括硬的页失效(那些需要磁盘访问的)和软的页失效(在物理内存的其他地方发现了失
效页)。
• 读的页/秒(Page Reads/sec) 读取磁盘以解决硬的页失效所需要的时间数(当一个进程需要的代码或数据不在其工作区或内存中的其他地方,必须从磁盘提取这些代码和数据时,发生硬的页失效)。这个计数器包括为满足在文件系统高速缓存(通常是应用请求的)以及在非高速缓存映像内存文件中的失效而进行的读。
• 写的页/秒(Page Writes/sec) 将页写向磁盘以释放物理内存空间的时间数。只有当页在物理内存中被改变的时候,将页写入磁盘,这样,它们更有可能含有数据,而不是代码。
• 页/秒(Pages/sec) 为解决硬的页失效,所需要读或写磁盘的时间数。它是读的页/秒与写的页/秒的计数器的和。
如果觉得《windows性能监视器基本指标》对你有帮助,请点赞、收藏,并留下你的观点哦!