3FS是深度求索(DeepSeek)公司自主研发的高性能分布式存储系统,专为AI大模型训练、大数据分析及高性能计算(HPC)场景优化设计。在3FS中,融合现代SSD存储与RDMA网络技术,突破传统网络的性能瓶颈。本文介绍如何基于阿里云自研的云上弹性RDMA网络部署3FS集群,实现低延迟与高吞吐数据传输,支撑AI训练和大规模数据分析的高性能需求。
部署方案
基于阿里云高性能弹性RDMA网络eRDMA与本地SSD型实例规格族i4构建3FS集群,AC2为集群提供安全可靠的容器化接入方案。
阿里云不对3FS提供技术支持,也不承诺3FS自身软件相关的数据完整性和数据正确性以及软件功能和软件性能。如遇问题,请通过GitHub渠道和3FS社区maintainer沟通。
弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA)是阿里云自研的云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion Control)算法,享有传统RDMA网络高吞吐、低延迟特性的同时,可支持秒级的大规模RDMA组网。可兼容传统HPC应用、AI应用以及传统TCP/IP应用。
详细信息,请参见弹性RDMA(eRDMA)。
阿里云本地SSD型实例规格族i4,采用PCIe Gen4 NVMe SSD,使用CIPU本地盘虚拟化架构。虚拟化对SSD的读写带宽的衰减几乎为零,并为客户提供了IO级的运维监控能力。详细信息,请参见NVMe SSD本地盘。
Alibaba Cloud AI Containers(简称AC2)是阿里云官方推出的一系列AI容器镜像的合集。通过内置不同的硬件加速库、AI运行时、AI框架等满足用户不同场景的部署使用诉求,并通过与阿里云基础设施(ECS、ACK、ECI)深度优化,提升用户在阿里云上的AI性能和体验。
AC2 产品镜像在生产发布过程中实现全链路安全可靠,通过自主软件选型构建,结合 CVE 更新策略和镜像安全扫描机制,最大程度上保障了 AI 容器镜像的安全生产。详细信息,请参见Alibaba Cloud AI Containers。
重要本文中3FS涉及到的组件均已在AC2镜像中完成构建,如果您希望完全自主构建,请参见3FS GitHub。
AC2是免费的镜像,但使用镜像时,需要支付其他资源产生的费用,如vCPU、内存、存储、公网带宽和快照等。
使用AC2需要首先设置Docker运行环境,在容器中启用eRDMA的实现方式如下。
在容器环境中使用eRDMA功能时,使用Docker的
--device
选项将/dev/infiniband/rdma_cm
和/dev/infiniband/uverbsX
两个字符设备映射到容器中,这样容器内的用户态程序就可以绕过操作系统内核直接访问eRDMA设备进行数据的收发。/dev/infiniband/rdma_cm
:用于eRDMA连接管理的字符设备。用户态程序可以通过对这个字符设备的操作,与eRDMA设备进行连接的建立、销毁和管理,包括创建和销毁连接、发送和接收连接事件等操作。/dev/infiniband/uverbsX
:用于用户空间eRDMA操作的字符设备。用户态程序可以通过对这个字符设备的操作,与eRDMA设备进行通信,包括打开设备、创建和销毁eRDMA通信端点、注册和注销内存缓冲区等操作。说明/dev/infiniband/uverbsX
中的X
是设备的索引号,可能会因系统和配置而异,您可以运行ls /dev/infiniband | grep uverbs
命令查看字符设备名称。
3FS关键节点介绍
3FS关键组件及作用如下:
元数据服务Metadata Service(Meta):无状态服务,处理文件系统的元数据请求。底层通过foundation DB实现原子性操作。
数据存储Storage Service(Storage):在存储节点上运行,数据分块存储于高性能NVMe SSD,采用CRAQ(Chain Replication with Apportioned Queries)链式复制协议管理副本,提供write-all-read-any语义。
集群管理Cluster manager(Mgmtd):管理集群的配置信息,存储节点状态,负责选举主节点并对其他组件进行同步更新。
客户端Client:3FS提供了两种形态的客户端,通过FUSE实现标准化访问和USRBIO实现高性能传输,兼顾兼容性与效率,成为AI、大数据等场景的理想存储接口。
FUSE客户端:通过用户态文件系统接口挂载存储集群为本地目录。提供 POSIX 兼容的文件操作接口(
read
/write
/mkdir
),无需修改应用代码。USRBIO高性能客户端:通过用户态I/O栈和RDMA,实现微秒级延迟与超高吞吐,满足AI/HPC需求。
各个组件通过RDMA网络通信,绕过内核协议栈,显著减少 CPU 负载与网络延迟。
部署示例
本示例中,以一台通用型实例规格族g8i实例(ecs.g8i.48xlarge)作为meta节点,部署meta、mgmtd、客户端及监控等服务,五台本地SSD型实例规格族i4实例(ecs.i4.32xlarge)作为存储节点,提供高性能NVMe SSD存储,每个节点配置eRDMA实现弹性RDMA通信,完成3FS集群部署。
为简化流程,本示例中将元数据服务Meta、集群管理服务Mgmtd、客户端及监控组件等集中部署于单节点。生产环境部署时,建议根据业务规模和高可用性要求,采用多点分布式架构实现服务解耦与资源隔离。
步骤一:准备环境
准备部署3FS相关节点的ECS实例,并且通过配置eRDMA使实例间具备弹性RDMA通信的能力。
购买一台ECS实例同时作为meta、客户端节点,购买五台ECS实例作为存储节点,所有节点之间内网互通。各个节点需要开通公网下载AC2镜像资源。
创建过程中所有实例需注意以下配置项,其他参数,请参见自定义购买实例:
地域:选择支持eRDMA的地域,本示例中选择杭州地域。
实例规格:选择支持eRDMA的CPU实例:
meta节点:ecs.g8i.48xlarge
存储节点:ecs.i4.32xlarge
实例镜像:选择支持eRDMA的Ubuntu 22镜像。
驱动:选择为实例安装eRDMA驱动。
重要使用ECS扩展程序功能,需要拥有系统权限策略AliyunECSExtensionsFullAccess,阿里云账号默认拥有该系统权限。如果您的操作账号为RAM用户,需要联系阿里云账号授予RAM用户该系统权限。详细信息,请参见扩展程序。
您也可以在实例购买后,通过脚本一键安装eRDMA驱动,详细信息,请参见为已有实例配置eRDMA。
弹性RDMA网卡:为实例网卡开启弹性RDMA接口,使用弹性RDMA通讯模式。
重要示例中的IP地址即开启了弹性RDMA接口的网卡的主私网IP地址,本示例中为主网卡。如果您是在辅助网卡上进行RDMA通信测试,请注意更换IP地址。
步骤二:部署meta节点
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,验证erdma是否正常配置。
ibv_devinfo
返回信息如下所示,表示eRDMA在实例上正常启用(eRDMA驱动正确安装、网卡的弹性RDMA接口已正确配置)。eRDMA驱动的安装可能需要一段时间,请您耐心等待。如果返回异常,请参见验证eRDMA配置的正确性进行修复。
执行以下命令,设置RDMA建链方式为兼容模式。
重要目前支持eRDMA的CPU实例规格,默认eRDMA内核驱动安装模式为Standard,此模式下仅支持RDMA_CM建链。
eRDMA提供了兼容模式(compat mode)用于OOB场景下的应用。兼容模式下,会额外占用30608~30623范围内的16个TCP端口。
sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf" sudo rmmod erdma sudo modprobe erdma compat_mode=Y
执行以下命令,安装docker。
说明使用AC2需要首先设置Docker运行环境。Docker的安装视不同的操作系统步骤略有不同,具体操作,参见安装Docker。本文中以Ubuntu为例,设置Docker运行环境。
apt update apt install docker.io -y
安装完毕后,通过以下命令查看Docker版本号,检查是否安装成功。
执行以下命令,部署并启动clickhouse,用于持久化集群运行状态指标(如节点状态、资源利用率、IO等)。
docker run -d --network=host --name clickhouse-server --ulimit nofile=262144:262144 ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/clickhouse:25.3.1.2703-ubuntu22.04
--net=host
:配置容器的通信模式为host
。容器内的应用程序可以直接使用主机的网络接口和网络配置,从而实现与主机相同的网络通信能力。--ulimit nofile
:设置容器内进程的文件描述符数量限制(即一个进程能同时打开的最大文件数),避免因进程过度占用文件句柄导致系统不稳定。
执行以下命令,部署并启动foundation db,保证集群事务日志配置与数据存储。
docker run -d --network=host --name fdb ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/fdb:7.3.63-ubuntu22.04
执行以下命令,部署并启动3fs monitor,负责收集和分析系统运行时的各种指标,如吞吐量、延迟、资源使用情况等。
docker run -d --network=host --name monitor --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./monitor.sh
--ulimit memlock=-1
:将maxlockedmemory
设置为unlimited
表示不限制非root用户锁定内存的数量。这可以确保eRDMA应用程序在非root用户下能够锁定所需的内存量,从而有效地使用eRDMA功能。--device=/dev/infiniband/uverbsX
和--device=/dev/infiniband/rdma_cm
:将eRDMA对应的用户态字符设备暴露到容器中。执行以下命令,查看字符设备名称(
uverbsX
中的X):ls /dev/infiniband | grep uverbs
执行以下命令,部署并启动3fs集群管理服务mgmtd,负责管理集群中的存储节点和资源分配。
docker run -d --network=host --name mgmtd --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env FDB_CLUSTER=`docker exec fdb cat /etc/foundationdb/fdb.cluster` --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./mgmtd.sh
--env REMOTE_IP
:设置monitor的服务地址,IP地址为monitor服务所在的节点的主私网IP地址(本示例中和meta同节点)。--env MGMTD_SERVER_ADDRESSES
:设置mgmtd服务的地址,IP地址改为启动了mgmtd服务的节点的主私网IP地址(本示例中和meta、monitor同节点)。
执行以下命令,部署并启动3fs的元数据服务meta。
docker run -d --network=host --name meta --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env FDB_CLUSTER=`docker exec fdb cat /etc/foundationdb/fdb.cluster` --env META_NODE_ID=100 --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./meta.sh
--env META_NODE_ID
:设置meta节点的顺序编号,本示例中1台meta节点,设置为100。--env REMOTE_IP
:设置monitor的服务地址,IP地址为monitor服务所在的节点的主私网IP地址(本示例中和meta同节点)。--env MGMTD_SERVER_ADDRESSES
:设置mgmtd服务的地址,IP地址改为启动了mgmtd服务的节点的主私网IP地址(本示例中和meta、monitor同节点)。
执行以下命令,查看以上启动的节点服务(docker容器)。
docker ps
步骤三:部署存储节点
以下步骤需要在五台存储节点的每一台执行。
远程登录存储节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,验证erdma是否配置正确。
ibv_devinfo
返回信息如下所示,表示eRDMA在实例上正常启用(eRDMA驱动正确安装、网卡的弹性RDMA接口已正确配置)。eRDMA驱动的安装可能需要一段时间,请您耐心等待。如果返回异常,请参见验证eRDMA配置的正确性进行修复。
执行以下命令,设置RDMA建链方式为兼容模式。
重要目前支持eRDMA的CPU实例规格,默认eRDMA内核驱动安装模式为Standard,此模式下仅支持RDMA_CM建链。
eRDMA提供了兼容模式(compat mode)用于OOB场景下的应用。兼容模式下,会额外占用30608~30623范围内的16个TCP端口。
sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf" sudo rmmod erdma sudo modprobe erdma compat_mode=Y
执行以下命令,格式化并挂载NVMe SSD。本示例中,挂载存储节点上的8块本地盘,并格式化为xfs文件系统(高性能,适合大文件)。
mkdir -p /storage/data{0..7} for i in {0..7};do mkfs.xfs -L data${i} /dev/nvme${i}n1;mount -o noatime,nodiratime -L data${i} /storage/data${i};done; mkdir -p /storage/data{0..7}/3fs
挂载完成后,可通过以下命令查看分区情况:
执行以下命令,安装docker。
说明使用AC2需要首先设置Docker运行环境。Docker的安装视不同的操作系统步骤略有不同,具体操作,参见安装Docker。本文中以Ubuntu为例,设置Docker运行环境。
apt update apt install docker.io -y
安装完毕后,通过以下命令查看Docker版本号,检查是否安装成功。
执行以下命令,启动存储服务storage。
docker run -d --network=host --name storage --ulimit memlock=-1 --privileged -v /storage:/storage --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env STORAGE_NODE_ID=10001 --env TARGET_PATHS="/storage/data0/3fs","/storage/data1/3fs","/storage/data2/3fs","/storage/data3/3fs","/storage/data4/3fs","/storage/data5/3fs","/storage/data6/3fs","/storage/data7/3fs" --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./storage.sh
--device=/dev/infiniband/uverbsX
和--device=/dev/infiniband/rdma_cm
:将eRDMA对应的用户态字符设备暴露到容器中。执行以下命令,查看字符设备名称(
uverbsX
中的X):ls /dev/infiniband | grep uverbs
--env STORAGE_NODE_ID
:存储节点顺序编号,如五个存储节点,其编号依次为10001、10002、10003、10004、10005。您需要根据实际情况进行替换。--env TARGET_PATHS
:3FS的存储目录,在本示例中为之前在本地盘上创建的目录。--env REMOTE_IP
:设置monitor的服务地址,IP地址为monitor服务所在的节点的主私网IP地址(本示例中和meta同节点)。--env MGMTD_SERVER_ADDRESSES
:设置mgmtd服务的地址,IP地址改为启动了mgmtd服务的节点的主私网IP地址(本示例中和meta、monitor同节点)。
执行以下命令,查看以上启动的节点服务(docker容器)。
docker ps
步骤四:在meta节点上查看当前连接的存储节点
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,查看当前连接的节点状态。
docker exec -it meta /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml --config.mgmtd_client.mgmtd_server_addresses '["RDMA://172.16.20.172:8000"]' "list-nodes"
替换IP为上述配置的mgmtd服务的地址。
admin_cli
是用于管理和维护3FS的命令行工具,您可以进行集群配置、状态监控、故障排查等操作。详细信息可以通过以下命令查看:docker exec -it meta /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml --config.mgmtd_client.mgmtd_server_addresses '["RDMA://172.16.20.172:8000"]' "help"
步骤五:meta节点配置相关参数
配置存储节点相关信息,如副本数、单个存储节点的盘数。
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,配置3FS。
docker exec \ --env STORAGE_NODE_NUM=5 \ --env STORAGE_NODE_BEGIN=10001 \ --env STORAGE_NODE_END=10005 \ --env REPLICATION_FACTOR=3 \ --env NUM_DISKS_PER_NODE=8 \ --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" \ meta \ ./config_3fs.sh
--env STORAGE_NODE_NUM
:存储节点数量,本示例中为5。--env STORAGE_NODE_BEGIN
:存储节点顺序编号的起始,本示例中为10001。--env STORAGE_NODE_END
:存储节点顺序编号的结尾,本示例中为10005。--env REPLICATION_FACTOR
:存储数据的副本数量,此处填3,使用3副本。--env NUM_DISKS_PER_NODE
:单个存储节点的盘数,本示例中为8。--env MGMTD_SERVER_ADDRESSES
:设置上述配置的mgmtd服务的地址。--env NUM_TARGETS_PER_DISK
:单个物理磁盘预期创建的存储目标数量,缺省值为12,即每个SSD划分12个存储目标。--env MIN_TARGETS_PER_DISK
:单个物理磁盘必须保证的最小存储目标数量,缺省值为12,即每个SSD至少保持12个可用存储目标。
步骤六:配置fuse客户端
在meta节点上配置fuse客户端,用户通过客户端挂载远程存储,使得可以像操作本地系统一样进行文件操作。
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,获取token,保证客户端安全接入。
docker exec meta cat /opt/3fs/etc/token.txt
执行以下命令,启动fuse client。
docker run -d --network=host --name fuse --shm-size=200g --ulimit memlock=-1 --privileged \ --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm \ --env REMOTE_IP="172.16.20.172:10000" \ --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" \ --env TOKEN=${token} \ ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 \ ./fuse.sh
--shm-size
:设置容器内/dev/shm
共享内存区域的大小。使用FUSE进行测试时,--shm-size可以设置为较小的值,如2g。
使用USRBIO模块进行测试时,测试进程需要通过共享内存的方式与FUSE进程共享IO Buffer以实现零拷贝,建议增大--shm-size,如200g。
--device=/dev/infiniband/uverbsX
和--device=/dev/infiniband/rdma_cm
:将eRDMA对应的用户态字符设备暴露到容器中。执行以下命令,查看字符设备名称(
uverbsX
中的X):ls /dev/infiniband | grep uverbs
--env REMOTE_IP
:设置monitor的服务地址,IP地址为monitor服务所在的节点的主私网IP地址(本示例中和meta同节点)。--env MGMTD_SERVER_ADDRESSES
:设置mgmtd服务的地址,IP地址改为启动了mgmtd服务的节点的主私网IP地址(本示例中和meta、monitor同节点)。--env TOKEN
:配置为上一步获取的token字符串。
执行以下命令,查看以上启动的节点服务(docker容器)。
docker ps
执行以下命令,查看fuse容器内文件系统的挂载和磁盘使用情况。
docker exec fuse df -hT | grep 3fs
FIO性能测试
完成部署后,fuse节点的docker容器内就得到了一个基于3fs的使用erdma进行节点间通信的高性能分布式文件系统。
FIO(Flexible I/O Tester) 是一款开源的存储性能基准测试工具,专为评估存储系统(如硬盘、SSD、分布式文件系统)的I/O能力而设计。其核心价值在于能够模拟真实业务场景的负载模型,通过高度可配置的测试参数,精准量化存储设备的吞吐量、IOPS、延迟等关键性能指标。
下面我们通过FIO对部署的3fs文件系统进行性能测试。
使用usrbio测试(用户态RDMA引擎)
在fuse容器中,启动100个作业,模拟高并发大文件顺序写的业务场景,测试3fs在eRDMA网络下的极限性能。hf3fs_usrbio.so
引擎启用用户态RDMA通信,相比内核态FUSE,实现零拷贝RDMA优化,性能有较大提升。
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,开始测试。
docker exec -it fuse \ fio -numjobs=100 -fallocate=none \ -ioengine=external:/usr/lib/hf3fs_usrbio.so \ -direct=1 \ -rw=write \ -bs=4MB \ --group_reporting \ -filesize=500MB \ --nrfiles=100 \ -iodepth=1 \ -name=/3fs/test \ -mountpoint=/3fs \ -ior_depth=1
numjobs=100
:启动100个并发作业(线程/进程),模拟多线程并发写入场景,测试系统在高并发下的吞吐能力和锁竞争情况。-ioengine=external:/usr/lib/hf3fs_usrbio.so
:使用3FS专用RDMA引擎。-direct=1
:启用直接I/O(绕过操作系统缓存)。-rw=write
:测试模式为顺序写入(顺序写入大文件),评估连续写入带宽(Bandwidth)。-bs=4M
:设置块大小(Block Size) 为4MB,模拟大块数据写入场景(如视频流、批量数据处理)--group_reporting
:合并所有作业的结果进行汇总输出,便于查看整体性能,而非单个作业的独立数据。--filesize=500MB
:每个作业写入500MB数据。总数据量为500MB × 100 个作业 = 50GB。--nrfiles=100
:总共创建100个文件(每个作业写入一个文件),测试多文件并发写入性能。--iodepth=1
:每个作业的 I/O 队列深度为1(即每个作业仅提交1个I/O请求)。--mountpoint=/3fs
:指定3FS文件系统挂载路径为/3fs
目录。--ior_depth=1
:指定RDMA发送队列深度,设置为1,表示同步I/O模式。
测试过程中,您可以在fuse所在节点实例的监控页面,查看实例的eRDMA流量情况。 详细信息,请参见网络带宽。
等待测试完成,查看测试结果。
核心指标结果如下:
吞吐能力:
IOPS=2668
:每秒2668次4MB写操作。BW=10.4GiB/s (11.2GB/s)
:实际测试带宽达到10.4GiB/s。
系统资源消耗:
cpu: usr=1.19%, sys=0.02%
:超低CPU使用率(eRDMA优势显著)。
使用posix测试(内核态libaio引擎)
在fuse容器中,使用Linux异步I/O引擎,启动2个作业(模拟并发写入),设置4MB数据块大小测试顺序写入场景下的带宽,并且持续运行5分钟,测试稳定性。
远程连接meta节点实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,开始测试。
docker exec -it fuse \ fio -numjobs=2 -fallocate=none \ -iodepth=2 \ -ioengine=libaio \ -direct=1 \ -rw=write \ -bs=4M \ --group_reporting \ -size=100M \ -time_based \ -runtime=300 \ -name=2depth_128file_4M_direct_write_bw \ -directory=/3fs
--numjobs=2
:启动2个并发作业(线程/进程),模拟多线程并发写入场景,测试系统在高并发下的吞吐能力和锁竞争情况。-iodepth=2
:每个作业的 I/O 队列深度为 2(即每个作业同时提交2个I/O请求)。-ioengine=libaio
:使用Linux异步I/O引擎(libaio
),支持非阻塞I/O。-direct=1
:启用直接I/O(绕过操作系统缓存)。-rw=write
:测试模式为顺序写入(顺序写入大文件),评估连续写入带宽(Bandwidth)。-bs=4M
:设置块大小(Block Size) 为4MB,模拟大块数据写入场景(如视频流、批量数据处理)--group_reporting
:合并所有作业的结果进行汇总输出,便于查看整体性能,而非单个作业的独立数据。-size=100M
:每个作业写入100MB数据(总数据量 = 100MB × 2 个作业 = 200MB)。-time_based
与-runtime=300
:运行时间为 300 秒(5 分钟),即使提前完成数据写入也持续运行,测试长时间写入的稳定性。-directory=/3fs
:指定3FS文件系统挂载路径为/3fs
目录。
测试过程中,您可以在fuse所在节点实例的监控页面,查看实例的eRDMA流量情况。 详细信息,请参见监控网络带宽。
等待测试完成,查看测试结果。
核心指标结果如下:
吞吐能力:
IOPS=710
:每秒710次4MB写操作(710*4MB=2840MB/s)。BW=2843MiB/s (2981MB/s)
:实际带宽达到2.84GB/s。
系统资源消耗:
cpu: usr=14.78%, sys=4.43%
:用户态CPU消耗较高(libaio引擎开销)。