首页 > 代码库 > 【转】常用性能计数器

【转】常用性能计数器

---CPU
性能计数器说明 CPU:
1.System:%Total Processor Time  平均CPU利用率。指处理器执行非闲置线程时间的百分比,测量处理器繁忙的时间 这个计数器设计成用来作为处理器活动的主要指示器,可以选择单个CPU实例,也可以选择Total
2.System:%Processor Queue Length 等待处理器处理的线程数(正常范围为cpu数的1~3倍)
3.Processor: %User Time  非内核级应用程序占用的时间(如SQLServer或反病毒软件).表示耗费CPU的数据库操作,如排序等。如果该值很高,可
考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
4.Processor: %Interrupts/Sec 处理器每秒相应中断次数。即 处理器正在处理的来自应用程序或硬件的中断的数量。(持续超过1000表示存在问题,可能是糟糕驱动、硬件过度使用或硬件存成问题)
5.Process:%Processor Time   指处理器执行非闲置线程时间的百分比,测量处理器繁忙的时间 这个计数器设计成用来作为处理器活动的主要指示器,可以选择单个CPU实例,也可以选择Total
  如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的
6.Processor:%Privileged Time
  如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的
硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都

---DISK

DISK(Physical Disk):
队列长度计数器
1.%Avg.Disk Queue Length 跟踪在取样时间段内在队列中等待磁盘的请求数和正获取得服务的请求数.即 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
2.%Current Disk Queue Length 处于等待状态和正获得服务的请求数。即 指示被挂起的磁盘 I/O 请求的数量。如果这个值始终高于 2, 就表示产生了拥塞

吞吐量计数器
3.%Disk Bytes/Sec 测量传输速率,是磁盘吞吐量的重要指标。即在读写操作中,从磁盘传出或传送到磁盘的字节速率
4.%Disk Read Bytes/Sec
5.%Disk Write Bytes/Sec
利用率计数器
6.%Disk Time  计数器监视磁盘忙于读/写活动所用时间的百分比.在系统监视器中,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 计数器的值一直很高,则考虑下列事项:
a.使用速度更快的磁盘驱动器。
b.将某些文件移至其他磁盘或服务器。
c.如果正在使用一个 RAID 阵列,则在该阵列中添加磁盘。

注:
(如果使用RAID设备,%Disk Time计数器显示的值可以大于100%。如果大于100%,则使用Avg. disk queue length计数器决定正在等待磁盘访问的系统请求的平均数)

7.%Disk Read Time 和 %Disk Write Time 磁盘驱动器用于处理读取/写入请求的时间百分比
8.%Idle Time 磁盘系统没有处理请求且队列中没有请求的时间百分比
9.Disk Transfers/Sec Disk Reads/Sec  Disk Writes/Sec
其他
10.%Avg.Disk Sec/Transfer 报告数据传输速度(秒为单位),测量每次传输的平均时间(全部往返时间)。 即 写入或读取操作时向磁盘传送或从磁盘传出字节的平均数
11.%Avg.Disk Sec/Read  %Avg.Disk Sec/Write 报告从磁盘读取/写入数据的速度(秒为单位)
12.%Avg.Disk Time 报告选定磁盘驱动器用于处理读取与写入请求的时间百分比
13.%Avg.Disk Bytes/Transfer 测量输入/输出操作的(Avg.Disk Bytes/Read Avg.Disk Bytes/Write)
(磁盘瓶颈:磁盘活动数高、持续磁盘队列长、大量页面交换)

根据Disk sec/Transfer进行分析
一般来说,定义该数值小于15ms为Excellent,介于15~30ms之间为良好,30~60ms之间为可以接受,超过60ms则需要考虑更换硬盘或是硬盘的RAID方式了

----MEMORY
Memory:
1.Available Mbytes 当前还有多少内存可用(内存列表中的Zeroed\Free\Standby空间相加得到)即 可用物理内存的数量。
2.Pages/Sec 是指为解析硬页错误从磁盘读取或写入磁盘的页数。建议阈值20。Pages/sec的技术持续高于几百,可能有内存问题.
3.Page Faults/sec说明每秒发生页面失效次数,页面失效次数越多,说明操作系统向内存读取的次数越多。
此事需要查看Pages Read/sec的计数值,该计数器的阀值为10ms,如果计数值超过10ms
4.Pool Nonpaged Bytes 未分页池系统内存区域中的 RAM 数量
5.Committed Bytes 已分配给物理 RAM 用于存储或分配给页面文件的虚拟内存
6.Process: %Working Set 分配给相应进程的提交内存量,它可能包括当前位于物理内存中的共享内存和私有内容
7.Page Writes/sec 是指为了释放物理内存空间而将页写入磁盘的次数。
8.Pages Input/sec 指为解决页错误从磁盘上读取的页数。
9.Pages Output/sec 是指为了释放物理内存空间而写入磁盘的页数。
10.SQL Server:Buffer Manager:Cache Hit Ratio 缓存命中率
11.SQL Server:Buffer Manager:Total Pages 缓存池总页面数
12.SQL Server:Buffer Manager:Total Server Memory(KB) 指出SqlServer服务器当前使用了多少内存;Target Server Memory(KB)指出SqlServer要高效运行需要多少内存,它基于SqlServer保留的缓冲区数量。

如果发生了内存泄漏,Process\Private Bytes计数器和Process\Working set 计数器的值往往会升高,同时Available bytes会降低。


如果Pages Read/sec很低,同时%Disk Time和Average Disk Queue Length的值很高,则可能有磁盘瓶颈。
但是,如果队列长度增加的同时Pages Read/sec并未降低,则是内存不足。

如果Process不见了,修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance 下的Disable Performance Counters值为0.

-----NETWORK

网络(Network Interface )
1.Bytes Received/sec 使用本网络适配器接收的字节数
2.Bytes Sent/sec 使用本网络适配器发送的字节数
3.Bytes Total/sec 使用本网络适配器发送和接收的字节数

Server
Bytes Received/sec 把此计数器与网络适配器的总带宽相比较,确定网络连接是否产生瓶颈

--------SQLSERVER TIMES

SQL Server(访问方法) Access Methods
1.Page Splits/sec 每秒由于索引页溢出而发生的页拆分数.如果发现页分裂的次数很多,考虑提高Index的填充因子.数据页将会有更多的空间保留用于做数据的填充,从而减少页拆分
2.Pages Allocated/sec 在此 SQL Server 实例的所有数据库中每秒分配的页数。这些页包括从混合区和统一区中分配的页
3.Full Scans/sec 每秒不受限制的完全扫描数. 这些扫描可以是基表扫描,也可以是全文索引扫描
4.Re-Compilations/Sec 每秒语句重新编译的次数。计算语句重新编译被触发的次数。一般来说,这个数最好较小,存储过程在理想情况下应该只编译一次,
然后执行计划被重复使用. 如果该计数器的值较高,或许需要换个方式编写存储过程,从而减少重编译的次数

SQL Server: Databases
1.Log Flushes/sec 每秒日志刷新数目
2.Active Transactions 数据库的活动事务数
3.Backup/Restore Throughput/sec 每秒数据库的备份和还原操作的读取/写入吞吐量。例如,并行使用多个备份设备或使用更快的设备时,可以测量数据库备份操作性能的变化情况。
数据库的备份或还原操作的吞吐量可以确定备份和还原操作的进程和性能

SQL Server General Statistics
1.User Connections 系统中活动的SQL连接数. 该计数器的信息可以用于找出系统的最大并发用户数
2.Temp Tables Creation Rate 每秒创建的临时表/表变量的数目
3.Temp Tables For Destruction 等待被清除系统线程破坏的临时表/表变量数

SQL Server Locks
1.Number of Deadlocks/sec 指每秒导致死锁的锁请求数. 死锁对于应用程序的可伸缩性非常有害, 并且会导致恶劣的用户体验. 该计数器必须为0
2.Average Wait Time (ms) 每个导致等待的锁请求的平均等待时间。
3.Lock requests/sec 锁管理器每秒请求的新锁和锁转换数. 通过优化查询来减少读取次数, 可以减少该计数器的值

SQL Server:Memory Manager
1.Total Server Memory (KB) 从缓冲池提交的内存(这不是 SQL Server 使用的总内存)
2.Target Server Memory (KB) 服务器能够使用的动态内存总量
3.SQL Cache Memory(KB) 服务器正在用于动态 SQL 高速缓存的动态内存总数
4.Memory Grants Pending 指每秒等待工作空间内存授权的进程数. 该计数器应该尽可能接近0,否则预示可能存在着内存瓶颈

SQL Server Buffer Manager (页面计数器)
1.缓冲区高速缓存命中率 (Buffer CacheHit Ratio %)
指在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。该比率是缓存命中总次数与缓存查找总次数之比。经过很长时间后,该比率的变化很小。由于从缓存中读取数据比从磁盘中读取数据的开销小得多,一般希望该比率高一些。 该指标的值最好为90% 或更高。通常可以通过增加 SQL Server
可用的内存数量来提高该指标的值。增加内存直到这指标的值持续高于90%,表示90%
以上的数据请求可以从数据缓冲区中获得所需数据。 即 缓存命中率,在缓冲区高速缓存中找到而不需要从磁盘中读取(物理I/O)的页的百分比. 如果该值较低则可能存在内存不足或不正确的索引
2.Page Reads/sec 每秒发出的物理数据库页读取数。此统计信息显示的是所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据缓存、智能索引、更有效的查询或更改数据库设计等方法,将开销降到最低
3.Page Writes/sec 每秒执行的物理数据库页写入数
4.Page Life Expectancy 页若不被引用将在缓冲池中停留的秒数
5.Lazy Writes/Sec 每秒被缓冲区管理器的惰性编写器写入的缓冲区数
6.Checkpoint Pages/Sec 由要求刷新所有脏页的检查点或其他操作每秒刷新到磁盘的页数   
7.SQLServer:高速缓存命中率 (Cache Hit Ratio %)
  该值越高越好。如果持续低于80%,应考虑增加内存。
    指高速缓存命中次数和查找次数的比率。在SQL Server中,Cache包括Log Cache,Buffer
Cache以及Procedure Cache,该指标是指所有Cache的命中率,是一个总体的比率。 该指标的值越高越好。如果该指标的值持续低于80%,就需要增加更多的内存。  

8.平均闩等待时间(毫秒) (Average Latch Wait Time(ms))
    指一个SQL Server线程必须等待一个闩的平均时间。 如果该指标的值很高,则系统可能正经历严重的资源竞争问题。  
    
9.闩等待/秒(Latch Waits/sec)
    指在一个闩上每秒的平均等待数量。 如果该指标的值很高,则系统可能正经历严重的资源竞争问题。




在SQL Server上,涉及I/O的计数器有:
Average read bytes/sec,平均每秒的读取字节数  
Average write bytes/sec,平均每秒的写入字节数
Reads/sec, 每秒多少读
writes/sec,每秒多少写
Disk read bytes/sec, 每秒读取的传输速率
Disk write bytes/sec,每秒写入的传输速率
Average disk sec/read, 平均每个读花的时间,小于10ms表示性能很好,在10ms~20ms之间表示性能可以接受,如果大于20ms,说明存在I/O问题;
Average disk sec/write,平均每个写花的时间,小于10ms表示性能很好,在10ms~20ms之间表示性能可以接受,如果大于20ms,说明存在I/O问题。
Average disk queue length,在磁盘等待的IO个数,最好在1.5和2倍转轴个数(spindles)以内,如果高于这个值,一般说明IO子系统有一定的问题,但现在普遍使用RAID或者磁盘虚拟化,如果不详细了解具体的I/O子系统配置,很难从这个计数器判断出问题。



计算每磁盘的I/O数
  
   每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。
  
   每磁盘I/O计算方法
  
   RAID0计算方法:(Reads +Writes)/Number of Disks
  
   RAID1计算方法:(Reads +2*Writes)/2
  
   RAID5计算方法:[Reads +(4*Writes)]/Number of Disks
  
   RAID10计算方法:[Reads +(2*Writes)]/Number of Disks

raid0 就是把多个(最少2个)硬盘合并成1个逻辑盘使用,数据读写时对各硬盘同时操作,不同硬盘写入不同数据,速度快。   
raid1就是同时对2个硬盘读写(同样的数据)。强调数据的安全性。比较浪费。    
raid5也是把多个(最少3个)硬盘合并成1个逻辑盘使用,数据读写时会建立奇偶校验信息,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。相当于raid0和raid1的综合。    
raid10就是raid1+raid0,比较适合速度要求高,又要完全容错,当然¥也很多的时候。最少需要4块硬盘(注意:做raid10时要先作RAID1,再把数个RAID1做成RAID0,这样比先做raid0,再做raid1有更高的可靠性)

【转】常用性能计数器