51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2122|回复: 0
打印 上一主题 下一主题

磁盘Disk IO评估

[复制链接]

 成长值: 14041

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74102
    跳转到指定楼层
    楼主
    发表于 2017-11-15 22:04:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    磁盘的I/O,顾名思义就是磁盘的输入输出。输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。我们常见的磁盘类型有 ATA、SATA、FC、SCSI、SAS、SSD,这几种磁盘中,服务器常用的是SAS、FC和SSD磁盘,每一种磁盘的性能是不一样的。
    磁盘阵列的瓶颈分析主要体现在2个方面:IOPS与吞吐量。
    IOPS(Input/Output Per Second)即每秒进行读写(I/O)操作的次数,是衡量磁盘性能的主要指标之一,多用于数据库等场合,衡量随机读写的性能。
    另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(VideoOn Demand),则更关注吞吐量指标。
    简而言之:
    磁盘的IOPS,也就是在一秒内,磁盘进行多少次I/O读写。
    磁盘的吞吐量,也就是每秒磁盘I/O的流量,即磁盘写入加上读出的数据的大小。
    IOPS与吞吐量的关系:
    每秒I/O吞吐量=IOPS*平均I/O size。
    从公式可以看出:I/O SIZE 越大,IOPS越高,那么每秒I/O的吞吐量就越高。因此,我们会认为 IOPS 和吞吐量的数值越高越好。实际上,对于一个磁盘来讲,这两个参数均有其最大值,而且这两个参数也存在着一定的关系。

      吞吐量
      吞吐量主要取决于阵列的架构,光纤通道的大小以及硬盘的个数。
      阵列的架构与每个阵列不同,但也都存在内部带宽,不过在一般情况下,内部带宽都设计的很充足,不是瓶颈所在。
      其次是光纤通道对数据流量的影响。比如为了达到1GB/s的数据流量要求,必须使用1GB*8=8GB的光纤卡,或4块2GB的光纤卡。
      最后说一下硬盘的限制,当前面的瓶颈不再存在的时候,就要看硬盘的个数了,因为不同的硬盘所能支撑的流量大小也不一样。
      假设为了满足1GB/s的数据流量要求,除了需要8块1GB的光纤卡,同时所必须的磁盘个数为:
    磁盘转速规格10K rpm15K rpmATA
    数据传输率10 MB/s13 MB/s8 MB/s
    所需磁盘个数10080125


      IOPS
      决定IOPS的主要取决于阵列的算法、cache命中率以及磁盘个数。
      Cache命中率取决于数据的分布、Cache Size的大小、数据的访问规则,以及Cache的算法。
      磁盘的限制,每个磁盘能处理的IOPS是有限制的,通常情况下每个磁盘的最大IOPS是确定的。比如IDE和SATA硬盘的IOPS大致在100以内,而且IOPS的测试结果与测试方式(例如随机读写和顺序读写、读和写的比例、传输数据库尺寸的大小、磁盘的数量)有很大关系。尽管如此,磁盘的IOPS指标还是对我们评估磁盘的压力和是否能够满足系统的性能需求有着一定的指导意义。
    决定IOPS具体分析
    阵列的算法同样的读写,在不同的阵列所产生的iops是不同的:RAID 0 :IOPS = Read IOPS + 1*Write IOPSRAID 1 :IOPS = Read IOPS + 2*Write IOPSRADI 3 :IOPS = Read IOPS + 4*Write IOPSRAID 5 :IOPS = Read IOPS + 4*Write IOPSRADI 6 :IOPS = Read IOPS + 6*Write IOPSRAID 10:IOPS = Read IOPS + 2*Write IOPS
    cache命中率取决于数据的分布、Cache大小、数据访问规则、Cache算法。cache算法越高效,则cache的命中率越高,加速效果越明显;cache容量越大,可以存储的信息量越大,相对的命中率越高;当cache的容量一定时,读数据的块大小对命中率的影响非常敏感;
    磁盘因素磁盘IOPS瓶颈:单个物理磁盘能够处理的的最大IOPS是有限制的SAS 15k rpm IOPS:150^180SAS 10k rpm IOPS:130^150SATA 7.2k rpm IOPS:70^90SATA 5.4k rpm IOPS:30^50SSDIOPS5K^15K磁盘容量:相同转速,容量越小,所需的寻址之间越短,IOPS相对越高
    测试方式随机读写、顺序读写、读写比例、传输数据的大小

    备注:
    1.同样的读写,不同RAID的读操作所产生的IOPS相差无几,而对IOPS影响最大的是写操作.写操作效率RAID 0最高,RAID 1和10次之.
    2.读cache的命中率越高越好
    3.磁盘接口简述:
    小型计算机系统接口(SCSI)
    集成设备电子学(IDE)
    串行高级技术附件(SATA)
    串行SCSI(SAS)
    光纤通道(FC)
    固态硬盘(SSD)或闪存盘

      单个磁盘的IOPS计算方法:
    读操作1个写操作每个磁盘的IOPS每个磁盘的IOPS(考虑命中率+读写比例)
    RAID 0读次数*(1-Cahe命中率)实际1次io(读+写)/磁盘个数[读*读比例*(1-Cache命中率)+(1*写*写比例)]/磁盘个数
    RAID 1读次数*(1-Cahe命中率)实际2次io[读+(2*写)]/2RAID1只能配置2块盘[读*读比例*(1-Cahe命中率)+(2*写*写比例)]/2
    RAID 5读次数*(1-Cahe命中率)实际4次io[读+(4*写)]/磁盘个数[读*读比例*(1-Cahe命中率)+(4*写*写比例)]/磁盘个数
    RAID 10读次数*(1-Cahe命中率)实际2次io[读+(2*写)]/磁盘个数[读*读比例*(1-Cahe命中率)+(2*写*写比例)]/磁盘个数


      需求计算
      场景一假定业务需求10000 IOPS,120块硬盘,读cache命中率30%,读iops为60%,写iops为40%,分别计算raid1、5、10的情况下,每个磁盘要求的iops为多少?
      raid 1
      每块硬盘的iops = (10000*0.6*(1-0.3) +2* (10000*0.4))/2= (4200 + 8000)/2 = 6000
      这里,10000*(1-0.3)*0.6表示是读的iops,比例是0.6,除掉cache命中,实际只有4200个iops;
      请注意:在raid1中,1个写操作实际发生了2个io,所以写的iops为8000。且raid1的RAID系数为2,所以增加硬盘对提升IOPS有限
      raid5
      每块硬盘的iops = (10000*0.6*(1-0.3) +4* (10000*0.4))/120= (4200 + 16000)/120 = 168
      而4 * (10000*0.4) 表示写的iops,因为每一个写,在raid5中,实际发生了4个io,所以写的iops为16000个;
      raid10
      每块硬盘的iops = (10000*0.6*(1-0.3) + 2 * (10000*0.4))/120 = (4200 + 8000)/120= 102
      因为raid10对于一个写操作,只发生2次io,所以,同样的压力+同样的磁盘,每个盘的iops只有102个,远远低于磁盘的极限iops。
      吞吐率:
      此外当吞吐率超过85%时,单个磁盘IOPS计算规则为:
      ((10000 *读比例*(1-Cache命中率))+10000*写比例*RAID系数)/磁盘数/0.85
    Cache比例Cache 20%Cache 40%
    读写比例读80%,写20%读60%,写40%读80%,写20%读60%,写40%
    RAID 082866775
    RAID 16118752951766824
    RAID 5141204125192
    RAID 1010212586114

    即每块磁盘的IOPS大约在200左右即可满足RAID0、RAID5、RAID10的要求。
    场景二一个由5块450G 10K RPM硬盘组成的RAID 5,读写比为2:1,cache命中率为80%,求该RAID支持的最大IOPS以及能够给业务提供的IOPS?
    首先10K RPM的FC硬盘,单盘的IOPS为140,5块盘最大IOPS值为700;
    能够提供给业务的IOPS为:[X*(2/3)*(1-0.8) + X*(1/3)*4]/5 = 140àX = 477

      案例分析
      在一个实际的case中,一个恢复压力很大的standby(这里主要是写,而且是小io的写),采用了raid5的方案,发现性能很差,通过分析,每个磁盘的iops在高峰时期达到了200,导致响应速度巨慢无比。后来改造成raid10,就避免了这个性能问题,每个磁盘的iops降到100左右。


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2024-5-14 07:16 , Processed in 0.369126 second(s), 31 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表