如何通过Performance Log确定SQL的磁盘有性能问题?

1. 查看Disk Bytes/sec. 举个例子, 这个counter的最大值如果是11M, 那么说明work load并不高.

2. 查看Avg. Disk sec/Transfer. 举例, 这个counter的推荐值是<0.015.

3. 查看Avg. Disk Queue Length, 这个推荐值是<2.

 

一些比较重要的performance counter:

Counter

Description

LogicalDisk\

% Free Space

报告磁盘空间中未被分配的空间占逻辑卷中总可用空间的百分比.

当选择_Total实例的时候, 该计数器会重新计算每个盘总和.

PhysicalDisk对象没有这个计数器.

LogicalDisk|PhysicalDisk\

Avg. Disk Bytes/Transfer

衡量输入/输出(I/O)操作的数据量的大小. 如果磁盘相对快速地传输大量数据, 那么磁盘是高效的.

当衡量最大吞吐量的时候, 应该观察这个计数器.

要进一步地分析数据传输, 应当查看Avg. Disk Bytes/Read 和Avg. Disk Bytes/Write两个计数器.

LogicalDisk|PhysicalDisk\

Avg. Disk sec/Transfer

标示着数据被移动的速度(以秒衡量). 衡量每次数据传输的平均时间, 而不论读或写的数据的大小. 它展示了从数据离开Diskperf.sys, 到操作完成的读或写的总时间.

这个计数器的高数值可能意味着系统因为队列太长而在重试请求, 或者由于不常见地磁盘错误而重试请求.

要进一步地分析数据传输, 应当查看Avg. Disk sec/Read 和Avg. Disk sec/Write两个计数器.

LogicalDisk|PhysicalDisk\

Avg. Disk Queue Length

记录了在计数器数据采样点之间的时间内被放入队列中等待磁盘的请求的数量, 也包括正在被处理的请求在内. 所以, 这有可能是有点夸大的数据.

如果有多于两个的请求持续地在一个单磁盘的系统中等待, 那么磁盘可能就是瓶颈.

要进一步地分析队列长度的数据, 应当查看Avg. Disk Read Queue Length 和Avg. Disk Write Queue Length两个计数器.

LogicalDisk|PhysicalDisk\

Current Disk Queue Length

标示着当前正在等待的磁盘请求的数量, 也包括正在被处理的请求.

受许多因素的影响, 除非工作量的状态比较稳定, 并且你收集了充足的采样, 才能建立一个模式.

这是一个即刻的数值或是当前队列的长度, 跟Avg. Disk Queue Length, Avg. Disk Read Queue Length, 和Avg. Disk Write Queue Length不一样, 那三个反应的是平均值.

LogicalDisk|PhysicalDisk\

Disk Bytes/sec

标示着字节被传输的速率, 该计数器是磁盘吞吐量的主要衡量指标.

要进一步地分析读或写的传输的数据, 应当分别查看Disk Read Bytes/sec 或Disk Write Bytes/sec两计数器.

LogicalDisk|PhysicalDisk\

Disk Transfers/sec

标示着每秒钟完成的读和写操作数, 而不论这些读写操作涉及到多少数据. 该计数器衡量磁盘的利用率.

如果该值超过50(如果是striped的分卷, 那就是看平均到每块物理磁盘上), 那么这可能就是一个瓶颈了.

要进一步地分析读或写的数据传输, 应当分别查看Disk Read/sec 和Disk Writes/sec

LogicalDisk\

Free Megabytes

汇报磁盘上没被分配的字节的量.

PhysicalDisk对象上, 没有这个计数器.

LogicalDisk|PhysicalDisk\

Split IO/sec

汇报操作系统将I/O请求分为多个磁盘请求的比率. 如果一个程序请求的数据大小太大, 以至于不能放在一个单个请求中, 或是磁盘有碎片, 那么一个split I/O请求可能会发生.

影响IO请求大小的因素可以包括应用程序设计, 文件系统, 驱动程序. 高比率的split I/O可能本身不会作为一个问题出现. 然而, 在单磁盘系统中, 这个计数器的高数值趋向于标志着磁盘碎片.

LogicalDisk|PhysicalDisk\

% Disk Time

报告选择的磁盘驱动器忙于服务读写请求的时间比率. 因为这个计数器的数据会跨越多个采样, 持续地夸大磁盘利用率, 那这个值跟%Idle Time比较, 这样能获得更清晰的认识.

默认这个计数器的值不会超过100%的.

LogicalDisk|PhysicalDisk\

% Disk Write Time

汇报被选择的磁盘忙于处理写请求所占的时间的百分比.

LogicalDisk|PhysicalDisk\

% Disk Read Time

汇报被选择的磁盘忙于处理读请求所占的时间的百分比.

LogicalDisk|PhysicalDisk\

% Idle Time

汇报磁盘系统没在处理任何请求, 而且没有任何工作在队列中的时间的百分比. 注意这个计数器和%Disk Time相加的时候可能结果不是100%, 因为%Disk Time可能会夸打磁盘的利用率.

 

参考资料:

Examining and Tuning Disk Performance

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

posted on 2012-04-18 16:36  中道学友  阅读(3793)  评论(0编辑  收藏  举报

导航

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