tencent cloud

文件存储

动态与公告
产品动态
产品公告
产品简介
产品概述
产品优势
存储类型及性能规格
使用场景
推荐地域
系统限制
购买指南
计费概述
价格总览
通用系列计费方式
Turbo 系列计费方式
吞吐型计费方式
快照计费方式
低频计费方式
资源单位包
资源购买
查看账单
欠费说明
快速入门
创建文件系统及挂载点
在Linux 客户端上使用 CFS 文件系统
在 Windows 客户端上使用 CFS 文件系统
在 Linux 客户端上使用 CFS Turbo 文件系统
使用 CFS 客户端助手挂载文件系统
操作指南
访问管理
管理文件系统
权限管理
使用标签
快照管理
跨可用区、跨网络访问指引
自动挂载文件系统
数据迁移服务
用户权限管理
用户配额
数据加密
数据生命周期管理
升级通用标准型文件系统
实践教程
NFS 客户端内核选择
Turbo 目录管理
计算实例销毁
在容器 TKE 上使用 CFS
在云函数 SCF上使用 CFS
在容器 TKE 上使用 CFS Turbo
在 Serverless 容器服务上使用 CFS Turbo
Turbo 文件系统网络选择
文件存储数据拷贝方案
文件存储性能测试
API 文档
History
Introduction
API Category
Snapshot APIs
File system APIs
Lifecycle APIs
Other APIs
Data Flow APIs
Making API Requests
Permission Group APIs
Service APIs
Scaling APIs
Data Migration APIs
Data Types
Error Codes
故障处理
小文件及高并发场景下客户端使用卡顿
常见问题
服务等级协议
联系我们
词汇表
文档文件存储实践教程文件存储性能测试

文件存储性能测试

PDF
聚焦模式
字号
最后更新时间: 2024-05-23 16:40:15
本文主要介绍如何通过合理的方式对 CFS 云文件系统进行性能测试。

性能关键指标说明

时延:处理读写请求的耗时,单位ms。通常基于1MB的文件,采用单流(单线程)的4K 小 IO 进行时延的基准测试。
IOPS:每秒读写数据块的数量,单位个/s。业内通常基于100MB 的文件,采用并发(多机多线程)的4K 小 IO 进行 IOPS 的基准测试。
吞吐:每秒读写数据量的大小,单位GiB/s或MiB/s。通常基于100MB 的文件,采用并发(多机多线程)的1M 大 IO 进行吞吐的基准测试。

注意事项

CFS 云文件存储所提供的 性能规格,除时延参数外,均需要一定规模和核心数机器进行并发压测才能达到最大值。通常压测时准备16台32C 以上的云服务器作为客户端,可满足大部分场景的压测需求。其他压测需求,可根据实际情况配置对应的云服务器。
压测 CFS 通用标准型和通用性能型时,因服务端缓存加速的特性,在命中缓存时,读性能会超过标准值,此现象符合预期。
进行性能压测时,尤其是时延测试,需要保证云服务器(客户端)和 CFS 处于同可用区。跨可用区测试的性能结果会和标准值有较大差异,需尽可能避免。

操作步骤

安装压测软件

CentOs/Tlinux:
sudo yum install fio
Ubuntu/Debian
sudo apt-get install fio

读时延测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randread -bs=4K -size=1M -numjobs=1 -runtime=60 -group_reporting -name=cfs_test

写时延测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randwrite -bs=4K -size=1M -numjobs=1 -runtime=60 -group_reporting -name=cfs_test

读 IOPS 测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randread -bs=4K -size=100M -numjobs=128 -runtime=60 -group_reporting -name=cfs_test

写 IOPS 测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randwrite -bs=4K -size=100M -numjobs=128 -runtime=60 -group_reporting -name=cfs_test

读吞吐测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randread -bs=1M -size=100M -numjobs=128 -runtime=60 -group_reporting -name=cfs_test

写吞吐测试

fio -directory=/path/to/cfs -iodepth=1 -time_based=1 -thread -direct=1 -ioengine=libaio -rw=randwrite -bs=1M -size=100M -numjobs=128 -runtime=60 -group_reporting -name=cfs_test

FIO 参数说明

参数
参数说明
direct
表示是否使用 direct I/O。默认值:1。
值为1:表示使用 direct I/O,忽略客户端 I/O 缓存,数据直写或直读。
值为0:表示不使用 direct I/O。
注意:
此参数无法穿透服务端缓存。
iodepth
表示测试时的 IO 队列深度。例如 -iodepth=1表示 FIO 控制请求中的 I/O 最大个数为1。
rw
表示测试时的读写策略。您可以设置为:
randwrite:随机写。
randread:随机读。
read:顺序读。
write:顺序写。
randrw:混合随机读写。
说明:
通常压力测试时,都是基于随机读写。如果需要顺序读写的性能值,可根据需要调整参数。
ioengine
表示测试时 FIO 选择哪种 I/O 引擎,通常选择 libaio,保证数据 IO 的异步下发。
注意:
压测时如不选择 libaio,其性能瓶颈主要在于 ioengine 上,非存储侧瓶颈。
bs
表示 I/O 单元的块大小(block size)。
size
表示测试文件大小。
FIO 会将指定的文件大小全部读/写完成,然后才停止测试,除非受到其他选项(例如运行时)的限制。
如果未指定该参数,FIO 将使用给定文件或设备的完整大小。也可以将大小作为1到100之间的百分比给出,例如指定 size=20%,FIO 将使用给定文件或设备完整大小的20%空间。
numjobs
表示测试的并发线程数。
runtime
表示测试时间,即 FIO 运行时长。
group_reporting
表示测试结果显示模式。
如果指定该参数,测试结果会汇总每个进程的统计信息,而不是以不同任务来统计信息。
directory
表示待测试的文件系统挂载路径。
说明:
选择此参数,FIO 将默认从此路径创建出 numjobs 数量的文件进行压测。存储压测时一定要选择此参数,如果直接指定 filename 是对单个文件进行压测。
name
表示测试任务名称,可以根据实际需要设定。
thread
使用多线程的方式进行压测,而非多进程。
time_based
值为1: 当指定的文件大小读写完之后,自动重复 IO,直到 runtime 参数指定的时间。
值为0:当指定的文件大小写完之后,立即停止。
说明:
通常测试时指定为1,能保证测试程序在指定的时间范围内持续运行。
说明:
更多的关于 FIO 压测的参数,可以参考 FIO 文档
如果需要多机测试,可通过 pshell 同时执行指令即可,或者参考 FIO 文档 配置集群版的压测参数。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈