zoukankan      html  css  js  c++  java
  • 块存储性能

    性能指标

    衡量块存储产品的性能指标主要包括:IOPS、吞吐量和访问时延。

    • IOPS

      IOPS是Input/Output Operations per Second,即每秒能处理的I/O个数,用于表示块存储处理读写(输出/输入)的能力。如果要部署事务密集型应用,典型场景比如数据库类业务应用,需要关注IOPS性能。

      最普遍的IOPS性能指标是顺序操作和随机操作,如下表所示。

       
      IOPS性能指标描述
      总 IOPS 每秒执行的I/O操作总次数。
      随机读IOPS 每秒执行的随机读I/O操作的平均次数 对硬盘存储位置的不连续访问。
      随机写IOPS 每秒执行的随机写I/O操作的平均次数
      顺序读IOPS 每秒执行的顺序读I/O操作的平均次数 对硬盘存储位置的连续访问。
    • 吞吐量

      吞吐量是指单位时间内可以成功传输的数据数量。

      如果要部署大量顺序读写的应用,典型场景比如Hadoop离线计算型业务,需要关注吞吐量。

    • 访问时延

      访问时延是指块存储处理一个I/O需要的时间。

      如果您的应用对时延比较敏感,比如数据库(过高的时延会导致应用性能下降或报错),建议您使用ESSD云盘、SSD云盘、SSD共享块存储或本地SSD盘类产品。

      如果您的应用更偏重存储吞吐能力,对时延相对不太敏感,比如Hadoop离线计算等吞吐密集型应用,建议您使用本地HDD盘类产品,如d1或d1ne大数据型实例。

    性能对比

    以下是不同块存储产品的性能对比表。

    块存储按照二进制单位计算,单位为GiB、KiB、TiB或者MiB。
     
     安装 fio libaio
    # 阿里云yum源
    
    yum -y  install libaio-devel  fio
     

    性能测试

    Linux实例和Windows实例都推荐使用FIO工具进行测试块存储性能。

    说明 您也可以使用其他工具测试块存储性能,但不同工具测试出来的硬盘基准性能会有差异,如dd、sysbench、iometer等工具可能会受到测试参数配置和文件系统影响,难以反映真实的磁盘性能。本文中所描述的性能参数,均为Linux实例下采用FIO工具的测试结果,以此作为块存储产品性能指标参考。

    测试随机写IOPS,运行以下命令:

    fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing

    测试随机读IOPS,运行以下命令

    fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing

    测试顺序写吞吐量,运行以下命令:

    fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing

    测试顺序读吞吐量,运行以下命令:

    fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
    -direct=1 表示测试时忽略I/O缓存,数据直写。
    -iodepth=128 表示使用AIO时,同时发出I/O数的上限为128。
    -rw=randwrite 表示测试时的读写策略为随机写(random writes)。作其它测试时可以设置为:
    • randread(随机读random reads)
    • read(顺序读sequential reads)
    • write(顺序写sequential writes)
    • randrw(混合随机读写mixed random reads and writes)
    -ioengine=libaio 表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式:
    • 同步

      同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16−32根线程同时工作将iodepth塞满。

    • 异步

      异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。

    -bs=4k

    表示单次I/O的块文件大小为4 KB。未指定该参数时的默认大小也是4 KB。

    测试IOPS时,建议将bs设置为一个比较小的值,如本示例中的4k。

    测试吞吐量时,建议将bs设置为一个较大的值,如本示例中的1024k。

    -size=1G 表示测试文件大小为1 GiB。
    -numjobs=1 表示测试线程数为1。
    -runtime=1000 表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
    -group_reporting 表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
    -filename=iotest 指定测试文件的名称,比如iotest。测试裸盘可以获得真实的硬盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。
    -name=Rand_Write_Testing 表示测试任务名称为Rand_Write_Testing,可以随意设定。

    摘录: https://help.aliyun.com/document_detail/25382.html?spm=5176.diskbuyv3.cloudDisk.1.5e903675IyKvEd

                https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0044524691.html

  • 相关阅读:
    Android SeekBar 垂直滚动条实现——Kotlin
    百度地图JavaScript API——去除左下角LOGO
    C# Socket域名连接
    d
    WPF MVVM手敲简单框架
    WPF播放视频、WPF_MediaElement用法
    C#分割字符,Split(new char[2] { '$', ',' }); 和Split( new string[]{"$",","}, StringSplitOptions.RemoveEmptyEntries); 的小计
    使用CloudFlare给IPv6 VPS提供IPv4+6端口转发服务
    多线程处理和WPF访问UI
    MVC4Html Helper
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/10605536.html
Copyright © 2011-2022 走看看