windows 下如何查看磁盘IO 性能 2012-04-10 15:56:48 分类: 系统运维 通常,我们很容易观察到数据库服务器的内存和CPU 压力。但是对I/O 压力没有直观的判断方法。磁盘有两个重要的参数: Seek time、 Rotational latency。正常的I/O 计数为:①1000/(Seek time+Rotational latency)*0.75,在此范围内属正常。当达到85%的I/O 计数以上时则基本认为已经存在 I/O 瓶劲。理论情况下,磁盘的随机读计数为125、顺序读计数为225。对于数据文件而言是随机读写,日志文件是顺序读写。因此,数据文件建议存放于 RAID5 上,而日志文件存放于 RAID10 或 RAID1 中。 下面假设在有4 块硬盘的RAID5 中观察到的Physical Disk 性能对象的部分值: Avg. Disk Queue Length 12 Avg. Disk Sec/Read .035 Avg. Disk Sec/Write .045 Disk Reads/sec 320 Disk Writes/sec 100 Avg. Disk Queue Length,12/4=3,每块磁盘的平均队列建议不超过 2。 Avg. Disk Sec/Read 一般不要超过 11~15ms。 Avg. Disk Sec/Write 一般建议小于 12ms。 从上面的结果,我们看到磁盘本身的I/O 能力是满足我们的要求的,原因是因为有大量的请求才导致队列等待,这很可能是因为你的SQL 语句导致大量的表扫描所致。在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用几 块硬盘可以满足这样 的并 发 要求: Raid 0 -- I/Os per disk = (reads + writes) / number of disks Raid 1 -- I/Os per disk = [reads + (2 * writes)] / 2 Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disks Raid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks 我们得 到的结果是:(320+400)/4=180,这时你可以根 据公式①来 得 到磁盘的正常I/O 值。假设现 在正常I/O 计数为125,为了 达到这个结果:720/125=5.76。就 是说 要用6 块磁盘才能达到这样 的要求。 但是上面的Disk Reads/sec 和Disk Writes/sec 是个很难 正确 估 算的值。因此只 能在系统比 较忙 时,大概 估 算一个平均值,作 为计算公式的依 据。另 一个是你很难 从客 户 那 里 得 到Seek time、 Rotational latency 参数的值,这也 只 能用理论值 125 进行计算。 ###########################################...