Article / 文章中心

测试块存储性能

发布时间:2021-01-20 点击数:491

本章节在Linux实例中使用FIO工具测试块存储性能,包括IOPS、吞吐量、时延等。

前提条件

您已经创建了待测试的块存储,并将块存储挂载到ECS实例上。
说明 如果您只需测试某类型块存储的性能,建议您在新建的按量付费数据盘上测试性能,完成测试后可以随时释放。

背景信息

不同工具测试的硬盘基准性能会有差异,如ddsysbenchiometer等工具可能会受到测试参数配置和文件系统影响,难以反映真实性能。本示例的性能参数,均为Linux系统下采用FIO工具的测试结果,以此作为块存储产品性能指标参考。Linux实例和Windows实例都推荐使用FIO工具测试块存储性能。

警告 测试裸盘可以获得真实的块存储盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。具体操作,请参见创建一个云盘快照(普通快照)。建议您只在新购无数据的ECS实例上使用工具测试块存储性能,避免造成数据丢失。

操作步骤

  1. 远程连接ECS实例。连接方式请参见通过VNC远程连接登录Linux实例
  2. 查询块存储设备是否已经4KiB对齐。
    sudo fdisk -lu
    返回的结果中,Start值能被8整除即是4KiB对齐。否则,请完成4KiB对齐后再继续性能测试。
    Device     Boot Start End Sectors Size Id Type /dev/vda1  * 2048 83886046 83883999 40G 83 Linux
  3. 依次运行以下命令安装libaio和FIO。
    sudo yum install libaio -y
    sudo yum install libaio-devel -y
    sudo yum install fio -y
  4. 切换路径。
    cd /tmp
  5. 运行性能测试命令,具体的命令请参见下文。

云盘性能测试命令

有关ESSD云盘的IOPS测试方法,请参见压测ESSD云盘IOPS性能

  • 随机写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
  • 随机写时延:
    fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Write_Latency_Testing
  • 随机读时延:
    fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Read_Latency_Testing

本地盘性能测试命令

以下测试命令适用于NVMe SSD本地盘和SATA HDD本地盘。

  • 随机写IOPS:
    fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 随机读IOPS:
    fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 顺序写吞吐量(写带宽):
    fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 顺序读吞吐量(读带宽):
    fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 随机写延迟:
    fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 随机读延迟:
    fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 顺序写延迟:
    fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test
  • 顺序读延迟:
    fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test

如果您有其他问题,可以联系北京志远天辰阿里云代理商,为您提供一对一专业全面的技术服务,同时新老阿里云会员,均可享受我公司代理商价格,欢迎咨询欢迎咨询.gif

上一篇:变更GPU实例的配置 下一篇:云盘概述