Fio 测试概览
Fio(Flexible I/O Tester)是一款功能强大的开源工具,用于对存储系统的性能进行基准测试。 它支持各种 I/O 操作,包括顺序和随机读/写,同时支持高度自定义的工作负载。 Fio 可跨平台,在 Linux、Windows 和 macOS 系统上运行,并提供诸如IOPS、带宽和延迟等详细的性能指标。
本页文档展示Alluxio 的 fio 测试结果。测试案例可应用于其他存储系统。
测试详情
测试环境
所有实例均位于 AWS 的同一可用区域。
Alluxio Worker
由8个nvme固态硬盘组成的 Raid 0(通过 mdadm 命令创建)
Alluxio Client
单个worker 和Client测试
此场景测试的是单个 100GB 大文件的读取性能。 测试中仅涉及 1 个client和 1 个worker。
测试准备
将一个100GB文件放入UFS。 在此基准测试中,我们使用与 Worker 和client位于同一区域的 S3 桶。
顺序读
在 Alluxio client 上运行以下命令:
fio -iodepth=1 -rw=read -ioengine=libaio -bs=<block_size> -numjobs=<numjobs> -group_reporting -size=100G -filename=/mnt/alluxio/100gb -name=read_test --readonly -direct=1 --runtime=60
numjobs
参数指定执行读取并发数。在此基准测试中,numjobs
设置为1
、32
或128
。 bs
参数指定测试中使用的数据块大小。我们使用 256k
测试吞吐量,使用 4k
测试 IOPS。
随机读
与热顺序读相同,但参数 rw
改为 randread
。
fio -iodepth=1 -rw=randread -ioengine=libaio -bs=<block_size> -numjobs=<numjobs> -group_reporting -size=100G -filename=/mnt/alluxio/100gb -name=read_test --readonly -direct=1 --runtime=60
测试结果摘要
单个Worker 和Client 吞吐量(256k大小的数据块)
单个Worker 和Client IOPS(4k大小的数据块)
附录 - Alluxio 配置
集群配置("alluxio-site.properties)
alluxio.master.hostname=localhost
alluxio.master.journal.type=NOOP
alluxio.security.authorization.permission.enabled=false
alluxio.worker.membership.manager.type=ETCD
alluxio.mount.table.source=ETCD
alluxio.etcd.endpoints=<endpoints>
alluxio.client.list.status.from.ufs.enabled=false
alluxio.worker.page.store.sizes=2TB
alluxio.worker.page.store.page.size=4M
alluxio.worker.page.store.dirs=/data1/worker
alluxio.user.metadata.cache.max.size=2000000
alluxio.dora.client.ufs.fallback.enabled=false
alluxio.user.position.reader.streaming.async.prefetch.thread=256
JVM 选项(alluxio-env.sh
)
ALLUXIO_WORKER_JAVA_OPTS="$ALLUXIO_WORKER_JAVA_OPTS -Xmx24G -Xmx24G -XX:+UseG1GC"
ALLUXIO_FUSE_JAVA_OPTS="$ALLUXIO_FUSE_JAVA_OPTS -Xms48G -Xmx48G -XX:MaxDirectMemorySize=24g -XX:+UseG1GC"
Fuse 挂载选项
-max_background=256 -max_idle_threads=256 -entry_timeout=60 -attr_timeout=60