《如何规划存储的iops(每秒的输入输出次数)》由会员分享,可在线阅读,更多相关《如何规划存储的iops(每秒的输入输出次数)(18页珍藏版)》请在金锄头文库上搜索。
1、磁盘性能指标磁盘性能指标-IOPS IOPS 理论理论 架构研究 机械硬盘的连续读写性很好, 但随机读写性能很差。这是因为磁头移动至正确 的磁道上需要时间,随机读写时,磁头不停的移动,时间都花在了磁头寻道上, 所以性能不高。 如下图: 在存储小文件(图片)、OLTP 数据库应用时,随机读写性能(IOPS)是最重要指 标。 学习它,有助于我们分析存储系统的性能互瓶颈。 下面我们来认识随机读写性能指标-IOPS(每秒的输入输出次数)。 磁盘性能指标-IOPS - IOPS (Input/Output Per Second)即每秒的输入输出量(或读写 次数), 是衡量磁盘性能的主要指标之一。 IOP
2、S 是指单位时间内系统能处理的 I/O 请求数量,一般以每秒处理的 I/O 请求数量为单位,I/O 请求通常为读或写数据 操作请求。 随机读写频繁的应用, 如小文件存储(图片)、 OLTP 数据库、 邮件服务器, 关注随机读写性能,IOPS 是关键衡量指标。 顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频 点播 VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标。 IOPS 和数据吞吐量适用于不同的场合: 读取 10000 个 1KB 文件,用时 10 秒 Throught(吞吐量)=1MB/s , IOPS=1000 追求 IOPS 读取 1
3、 个 10MB 文件,用时 0.2 秒 Throught(吞吐量)=50MB/s, IOPS=5 追求 吞吐量 磁盘服务时间 - 传统磁盘本质上一种机械装置,如 FC, SAS, SATA 磁盘,转速通常为 5400/7200/10K/15K rpm 不等。影响磁盘的关键因素是磁盘服务时间,即磁盘完 成一个 I/O 请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分 构成。 寻道时间寻道时间 Tseek 是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间 越短,I/O 操作越快,目前磁盘的平均寻道时间一般在 315ms。 旋转延迟旋转延迟 Trotation 是指盘片旋转将请求数
4、据所在扇区移至读写磁头下方所需 要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的 1/2 表示。 比如,7200 rpm 的磁盘平均旋转延迟大约为 60*1000/7200/2 = 4.17ms, 而转速为 15000 rpm 的磁盘其平均旋转延迟为 2ms。 数据传输时间数据传输时间 Ttransfer 是指完成传输所请求的数据所需要的时间,它取决于 数据传输率, 其值等于数据大小除以数据传输率。 目前 IDE/ATA 能达到 133MB /s, SATA II 可达到 300MB/s 的接口数据传输率,数据传输时间通常远小于前两部分 消耗时间。简单计算时可忽略。 常见磁盘平
5、均物理寻道时间为:常见磁盘平均物理寻道时间为: 7200 转/分的 STAT 硬盘平均物理寻道时间是 10.5ms 10000 转/分的 STAT 硬盘平均物理寻道时间是 7ms 15000 转/分的 SAS 硬盘平均物理寻道时间是 5ms 常见硬盘的旋转延迟时间为: 7200 rpm 的磁盘平均旋转延迟大约为 60*1000/7200/2 = 4.17ms 10000 rpm 的磁盘平均旋转延迟大约为 60*1000/10000/2 = 3ms, 15000 rpm 的磁盘其平均旋转延迟约为 60*1000/15000/2 = 2ms。 最大 IOPS 的理论计算方法 - IOPS = 10
6、00 ms/ (寻道时间 + 旋转延迟)。可以忽略数据传输时间。 7200 rpm 的磁盘 IOPS = 1000 / (10.5 + 4.17) = 68 IOPS 10000 rpm 的磁盘 IOPS = 1000 / (7 + 3) = 100 IOPS 15000 rpm 的磁盘 IOPS = 1000 / (5 + 2) = 142 IOPS 2 固态硬盘的 IOPS 固态硬盘 SSD 是一种电子装置, 避免了传统磁盘在寻道和旋转上的时 间花费,存储单元寻址开销大大降低,因此 IOPS 可以非常高,能够达到数万甚至数十万。 实际测量中, IOPS 数值会受到很多因素的影响, 包括 I
7、/O 负载特征(读写比例, 顺序和随机, 工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。因此对比 测量磁盘 IOPS 时, 必须在同样的测试基准下进行, 即便如何也会产生一定的随机不确定性。 通常情况下,IOPS 可细分为如下几个指标: Toatal IOPS:混合读写和顺序随机 I/O 负载情况下的磁盘 IOPS,这个与实际 I/O 情况最为 相符,大多数应用关注此指标。 Random Read IOPS:100%随机读负载情况下的 IOPS。 Random WriteIOPS:100%随机写负载情况下的 IOPS。 Sequential ReadIOPS:100%
8、顺序负载读情况下的 IOPS。 Sequential WriteIOPS:100%顺序写负载情况下的 IOPS。 影响测试的因素 - 实际测量中,IOPS 数值会受到很多因素的影响,包括 I/O 负载特征(读写比例, 顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、 磁盘驱动等等。因此对比测量磁盘 IOPS 时,必须在同样的测试基准下进行,即 便如此也会产生一定的随机不确定性。 队列深度说明 NCQ、SCSI TCQ、PATA TCQ 和 SATA TCQ 技术解析 - 是一种命令排序技术,一把喂给设备更多的 IO 请求,让电梯算法和设备 有机会来安排合并以及内部并行处理
9、,提高总体效率。 SCSI TCQ 的队列深度支持 256 级 ATA TCQ 的队列深度支持 32 级 (需要 8M 以上的缓存) NCQ 最高可以支持命令深度级数为 32 级,NCQ 可以最多对 32 个命令指令进行排 序。 大多数的软件都是属于同步 I/O 软件,也就是说程序的一次 I/O 要等到 上次 I/O 操作的完成后才进行,这样在硬盘中同时可能仅只有一个命令,也是无 法发挥这个技术的优势,这时队列深度为 1。 随着 Intel 的超线程技术的普及和应用环境的多任务化,以及异步 I/O 软件的大量涌现。这项技术可以被应用到了,实际队列深度的增加代表着性能的 提高。 在测试时,队列深
10、度为 1 是主要指标,大多数时候都参考 1 就可以。实际运行时 队列深度也一般不会超过 4. IOPS 可细分为如下几个指标: - 数据量为 n 字节,队列深度为 k 时,随机读取的 IOPS 数据量为 n 字节,队列深度为 k 时,随机写入的 IOPS IOPS 的测试 benchmark 工具 - IOPS 的测试 benchmark 工具主要有 Iometer, IoZone, FIO 等,可以综合用于测试磁盘在不同情形下的 IOPS。对于应用系统,需要首先确 定数据的负载特征,然后选择合理的 IOPS 指标进行测量和对比分析,据 此选择 合适的存储介质和软件系统。 存储存储 IOPSI
11、OPS 与吞吐量的计算与吞吐量的计算 存储系统的瓶颈,主要体现在 2 个方面:吞吐量与 IOPS。 名词解释: 吞吐量 英文:throughput,即单位时间内读取或者写入数据量的大小。 IOPS 英文全拼:Input/Output Operations Per Second,即每秒进行读写(I/O)操 作的次数,多用于数据库等场合,衡量随机访问的性能。 存储端的 IOPS 性能和主机端的 IO 是不同的,IOPS 是指存储每秒可接受多少次 主机发出的访问,主机的一次 IO 需要多次访问存储才可以完成。例如,主机写 入一个最小的数据块,也要经过“发送写入请求、写入数据、收到写入确认”等 三个步
12、骤,也就是 3 个存储端访问。 下面对吞吐量与 IOPS 分布进行分析。 1、吞吐量(throughput) 吞吐量主要取决于阵列的构架,光纤(FC SAN)或网络(IP SAN)通道的大小以及硬盘的个数。阵 列的构架与每个阵列不同而不同,他们也都存在内部带宽(类似于 pc 的系统总线),不过一 般情况下,内部带宽都设计的很充足,不是瓶颈的所在。 光纤通道的影响还是比较大的,如数据仓库环境中,对数据的流量要求很大,而一块 2Gb 的光纤卡,所能支撑的最大流量应当是 2Gb/8(小 B)=250MB/s(大 B)的实际流量,当 4 块光纤 卡才能达到 1GB/s 的实际流量,所以数据仓库环境可以
13、考虑换 4Gb 的光纤卡。 最后说一下硬盘的限制,这里是最重要的,当前面的瓶颈不再存在的时候,就要看硬盘的个 数了,我下面列一下不同的硬盘所能支撑的流量大小: 10 K rpm 15 K rpm ATA 10M/s 13M/s 8M/s 那么,假定一套存储有 120 块 15K rpm 的光纤硬盘,那么该存储可以支撑的最大流量为 120*13=1560MB/s,如果是 2Gb 的光纤卡,可能需要 6 块才能够,而 4Gb 的光纤卡,3-4 块 就够了。 2、IOPS(Input/Output Operations Per Second) 决定 IOPS 的主要取决与阵列的算法,cache 命中
14、率,以及磁盘个数。阵列的算法因为不同的 阵列不同而不同,如我们最近遇到在 hds usp 上面,可能因为 ldev(lun)存在队列或者资源限 制,而单个 ldev 的 iops 就上不去,所以,在使用这个存储之前,有必要了解这个存储的一 些 算法规则与限制。 cache 的命中率取决于数据的分布, cache size 的大小, 数据访问的规则, 以及 cache 的算法, 如果完整的讨论下来,这里将变得很复杂,可以有一天好讨论了。我这里只强调一个 cache 的命中 率, 如果一个阵列, 读 cache 的命中率越高越好, 一般表示它可以支持更多的 IOPS, 为什么这么说呢?这个就与我们
15、下面要讨论的硬盘 IOPS 有关系了。 硬盘的限制,每个物理硬盘能处理的 IOPS 是有限制的,如 10 K rpm 15 K rpm ATA 100 150 50 同样,如果一个阵列有 120 块 15K rpm 的光纤硬盘,那么,它能撑的最大 IOPS 为 120*150=18000,这个为硬件限制的理论值,如果超过这个值,硬盘的响应可能会变的非常 缓慢而不能正常提供业务。 在 raid5 与 raid10 上,读 iops 没有差别,但是,相同的业务写 iops,最终落在磁盘上的 iops 是有差别的,而我们评估的却正是磁盘的 IOPS,如果达到了磁盘的限制,性能肯定是上不 去了。 那我们假定一个 case, 业务的 iops 是 10000, 读 cache 命中率是 30%, 读 iops 为 60%, 写 iops 为 40%,磁盘个数为 120,那么分别计算在 raid5 与 raid10 的情况下,每个磁盘的 iops 为多 少。 raid5: 单块盘的 iops = (10000*(1-0.3)*0.6