本文主要记录用vdbench测试JuiceFS的性能表现情况及遇到的问题。vdbench的安装使用,请参考vdbench安装使用。本文的测试环境请见下文,另外也可以看看JuiceFS官方给出的性能数据:单机性能测试。
测试环境
客户端
硬件
CPU: Intel(R) Xeon(R) Silver 4214R CPU @ 2.40GHz
内存: 128GB
软件
fio 3.12
juices version 1.0-dev (2021-11-03 d98cd00f)
1 | juicefs -V |
服务端
Redis
使用向DB申请的8GB的Redis环境
S3实例信息
机房S3实例信息略
4k小文件场景
本文中默认vdbench放在/home/xxx/software/vdbench目录下。
单机执行vdbench测试
单机4k小文件场景的配置文件:
1 | #hd=default,vdbench=/home/xxx/software/vdbench/,user=root,shell=vdbench |
准备好配置文件之后,就可以执行如下命令了:
1 | root@xxx:/home/xxxx/software/vdbench# nohup /home/xxx/software/vdbench/vdbench -f /home/xxx/software/vdbench/conf/4k_test.cfg -o /home/xxx/software/vdbench/output_4K & |
需要注意的是,在单机执行的时候,配置文件中不需要写host相关信息了。
如果配置了,很可能因为防火墙等原因会报如下错误:
1 | root@xxx:/home/xxx/software/vdbench# /home/xxx/software/vdbench/vdbench -f /home/xxx/software/vdbench/conf/4k_test.cfg -o /home/xxx/software/vdbench/output_4K |
测试结果
负载名称 | 写IOPS | 写时延/ms | 写带宽MB/s | 读IOPS | 读时延/ms | 读带宽MB/s |
---|---|---|---|---|---|---|
rd1 随机写 | 2316.6 | 3.939 | 9.05 | - | - | - |
rd2 随机读 | - | - | - | 26279 | 0.376 | 102.6 |
rd3 顺序写 | 211550 | 0.025 | 826.3 | - | - | - |
rd4 顺序读 | - | - | - | 57102 | 0.173 | 223.0 |
rd5 随机混合 | 1103.1 | 0.045 | 14.37 | 2576.0 | 3.855 | 4.31 |
4M大文件场景
单机执行vdbench测试
配置文件:
1 | fsd=fsd1,anchor=/mnt/jfs,depth=3,width=10,files=30,size=20M,openflags=o_direct |
测试结果:
负载名称 | 写IOPS | 写时延/ms | 写带宽MB/s | 读IOPS | 读时延/ms | 读带宽MB/s |
---|---|---|---|---|---|---|
rd1 随机写 | 224.1 | 2.615 | 896.3 | - | - | - |
rd2 随机读 | - | - | - | 303.7 | 32.758 | 1214 |
rd3 顺序写 | 224.7 | 2.527 | 898.7 | - | - | - |
rd4 顺序读 | - | - | - | 361.6 | 27.534 | 1446 |
rd5 随机混合 | 59.6 | 3.022 | 238.2 | 137.4 | 61.330 | 549.4 |
遇到的错误
java.lang.RuntimeException: Slave hd1-0 prematurely terminated.
该错误上面已经提到过了,主要是防火墙的问题,所以会报错。
解决办法是:直接不填hd相关信息,默认就是单机执行,会自行拉起相关进程,通过
1 | ps -ef | grep vdbench |
可以看到:
1 | root@xxx:/home/xxx/software/vdbench# ps -ef | grep vdbench |
Make sure you also specify ‘format=yes’ in the Run Definition (RD)
在多次测试时候,可能那个目录深度和文件数量都有变量,于是遇到如下错误:
1 | root@xxx:/home/xxx/software/vdbench# /home/xxx/software/vdbench/vdbench -f /home/xxx/software/vdbench/conf/4k_test_multi_machine_4M.cfg -o /home/xxx/software/vdbench/output_4K_multi_machine_4M |
错误提示说得很明显了,解决办法就是在rd中加上“ format=yes”
- format= 可选值为yes、no或restart,标识预处理目录和文件结构的方式
–yes表示删除目录和文件结构再重新创建
–no表示不删除目录和文件结构
–restart表示只创建未生成的目录或文件,并且增大未达到实际大小的文件
本来预期一个小时的测试,实际时间花了几个小时
在测试多机多线程(大文件4M)场景时,实际测试完成时间花了几个小时,本来预期是一个小时完成的。
经研究发现跑测试的时候确实是一个小时,而每次测试完成后,因为选的运行参数format设置为yes,这样每次都会重新去准备测试环境,包括清理掉上次的环境,但是此时由于环境中有大量小文件,删除耗时很长,我自己尝试删除了一下,很久才完全删除。这就是实际整个测试花了几个小时的原因。