Linux系统性能测试方法
所有文档
menu

文件存储 CFS

Linux系统性能测试方法

产品详情自助选购

本文介绍如何在Linux系统中使用FIO工具对CFS进行数据读写(不涉及元数据)IOPS、吞吐和时延的性能测试。

前提条件

  1. 您已创建待测试的CFS文件系统,并将CFS文件系统挂载到BCC云服务器上。
  1. CFS所提供的性能规格,除时延参数外,均需要一定规模的并发压测才能达到最大值。建议压测时准备32C以上的BCC云服务器作为客户端,可满足大部分场景的压测需求。其他压测需求,可根据实际情况配置对应的BCC云服务器。
  2. 进行性能压测时,尤其是时延测试,需要保证BCC云服务器(客户端)和 CFS 处于同可用区。跨可用区测试的性能结果会和标准值有较大差异,不具备参考价值,应尽量避免。

背景信息

推荐使用 FIO 工具测试CFS,不同工具测试的CFS性能会有差异,难以反映真实性能。本文示例的性能参数,均为Linux系统下采用FIO工具的测试结果,以此作为CFS产品性能指标参考。本次具体的性能指标说明如下:

  • IOPS:每秒读写数据块的数量,单位 个/s。建议在数据块较小(512bytes/4k/8k/16k)场景下进行 IOPS 的基准测试;
  • 吞吐:每秒读写数据量的大小,单位 GiB/s 或 MiB/s。建议在数据块较大(256k/512k/1M)场景下进行吞吐的基准测试;
  • 时延:处理读写请求的耗时,单位 ms。主要针对单线程以及多线程并发读写时的IO时延进行基准测试;针对平均时延、最大时延以及99.9%分位时延(即99.0%的时延小于该值)进行基准测试。

测试步骤

  1. 远程登录BCC云服务器(客户端)。
  2. 安装FIO测试工具。
操作系统 安装命令
CentOS
 sudo yum install fio 
RHEL
Ubuntu
## 依次执行以下安装命令:
sudo apt-get update
sudo apt-get install fio
Debian
  1. 在单台Linux BCC中执行以下命令测试性能。
测试性能 测试命令参考
IOPS
## 128并发下随机读写IOPS

fio -direct=1 -ioengine=libaio -rw=randread -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=128
fio -direct=1 -ioengine=libaio -rw=randwrite -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=128
吞吐
## 8并发下顺序读写吞吐。吞吐性能受限于BCC带宽,为了测试获得最准确吞吐性能,建议根据客户端配置情况合理配置 --numjobs 参数。

fio -direct=1 -ioengine=libaio -rw=read -bs=1024k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=8
fio -direct=1 -ioengine=libaio -rw=write -bs=1024k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=8
时延
## 单线程下读写时延

fio -direct=1 -ioengine=libaio -rw=randread -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=1
fio -direct=1 -ioengine=libaio -rw=randwrite -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=1

说明:如需要进行多线程测试,建议您根据压测时客户端配置情况合理设置--numjobs参数。

附录 - FIO参数说明

测试命令中有关FIO各参数含义的说明如下表所示。

参数 说明
direct 表示是否使用direct I/O。默认值:1。
  • 值为1:表示使用direct I/O,忽略I/O缓存,数据直写。
  • 值为0:表示不使用direct I/O。
  • ioengine 表示测试时FIO选择哪种I/O引擎,通常选择libaio,更符合日常应用模式,更多的选择请查阅FIO官方文档
    rw 表示测试时的读写策略。您可以设置为:
  • randwrite:随机写。
  • randread:随机读。
  • read:顺序读。
  • write:顺序写。
  • randrw:混合随机读写。
  • bs 表示I/O单元的块大小(block size)。默认值:4 KiB。读取和写入的值可以以read、write格式单独指定,其中任何一个都可以为空以将该值保留为其默认值。
    size 表示测试文件大小。
    FIO会将指定的文件大小全部读/写完成,然后才停止测试,除非受到其他选项(例如运行时)的限制。如果未指定该参数,FIO将使用给定文件或设备的完整大小。也可以将大小作为1到100之间的百分比给出。例如指定size=20%,FIO将使用给定文件或设备完整大小的20%空间。
    runtime 表示测试时间,即FIO运行时长。
    如果未指定该参数,则FIO会持续将上述size指定大小的文件,以每次bs值为块大小读/写完。
    time_based 如果指定了运行时间,即使文件已完全读写,也会按指定的持续时间运行。相同的工作负载将根据运行时间重复执行。
    group_reporting 表示测试结果显示模式。如果指定该参数,测试结果会汇总每个进程的统计信息,而不是以不同任务来统计信息。
    directory 表示待测试的文件系统挂载路径。例如/mnt/test_perf,请正确替换。
    name 表示测试任务名称,可以随意设定。
    numjobs 表示测试的并发线程数。

    有关各参数的更多说明,请参见FIO官方文档

    上一篇
    使用Terraform管理CFS最佳实践
    下一篇
    Windows系统性能测试方法