• 硬盘IO性能估算入门


    一、硬盘IO的类型
    IO是输入输出指令,操作系统向存储控制器下发一个读或者写数据的操作指令,控制器下发地址和数据给存储设备,并返回结果给存储控制器,最后到达操作系统。操作系统的一个IO可能会产生多个实际的存储设备IO。一般可以分为:

    1、连续Sequential IO、随机Random IO
    如果本次IO给出的初始地址和上次IO的结束地址是连续或者接近的,磁头可以很快访问到数据,这样的多个IO就是连续IO。如果前后两次IO操作的地址相差比较大,磁头需要较长距离的移动,就是随机IO。在做连续 IO的时候,磁头几乎不换道连接工作,可以快速读取和写入大量数据。

    2、顺序Queue IO、并发Burst IO
    如果存储设备每次只执行一个IO指令,就是顺序IO;当存储设备能同时执行多个IO命令时,控制器发送IO指令后不等回应就继续下发IO指令,称为并发IO。普通磁盘一次只能响应一个IO指令,但RAID等存储设备的IO操作是并发的。对顺序IO的设备,调整IO队列深度,性能不能产生变化。

    二、硬盘性能衡量
    衡量硬盘性能,最直观的就是IOPS和吞吐量。

    1、IOPS,每秒处理的IO次数
    指存储设备(HDD、SSD、SAN)单位时间内能处理的IO请求数量,对随机读写频繁的应用,如OLTP数据库、图片、信息,是最关键的衡量指标。IOPS数值受读写比例、随机IO、IO大小、队列深度等因数影响。数据库通常访问一系列不连续的数据,根据文件物理位置,需要很多次IO才能完成。所以需要随机IO高的设备。

    2、Throughput,吞吐量
    指单位时间内可以成功传输的数据数量,传输包括读和写的总和。对于大文件或者流媒体的应用,拥有大量顺序读写,则更关注数据吞吐量。数据吞吐量还受到存储设备接口速度限制,比如IDE、SATA、SAS、FC,SSD使用PCIE Nvme接口最佳,但同时期推出的接口都大于存储设备吞吐量上限。

    三、硬盘监控指标
    通过iostat等工具观察存储设备状况,我们一般关注下面指标。

    1、r/s、w/s,每秒读写IO次数。
    IOPS = r/s + w/s。读和写的能力,在不同设备中实际是有差异的,但是我们经常简化差异,混合称为IOPS。

    2、avgrq-sz,每次IO请求的平均大小
    如果平均小于32K认为随机存取为主,大于32K则是顺序存储为主。

    3、avgqu-sz,等待执行的IO队列长度
     IO请求数超出存储设备处理能力,待执行队列就会加长,该值应该小于2.

    4、await,等待执行的IO耗时
     等待耗时取决svctm以及IO队列长度,该值应该接近svctm。

    5、 svctm,IO服务时间
    处理IO请求的耗时,比如机械硬盘耗时,由寻道时间、旋转延迟和传输时间组成。

    6、uitl,存储设备IO利用率
    存储设备的资源利用情况,队列争用程度成越高值越大。

    四、存储性能
    1、机械硬盘的性能计算
    对机械硬盘来说,IOPS = 1000 / (寻道时间 + 旋转延时 + 传输时间)。
    a、寻道时间,磁头移动到对应磁道上的耗时。
    Sata 7200RPM,平均寻道时间是9ms。
    Sas 10000RPM,平均寻道时间是6ms。
    Sas 15000RPM,平均寻道时间是4ms。
     b、旋转延时,盘片旋转至需要的扇区移至磁头下方耗时。
    平均为磁盘旋转一周所需时间的一半,60 * 1000/7200/2。
    Sata 7200RPM,旋转延时 60 * 1000 / 7200 / 2 = 4.17ms。
    Sas 10000RPM,旋转延时3ms。
    Sas 15000RPM,旋转延时约2ms。
    c、传输时间,传输读写数据耗时。
    平均数据大小除以接口传输率,耗时很小粗略计算可以忽略。
    Sata,300~600MB/s。
    Sas,3Gbit/s。
    FC,2~4Gbit/s。
    NVME,32Gbit/s。
    根据上述信息,我们常用的Sas 15000RPM,MySQL应用16k块,机械硬盘IOPS = 1000 / (4 + 2 + 16K / 375K) = 165。

    1. SSD硬盘IO计算
      固态硬盘没有寻道时间和旋转时间。IO耗时是通过地址查找数据耗时,根据芯片颗粒SLC、MLC,中控芯片、队列深度32~64、接口Sata、PCIE的不同,一般负载非太高时是相对固定值(控制在60%利用率)。
      IOPS = 1000 / IO耗时。因为SSD比较固定,比如Intel 320 SSD对8K avgrq-sz耗时0.1ms,1000/0.1ms=10000 IOPS。具体参考后续文章。

    3、iops估算raid盘数
    a、如果单盘不能满足性能需求,需要通过Raid实现,计算所需硬盘数公式如下。
    Raid1、10,Drive IOPS = Read IOPS + 2Write IOPS
    Raid3、5,Drive IOPS = Read IOPS + 4
    Write IOPS
    Raid6,Drive IOPS = Read IOPS + 6*Write IOPS
    b、设需要IOPS 5000,读写比例2:1,则RAID10后IOPS需求为。
    RAID10,(2/3) * 5000 + 2 * (1/3) * 5000 = 6666 IOPS
    c、已知Sas 15000RPM机械硬盘IOPS165。
    5000IOPS所需硬盘个数, 6666 / 165 = 40。

    4、常见存储设备参考性能,avgrq-sz 8~16K
    5400 rpm SATA,60 IOPS
    7200 rpm SATA,70 IOPS
    10000 rpm SAS,110 IOPS
    15000 rpm SAS,150 IOPS,Sequential RW 180MB/s、Radom RW 15MB/s。
    10000 rpm FC,125 IOPS
    15000 rpm FC,150 IOPS
    SSD Sata,3000~40000 IOPS,R 400MB/s、W 250MB/s。
    SSD PCIE,20000~40000 IOPS,R 500MB/s、W 300MB/s。
    内存,1000000+ IOPS,30~60 GB/s。

    muahao@aliyun.com
  • 相关阅读:
    senlin __init__() got an unexpected keyword argument 'additional_headers'
    Delphi 全局画点TCanvas.Pixels[X,Y]
    sql server 列修改null 变成not null
    Delphi记录record中的变体
    delphi无边框可拖动窗体
    bootstrap相关资料
    重装windows导致grub损坏
    RabbitMQ的安装(Docker安装)
    RabbitMQ的安装以及使用(Windows环境)
    如果安装rabittmq后,输入http://localhost:15672不出页面的
  • 原文地址:https://www.cnblogs.com/muahao/p/15480031.html
Copyright © 2020-2023  润新知