块存储性能(2)-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

块存储性能(2)

chenchuan 2018-08-17 06:44:16 806

共享块存储性能
2种共享块存储的性能对比如下表所示。
[tr=rgb(51, 205, 229)][td]参数 SSD共享块存储高效共享块存储最大容量
  • 单盘:32768 GiB
  • 单个实例:最大128 TiB
  • 单盘:32768 GiB
  • 单个实例:最大128 TiB
最大随机读写IOPS*300005000最大顺序读写吞吐量*512 MBps160 MBps单盘性能计算公式**IOPS = min{1600 + 40 * 容量, 30000}IOPS = min{1000 + 6 * 容量, 5000}吞吐量 = min{100 + 0.5 * 容量, 512} MBps吞吐量 = min{50 + 0.15 * 容量, 160} MBps典型应用场景
  • Oracle RAC
  • SQL Server
  • 故障转移集群
  • 服务器高可用
  • 服务器高可用架构
  • 开发测试数据库高可用架构

* 最大IOPS和吞吐量是在2个或2个以上实例同时压测裸设备能达到的性能数值。
** 单盘性能计算公式说明:
  • 以单块SSD共享块存储最大IOPS计算公式为例:起步1600 IOPS,每GiB增加40 IOPS,最高30000 IOPS。
  • 以单块SSD共享块存储最大吞吐量计算公式为例:起步100 MBps,每GiB增加0.5 MBps,上限为512 MBps的吞吐量。

不同共享块存储的单路访问时延如下:
  • SSD共享块存储:0.5−2 ms
  • 高效共享块存储:1−3 ms

本地盘性能
本地盘的性能信息,请参考 本地盘

性能测试


根据ECS实例的操作系统不同,您可以使用不同的工具测试块存储性能:
  • Linux实例:可以使用DD、fio或sysbench等工具测试块存储性能。
  • Windows实例:可以使用fio、Iometer等工具测试块存储性能。

[tr=transparent][url=http://g.alicdn.com/aliyun-icms/assets/icms-main/images/note.png][/url]警告[tr=transparent]测试裸盘可以获得真实的块存储盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。建议您只在新购无数据的ECS实例上使用工具测试块存储性能,避免造成数据丢失。

  • 测试随机写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

下表以测试随机写IOPS的命令为例,说明命令中各种参数的含义。
[tr=rgb(51, 205, 229)][td]参数 说明-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,可以随意设定。
弹性计算 缓存 固态存储 Oracle 关系型数据库 Linux 测试技术 数据库 块存储 Windows
分享到
取消 提交回答
全部回答(0)
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程