免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2543 | 回复: 0
打印 上一主题 下一主题

磁盘I/O评估方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 20:34 |只看该作者 |倒序浏览

如果将 SQL Server 配置成仅包含几个千兆字节 (GB) 的数据,且不承担繁重的读或写活动,便没有太大的必要关注磁盘 I/O 主题,以及在硬盘之间平衡 SQL Server I/O 活动以获取最佳性能。但是要建立包含成百上千 GB 字节的数据且/或承担繁重的读和/或写活动的大型 SQL Server 数据库,就有必要在多个硬盘之间平衡负荷,以配置最佳的 SQL Server 磁盘 I/O 性能
    标称的磁盘传输率与 SQL Server 的关系
   优化数据库性能最重要的一个方面是调整 I/O 性能。SQL Server 当然也不例外。除非 SQL Server 运行在一台具有足够大的内存可容纳整个数据库的机器上,否则 I/O 性能将由磁盘 I/O 子系统处理 SQL Server 数据读写的速度来决定。
请记住下面的经验法则:标准的 Wide Ultra SCSI-3 硬盘每秒钟可为 Windows 和 SQL Server 提供 75 个不连续(随机)的 I/O 操作和 150 个连续的 I/O 操作。这种硬盘的标称传输率在 40 MB/秒左右。请记住更有可能限制数据库服务器的传输率是每秒钟 75/150 I/O,而不是 40 MB/秒。具体演算如下:
每秒 75 次随机 I/O 操作)X(8 KB 传输)= 每秒 600 KB  
  上面的计算表示如果在给定的硬盘上进行严格的随机读或写 SQL Server 操作(单页读和写),有可能该硬盘最高只能达到每秒 600 KB(即每秒 0.6 MB)的处理能力。这比驱动器标定的每秒 40 MB 的 I/O 处理能力要低得多。SQL Server 工作线程、Graphical ShowPlan 和 LazyWrtier 执行 8 KB 传输量的 I/O。  
   (每秒 150 个连续 I/O 操作)X(8 KB 传输)= 每秒 1,200 KB
  上面的计算表示如果在给定的硬盘上进行严格的连续读或写 SQL Server 操作(单页读或写),有可能在该硬盘上达到最高每秒 1,200 KB(即每秒 1.2 MB)的处理能力。
(每秒 75 个随机 I/O 操作)X(64 KB 传输)= 每秒 4,800 KB (4.8 MB)
   上面的计算表示预读的最次方案(假定进行的都是随机 I/O)。请注意即便在完全进行随机 I/O 的情况下,64 KB 传输量仍然可以提供比单页传输率(0.6 和 1.2 MB/s)要好得多的 I/O 磁盘传输率 (4.8 MB/s):
(每秒 150 个连续 I/O 操作)X(64 KB 传输)= 每秒 9,600 KB (9.6 MB)
  上面的计算表示如果在给定的硬盘上进行严格的连续读或写 SQL Server 操作,有可能在该硬盘上达到最高每秒 9.6 MB 的 I/O 处理能力。这比随机 I/O 的情况要好得多。SQL Server Read-Ahead Manager 以 64 KB 传输率执行磁盘 I/O,并试图安排读操作,以便连续地(通常也称为“按磁盘顺序”)进行预读扫描。因为 Read-Ahead Manager 的目的是连续地执行 I/O 操作,而进行页拆分可能导致扩展盘区的读取不连续,这就是要消除和防止页拆分的原因。
    Log Manager 最大可连续地将 32 KB 字节写入日志文件。  
   连续和不连续的磁盘 I/O 操作
  连续和不连续这两个词在硬盘操作中用得非常多。有必要花一些时间来解释一下这两个词对于硬盘的意义。一个硬盘由一组驱动器盘片组成。每个驱动器盘片都通过一组带读/写磁头的取数臂为读/写操作提供服务,这些读/写磁头可以在盘片之间移动,读取驱动器盘片中的信息或者将数据写入盘片。就 SQL Server 而言,应记住硬盘的两个重要特性.
    读/写磁头和相关的磁盘取数臂需要移动才能在 SQL Server 和 Windows 所要求的硬盘盘片的位置上进行查找和操作。如果数据所在的硬盘盘片的位置不连续,硬盘驱动器要花多得多的时间才能将磁盘取数臂和读/写磁头移动到所有需要的硬盘盘片位置。如果所需要的数据全部位于硬盘盘片上的连续物理扇区,情况则相反,磁盘取数臂和读/写磁头只需进行很小的移动就能完成所需磁盘 I/O 操作。连续和不连续的情况下所花的时间有很大的差异,每个不连续的数据查找大约要花 50 毫秒,而连续的数据查找则只需大约 2-3 毫秒。请注意这些值是粗略估计出来的,具体值将取决于不连续的数据在磁盘上分布的疏密、硬盘盘片的旋转速度 (RPM) 以及硬盘的其它物理属性。主要要记住的一点是连续 I/O 有益于 SQL Server 性能。
    磁盘 I/O 传输率/RAID 控制器传输率/PCI 总线带宽
   标准的硬盘提供的最大传输率是每秒 40 MB 或每秒 75 个不连续磁盘传输/150 个连续磁盘传输。 标准 RAID 控制器标称的传输率大约为每秒 40 MB 或(非常接近)每秒 2,000 个磁盘传输。外围元件互连 (PCI) 总线的标定传输率大约为每秒 133 MB 或更高。设备实际的传输率将与标称的传输率不同,但这个问题对于我们此处的讨论并不重要。重要的是了解如何用这些传输率来粗略估算与每个 RAID 控制器相联的硬盘的数量,以及一个 PCI 总线连接多少个驱动器和 RAID 控制器不至于出现 I/O 瓶颈问题。
    在前面的“标称的磁盘传输率和 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。
   另一种计算可与 RAID 控制器相联的驱动器的数目的方法是从每秒的磁盘传输出发,而不是从每秒的字节数出发。如果某个硬盘每秒可进行 75 个不连续的(随机)I/O,理论上 26 个联在一起的驱动器每秒钟可产生 2,000 个不连续的 I/O,足以达到单个 RAID 控制器的最大 I/O 处理能力。另一方面,只需 13 个硬盘联在一起就能产生每秒 2,000 个连续 I/O,从而使 RAID 控制器以最大吞吐量运行,这是因为单个硬盘每秒可以承受 150 个连续 I/O。  
    现在来讨论 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 控制器。  
   这些计算有助于说明组成磁盘 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 数。  
   但是我们希望能够通过这部分让您了解所标定的传输率对于 SQL Server 的实际意义。
   以下是磁盘I/O的分析方法:
    (1)计算每磁盘的I/O数
        计算公式:RAID0 (reads+writes)/number
                RAID1 (reads+2*writes)/2
                RAID5 (reads+4*writes)/number
                RAID10 (reads+2*writes)/number
         通过公式计算出I/O数与磁盘标称的I/O对比,如果低于标称,说明存在磁盘的性能瓶颈
       (2)与处理器的Privileged Time合并进行分析
       (3)根据Disk sec/Transfer进行分析



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12631/showart_2123218.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP