磁盘性能分析Disk(DOC)

上传人:人*** 文档编号:471960697 上传时间:2023-05-04 格式:DOCX 页数:13 大小:30.21KB
返回 下载 相关 举报
磁盘性能分析Disk(DOC)_第1页
第1页 / 共13页
磁盘性能分析Disk(DOC)_第2页
第2页 / 共13页
磁盘性能分析Disk(DOC)_第3页
第3页 / 共13页
磁盘性能分析Disk(DOC)_第4页
第4页 / 共13页
磁盘性能分析Disk(DOC)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《磁盘性能分析Disk(DOC)》由会员分享,可在线阅读,更多相关《磁盘性能分析Disk(DOC)(13页珍藏版)》请在金锄头文库上搜索。

1、Windows性能计数器-磁盘性能分析DiskPhysical Disk:单次IO大小Avg.Disk Bytes/ReadAvg.Disk Bytes/WriteIO响应时间Avg.Disk sec/Read磁盘每次读取需要的时间,一般不超过一般不要超过1115ms。Avg.Disk sec/Write一般小于 12msIOPS (每秒读/写的IO数)理论情况下,磁盘的随机读计数为125、顺序读计数为225实际测试值与理论值对比,从而判断磁盘是否为瓶颈DiskReads/secDiskWrites/secDiskTransfers/secIO吞吐率(磁盘每秒读/写字节数)DiskBytes/

2、secDiskRead Bytes/secDiskWrite Bytes/sec磁盘队列长度Avg. DiskQueue Length: 磁盘平均队列长度不应超过2,即:队列长度/磁盘数磁盘有两个重要的参数:Seek time、Rotational latency。正常的 I/O 计数为: 1000/(Seek time+Rotational latency)*0.75,在此范围 内属正常。当达到85%的I/O计数以上时则基本认为已经存在I/O瓶颈。理论 情况下,磁盘的随机读计数为125、顺序读计数为225。对于数据文件而言是随 机读写,日志文件是顺序读写。因此,数据文件建议存放于RAID5

3、上,而日志文 件存放于RAID10或RAID1中。附:15000 RPM: 150 随机 IOPS10000 RPM: 110 随机 IOPS5400 RPM: 50 随机 IOPS下面假设在有4块硬盘的RAID5中观察到的Physical Disk性能对象的部分 值:队列长度读数据所用时间ms写数据所用时间ms每秒读数据量每秒写数据量Avg. DiskQueue Length 12Avg. DiskSec/Read .035Avg. DiskSec/Write .045DiskReads/sec 320DiskWrites/sec 100Avg. DiskQueue Length, 12/4

4、=3,每块磁盘的平均队列建议不超过2。Avg. DiskSec/Read 一般不要超过 1115ms。Avg. DiskSec/Write 一般建议小于 12ms。从上面的结果,我们看到磁盘本身的I/O能力是满足我们的要求的,原因是因为 有大量的请求才导致队列等待,这很可能是因为你的SQL语句导致大量的表扫描 所致。在进行优化后,如果还是不能达到要求,下面的公式可以帮助你计算使用 几块硬盘可以满足这样的并发要求:Raid 0 - I/Os per disk = (reads +writes) / number of disksRaid 1 - I/Os per disk = reads +(2

5、 * writes) / 2Raid 5 - I/Os per disk = reads +(4 * writes) / number of disksRaid 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是个很难正确估算的值。因此 只能在系统比

6、较忙时,大概估算一个平均值,作为计算公式的依据。另一个是你 很难从客户那里得到Seek time、Rotational latency参数的值,这也只能用 理论值125进行计算。前言作为一个数据库管理员,关注系统的性能是日常最重要的工作之一,而在所关注 的各方面的性能只能IO性能却是最令人头痛的一块,面对着各种生涩的参数和 令人眼花缭乱的新奇的术语,再加上存储厂商的忽悠,总是让我们有种云里雾里 的感觉。本系列文章试图从基本概念开始对磁盘存储相关的各种概念进行综合归 纳,让大家能够对IO性能相关的基本概念,IO性能的监控和调整有个比较全面 的了解。在这一部分里我们先舍弃各种结构复杂的存储系统,直

7、接研究一个单独的磁盘的 性能问题,藉此了解各个衡量IO系统系能的各个指标以及之间的关系。几个基本的概念在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理。不过在这里就 不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关 词条Hard disk drive (英文)和硬盘驱动器(中文)。读写 IO(Read/Write IO)操作磁盘是用来给我们存取数据用的,因此当说到io操作的时候,就会存在两种相 对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是读IO操 作。单个IO操作当控制磁盘的控制器接到操作系统的读IO操作指令的时候,控制器就会给磁盘 发出一个读数

8、据的指令,并同时将要读取的数据块的地址传递给磁盘,然后磁盘 会将读取到的数据传给控制器,并由控制器返回给操作系统,完成一个写io的 操作;同样的,一个写io的操作也类似,控制器接到写的io操作的指令和要写 入的数据,并将其传递给磁盘,磁盘在数据写入完成之后将操作结果传递回控制 器,再由控制器返回给操作系统,完成一个写IO的操作。单个IO操作指的就是 完成一个写IO或者是读IO的操作。随机访问(Random Access)与连续访问(SequentialAccess)随机访问指的是本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大, 这样的话磁头在两次IO操作之间需要作比较大的移动动作才能

9、重新开始读/写 数据。相反的,如果当次IO给出的扇区地址与上次IO结束的扇区地址一致或者 是接近的话,那磁头就能很快的开始这次IO操作,这样的多个IO操作称为连续 访问。因此尽管相邻的两次IO操作在同一时刻发出,但如果它们的请求的扇区 地址相差很大的话也只能称为随机访问,而非连续访问。顺序 IO模式(Queue Mode)/并发 IO模式(BurstMode)磁盘控制器可能会一次对磁盘组发出一连串的io命令,如果磁盘组一次只能执 行一个IO命令时称为顺序IO;当磁盘组能同时执行多个IO命令时,称为并发 IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一 个IO命令。单个I

10、O的大小(IO ChunkSize)熟悉数据库的人都会有这么一个概念,那就是数据库存储有个基本的块大小 (Block Size),不管是SQL Server还是Oracle,默认的块大小都是8KB,就是 数据库每次读写都是以8k为单位的。那么对于数据库应用发出的固定8k大小的 单次读写到了写磁盘这个层面会是怎么样的呢,就是对于读写磁盘来说单个IO 操作操作数据的大小是多少呢,是不是也是一个固定的值?答案是不确定。首先 操作系统为了提高IO的性能而引入了文件系统缓存(File System Cache),系 统会根据请求数据的情况将多个来自IO的请求先放在缓存里面,然后再一次性 的提交给磁盘,也

11、就是说对于数据库发出的多个8K数据块的读操作有可能放在 一个磁盘读IO里就处理了。还有对于有些存储系统也是提供了缓存(Cache)的, 接收到操作系统的IO请求之后也是会将多个操作系统的IO请求合并成一个来 处理。不管是操作系统层面的缓存还是磁盘控制器层面的缓存,目的都只有一个, 提高数据读写的效率。因此每次单独的IO操作大小都是不一样的,它主要取决 于系统对于数据读写效率的判断。当一次IO操作大小比较小的时候我们成为小的IO操作,比如说1K,4K,8K这 样的;当一次IO操作的数据量比较的的时候称为大IO操作,比如说32K,64K 甚至更大。在我们说到块大小(Block Size)的时候通常

12、我们会接触到多个类似的概念,像 我们上面提到的那个在数据库里面的数据最小的管理单位,Oralce称之为块 (Block),大小一般为8K,SQL Server称之为页(Page),一般大小也为8k。在 文件系统里面我们也能碰到一个文件系统的块,在现在很多的Linux系统中都是 4K (通过/usr/bin/time-v可以看到),它的作用其实跟数据库里面的块/页 是一样的,都是为了方便数据的管理。但是说到单次IO的大小,跟这些块的大 小都是没有直接关系的,在英文里单次IO大小通常被称为是IO Chunk Size, 不会说成是IO Block Size的。IOPS(IO per Second)

13、IOPS,IO系统每秒所执行IO操作的次数,是一个重要的用来衡量系统IO能力 的一个参数。对于单个磁盘组成的IO系统来说,计算它的IOPS不是一件很难的 事情,只要我们知道了系统完成一次IO所需要的时间的话我们就能推算出系统 IOPS 来。现在我们就来推算一下磁盘的IOPS,假设磁盘的转速(Rotational Speed)为15K RPM,平均寻道时间为5ms,最大传输速率为40MB/s (这里将读写速度视为一样, 实际会差别比较大)。对于磁盘来说一个完整的IO操作是这样进行的:当控制器对磁盘发出一个IO 操作命令的时候,磁盘的驱动臂(ActuatorArm)带读写磁头(Head)离开着陆区

14、 (LandingZone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的 磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为 寻址时间(SeekTime);但是找到对应磁道还不能马上读取数据,这时候磁头要等 到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上 方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的 时间称为旋转延时(RotationalDelay);接下来就随着盘片的旋转,磁头不断的 读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数 据传送(DataTra

15、nsfer),对应的时间称为传送时间(TransferTime)。完成这三个 步骤之后一次IO操作也就完成了。在我们看硬盘厂商的宣传单的时候我们经常能看到3个参数,分别是平均寻址时 间、盘片旋转速度以及最大传送速度,这三个参数就可以提供给我们计算上述三 个步骤的时间。第一个寻址时间,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在 磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所 以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时 间,这里就采用当前最多的10krmp硬盘的5ms。第二个旋转延时,和寻址一样,当磁头定位到磁道之后有可能正好在要读写

16、扇区 之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实 要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋 转延时,对于10krpm的磁盘就是(60s/15k)*(1/2)= 2ms。第三个传送时间,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是 很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次 IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是 IOChunk Size / Max Transfer Rate。现在我们就可以得出这样的计算单次IO时间的公式:IO Time = Seek Time + 60 sec/Rotational Speed/2 + IO Chunk

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号