功能测试 性能测试 安全测试 质量管理 配置管理 测试管理 TD |QC|QTP|LR

磁盘I/O分析(LR)

上一篇 / 下一篇  2008-07-22 06:59:12 / 精华(1) / 置顶(1) / 个人分类:LR与性能测试

测试类型
  • 类别:LR

磁盘 I/O 性能

    如果将 SQL Server 配置成仅包含几个千兆字节 (GB) 的数据,且不承担繁重的读或写活动,便没有太大的必要关注磁盘 I/O 主题,以及在硬盘之间平衡 SQL Server I/O 活动以获取最佳性能。但是要建立包含成百上千 GB 字节的数据且/或承担繁重的读和/或写活动的大型 SQL Server 数据库,就有必要在多个硬盘之间平衡负荷,以配置最佳的 SQL Server 磁盘 I/O 性能

`&|3Ksk8^0

,}0^IN)J|9u*q*R.W0    标称的磁盘传输率与 SQL Server 的关系51Testing软件测试网%Ac$\EeZ7o

9kr%e{'iF0   优化数据库性能最重要的一个方面是调整 I/O 性能。SQL Server 当然也不例外。除非 SQL Server 运行在一台具有足够大的内存可容纳整个数据库的机器上,否则 I/O 性能将由磁盘 I/O 子系统处理 SQL Server 数据读写的速度来决定。51Testing软件测试网/BJd_ R4V2z#^8O#Kb

qLte'l8N R9V0请记住下面的经验法则:标准的 Wide Ultra SCSI-3 硬盘每秒钟可为Windows和 SQL Server 提供 75 个不连续(随机)的 I/O 操作和 150 个连续的 I/O 操作。这种硬盘的标称传输率在 40 MB/秒左右。请记住更有可能限制数据库服务器的传输率是每秒钟 75/150 I/O,而不是 40 MB/秒。具体演算如下:51Testing软件测试网M%iq7\+oK

51Testing软件测试网N$L4Z"|F%Cf RX

每秒 75 次随机 I/O 操作)X(8 KB 传输)= 每秒 600 KB  51Testing软件测试网-OJc4IQV9`

51Testing软件测试网K6H5R5{)@n

  上面的计算表示如果在给定的硬盘上进行严格的随机读或写 SQL Server 操作(单页读和写),有可能该硬盘最高只能达到每秒 600 KB(即每秒 0.6 MB)的处理能力。这比驱动器标定的每秒 40 MB 的 I/O 处理能力要低得多。SQL Server 工作线程、Graphical ShowPlan 和 LazyWrtier 执行 8 KB 传输量的 I/O。  

`nu%eP`d051Testing软件测试网Q.`3AGdcv7miZ p

   (每秒 150 个连续 I/O 操作)X(8 KB 传输)= 每秒 1,200 KB51Testing软件测试网1T7x'Ed6m7eD&vM]z

51Testing软件测试网Oj3{*D(`mt@

  上面的计算表示如果在给定的硬盘上进行严格的连续读或写 SQL Server 操作(单页读或写),有可能在该硬盘上达到最高每秒 1,200 KB(即每秒 1.2 MB)的处理能力。

p'L4Bw\mptd7zq/T.?0

+mci?V:a? x/[Q0(每秒 75 个随机 I/O 操作)X(64 KB 传输)= 每秒 4,800 KB (4.8 MB)51Testing软件测试网4v;b1T1y#[)_ Or+u

D-I%r4W } Ss1l ?0   上面的计算表示预读的最次方案(假定进行的都是随机 I/O)。请注意即便在完全进行随机 I/O 的情况下,64 KB 传输量仍然可以提供比单页传输率(0.6 和 1.2 MB/s)要好得多的 I/O 磁盘传输率 (4.8 MB/s):

-@ _m4C Wp.Cz051Testing软件测试网 E2? bDYmu

(每秒 150 个连续 I/O 操作)X(64 KB 传输)= 每秒 9,600 KB (9.6 MB)

g `P3cU K051Testing软件测试网\-X~y E1?N)Okr

  上面的计算表示如果在给定的硬盘上进行严格的连续读或写 SQL Server 操作,有可能在该硬盘上达到最高每秒 9.6 MB 的 I/O 处理能力。这比随机 I/O 的情况要好得多。SQL Server Read-Ahead Manager 以 64 KB 传输率执行磁盘 I/O,并试图安排读操作,以便连续地(通常也称为“按磁盘顺序”)进行预读扫描。因为 Read-Ahead Manager 的目的是连续地执行 I/O 操作,而进行页拆分可能导致扩展盘区的读取不连续,这就是要消除和防止页拆分的原因。

K6c'q A~*V-Y4Ex zJ0

ybl7r0w T0c0    Log Manager 最大可连续地将 32 KB 字节写入日志文件。  

T/\!Flm6B1YP0

bj4pE9c,kV0   连续和不连续的磁盘 I/O 操作

8wKO!z!D2Vd C}0

\q[ Cko4]0  连续和不连续这两个词在硬盘操作中用得非常多。有必要花一些时间来解释一下这两个词对于硬盘的意义。一个硬盘由一组驱动器盘片组成。每个驱动器盘片都通过一组带读/写磁头的取数臂为读/写操作提供服务,这些读/写磁头可以在盘片之间移动,读取驱动器盘片中的信息或者将数据写入盘片。就 SQL Server 而言,应记住硬盘的两个重要特性.51Testing软件测试网/b&Pk2yKj,MM8t

51Testing软件测试网 v`9YH"Xt6N3d

    读/写磁头和相关的磁盘取数臂需要移动才能在 SQL Server 和Windows所要求的硬盘盘片的位置上进行查找和操作。如果数据所在的硬盘盘片的位置不连续,硬盘驱动器要花多得多的时间才能将磁盘取数臂和读/写磁头移动到所有需要的硬盘盘片位置。如果所需要的数据全部位于硬盘盘片上的连续物理扇区,情况则相反,磁盘取数臂和读/写磁头只需进行很小的移动就能完成所需磁盘 I/O 操作。连续和不连续的情况下所花的时间有很大的差异,每个不连续的数据查找大约要花 50 毫秒,而连续的数据查找则只需大约 2-3 毫秒。请注意这些值是粗略估计出来的,具体值将取决于不连续的数据在磁盘上分布的疏密、硬盘盘片的旋转速度 (RPM) 以及硬盘的其它物理属性。主要要记住的一点是连续 I/O 有益于 SQL Server 性能。

tO'NVt7`X\0

_2?6|@EPQ ~0    磁盘 I/O 传输率/RAID 控制器传输率/PCI 总线带宽

!wwr4A6Bl6kY051Testing软件测试网xT%R3]@'N3DM2t

   标准的硬盘提供的最大传输率是每秒 40 MB 或每秒 75 个不连续磁盘传输/150 个连续磁盘传输。 标准 RAID 控制器标称的传输率大约为每秒 40 MB 或(非常接近)每秒 2,000 个磁盘传输。外围元件互连 (PCI) 总线的标定传输率大约为每秒 133 MB 或更高。设备实际的传输率将与标称的传输率不同,但这个问题对于我们此处的讨论并不重要。重要的是了解如何用这些传输率来粗略估算与每个 RAID 控制器相联的硬盘的数量,以及一个 PCI 总线连接多少个驱动器和 RAID 控制器不至于出现 I/O 瓶颈问题。51Testing软件测试网 i IX(^uL-c k1\Z

51Testing软件测试网`8T s:ZIa

    在前面的“标称的磁盘传输率和 SQL Server 的关系”部分,已计算出每秒钟最多可以从硬盘读出或写入硬盘的 SQL Server 数据量为 9.6 MB。假定 RAID 控制器每秒钟可处理 40 MB,粗略地计算可与一个 RAID 控制器相联的硬盘数目应为 40 除以 9.6,答案约等于 4。这表示当 SQL Server 只进行 64 KB 的连续 I/O 时,可与一个控制器相联的驱动器最多为 4 个。类似地,前面已计算出对于 64 KB 的全部不连续 I/O,从硬盘到控制器的最大数据传输率为 4.8 MB/秒。40 MB/秒除以 4.8 MB/秒约等于 8。也就是说,在不连续的 64 KB 方案中,与单个控制器相联的硬盘最多为 8 个。随机 8 KB 数据传输方案需要的驱动器最多。40 除以 0.6 约等于 66,这表示需要 66 个驱动器才能使进行 100% 随机 8 KB 读和写的 RAID 控制器饱和。这不是实际可行的方案,因为预读和日志记录所使用的传输量大于 8 KB,并且 SQL Server 不可能执行 100% 的随机 I/O。 

+B)R[v+h8mYQ8\U7D051Testing软件测试网Z2nUF%Q aR.w R _z

   另一种计算可与 RAID 控制器相联的驱动器的数目的方法是从每秒的磁盘传输出发,而不是从每秒的字节数出发。如果某个硬盘每秒可进行 75 个不连续的(随机)I/O,理论上 26 个联在一起的驱动器每秒钟可产生 2,000 个不连续的 I/O,足以达到单个 RAID 控制器的最大 I/O 处理能力。另一方面,只需 13 个硬盘联在一起就能产生每秒 2,000 个连续 I/O,从而使 RAID 控制器以最大吞吐量运行,这是因为单个硬盘每秒可以承受 150 个连续 I/O。  

1Y lL rA(pW0

"o2rgG4V,zs0    现在来讨论 PCI 总线。请注意 RAID 控制器和 PCI 总线瓶颈没有与硬盘有关的 I/O 瓶颈常见。但是为便于说明,我们假定与某个 RAID 控制器相联的一组硬盘足够忙,以至于每秒有 40 MB 的吞吐量通过控制器。下一个问题是“PCI 总线上联多少个 RAID 控制器比较安全,不会引发 PCI 总线 I/O 瓶颈问题?”要进行粗略估算,可以用 PCI 总线的 I/O 处理容量除以 RAID 控制器的 I/O 处理容量:133 MB/秒除以 40 MB/秒约等于 3,这表示一个 PCI 总线上可以联大约 3 个 RAID 控制器。请注意多数大型服务器带有多个 PCI 总线,这使得单个服务器上可以安装更多的 RAID 控制器。  51Testing软件测试网v _0B1LA h:P;V{

51Testing软件测试网/v"PGQ~e+}[ `

   这些计算有助于说明组成磁盘 I/O 子系统的各个组件(硬盘、RAID 控制器和 PCI 总线)的传输率的关系,但不应按字面理解。这是因为这些计算假定全部进行连续数据存取或不连续数据存取,而这在生产数据库服务器环境中几乎是不可能的。实际上,通常既有连续 I/O,也有不连续 I/O,既有 8 KB I/O,也有 64 KB I/O。还有其它因素使得很难准确估算一次通过一组硬盘的 I/O 操作数。RAID 控制器可用的插件读/写高速缓存增加了驱动器组可有效产生的 I/O 数。既然很难准确估算出 SQL Server 环境所需要的 8 KB 和 64 KB I/O 的数,所以同样也很难估算出所增加的 I/O 数。  51Testing软件测试网&sr `]o(Q#Z.bM

B8aQ#Jd-c0   但是我们希望能够通过这部分让您了解所标定的传输率对于 SQL Server 的实际意义。51Testing软件测试网 h0~/om#Y3f1JW(E

#K6b[QB}-Zi-d)p8y qX0   以下是磁盘I/O的分析方法:51Testing软件测试网/~Q4j#b A kA

JU`vwx})E(c._2G&L0    (1)计算每磁盘的I/O数51Testing软件测试网+vu+A`tte

1Q,z3J$BQ0        计算公式:RAID0 (reads+writes)/number

/tY7rZ L051Testing软件测试网X;q$@;@%h&o$mOf2G$P9H

                RAID1 (reads+2*writes)/251Testing软件测试网,p&{|+m1A*R)C gf y

51Testing软件测试网w,FwU6pf

                RAID5 (reads+4*writes)/number

c'qi,c|jPdaK0

*|0j-hd7e ["^0                RAID10 (reads+2*writes)/number51Testing软件测试网u KCA?!T`|-}e

'b(f,iLO3b6^.PfYK0         通过公式计算出I/O数与磁盘标称的I/O对比,如果低于标称,说明存在磁盘的性能瓶颈51Testing软件测试网r1kQD8s#@&Z_`

,OY@.C\ P0       (2)与处理器的Privileged Time合并进行分析51Testing软件测试网!{:kC;x0g4IYeD4v

6wMO*EJF }{G0       (3)根据Disk sec/Transfer进行分析

ek@a }051Testing软件测试网9\v$L4HI

   (摘取网上部分资料)    

$o.C!{u{0

TAG: LR

 

评分:0

我来说两句

Open Toolbar