Truenas scale 下 zfs 关闭 ARC 的性能测试
本帖最后由 elvba 于 2024-5-28 12:19 编辑正常来说,没有谁会把 zfs 的 ARC 关闭来使用,之所以有这个测试,是使用 fio 测试不同阵列组合下 zfs 的性能时,想到 zfs 有 ARC 做缓存,这样无法测试到阵列的原始性能,所以做了这个测试。
跑完之后发现有无 ARC 的性能差距实在是太大了,得到的结论是就应该多加内存提高 ARC 容量。
并且也无需关闭 ARC 来进行阵列性能对比测试,毕竟正常使用都是开启 ARC 的。
测试环境:
CPU:16 x Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
内存:32G
阵列卡:lsi 9211-8i 直通模式,pcie2.0 x 8 插槽,SAS2008 控制器,两个SFF-8087 接口,每个接口提供半双工 2.4G/s,全双工 4.8G/s 的带宽
硬盘笼:浪潮 5212M4 机头
硬盘:12 个 WD Elements 12TB 拆盒盘
测试方法:
使用 fio 命令进行测试,参数如下:
fio --output=io_test.log --output-format=normal,terse,json+ fio.conf
ioengine=psync
iodepth=1
direct=1
thread=1
numjobs=1
filename=test
norandommap=1
runtime=20
ramp_time=5
size=50G
group_reporting
stonewall
bs=4k
rw=randwrite
bs=4k
rw=randread
bs=128k
rw=write
bs=128k
rw=read
关闭 arc 的方法:
zfs set primarycache=none pool_name
测试结果:
https://s2.loli.net/2024/05/28/NWrdJA21OcEZ6oT.png
https://s2.loli.net/2024/05/28/eDjTsKtpCrn2mQv.png https://s21.ax1x.com/2024/05/27/pk1nF7q.png
楼主图连接的图床,在部分地区看不到的 这差距我想到的是btrfs不行主要是cache不行 zfs可以两级缓存吗?内存+本地nvme 赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme
可以l2arc 赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme
可以,但是实际效果一般,没太大必要用。
只有在内存容量不够用的时候考虑开启,不然起反效果。 YoshinoSakura 发表于 2024-5-28 01:33
https://s21.ax1x.com/2024/05/27/pk1nF7q.png
楼主图连接的图床,在部分地区看不到的
我换了个图床,现在试试能看到吗? 赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme
l2arc 就是干这个的 zfs可以考虑用zil加速同步写操作,本身没并有用固态做写缓存的功能,l2arc只能做读缓存 elvba 发表于 2024-5-28 12:19
我换了个图床,现在试试能看到吗?
现在能 sas2008?这东西机械盘都跑不满没有任何测试的意义 root@go[~]# fio --group_reporting=1 --name=fio_test --ioengine=psync --iodepth=1 --direct=1 --thread --rw=randwrite --size=4G --bs=4k --numjobs=1 --time_based=1 --runtime=30s -filename=/mnt/Main/E/Test/FIO/fio.test
fio_test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
fio-3.28
Starting 1 thread
fio_test: Laying out IO file (1 file / 4096MiB)
Jobs: 1 (f=1):
fio_test: (groupid=0, jobs=1): err= 0: pid=380836: Tue May 28 16:13:22 2024
write: IOPS=394k, BW=1538MiB/s (1612MB/s)(45.0GiB/30000msec); 0 zone resets
clat (nsec): min=1591, max=1261.3k, avg=2297.76, stdev=4862.82
lat (nsec): min=1621, max=1261.4k, avg=2323.95, stdev=4864.78
clat percentiles (nsec):
|1.00th=,5.00th=, 10.00th=, 20.00th=,
| 30.00th=, 40.00th=, 50.00th=, 60.00th=,
| 70.00th=, 80.00th=, 90.00th=, 95.00th=,
| 99.00th=, 99.50th=, 99.90th=[ 97792], 99.95th=,
| 99.99th=
bw (MiB/s): min=528, max= 1691, per=99.89%, avg=1535.93, stdev=319.16, samples=58
iops : min=135276, max=433078, avg=393196.97, stdev=81705.03, samples=58
lat (usec) : 2=15.47%, 4=84.26%, 10=0.10%, 20=0.02%, 50=0.01%
lat (usec) : 100=0.06%, 250=0.09%, 500=0.01%, 750=0.01%, 1000=0.01%
lat (msec) : 2=0.01%
cpu : usr=13.36%, sys=85.55%, ctx=35095, majf=0, minf=0
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete: 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,11808523,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=1538MiB/s (1612MB/s), 1538MiB/s-1538MiB/s (1612MB/s-1612MB/s), io=45.0GiB (48.4GB), run=30000-30000msec
fio --group_reporting=1 --name=fio_test --ioengine=psync --iodepth=1 --direct=1 --thread --rw=randwrite --size=4G --bs=128k --numjobs=1 --time_based=1 --runtime=30s -filename=/mnt/Main/E/Test/FIO/fio.test
fio_test: (g=0): rw=randwrite, bs=(R) 128KiB-128KiB, (W) 128KiB-128KiB, (T) 128KiB-128KiB, ioengine=psync, iodepth=1
fio-3.28
Starting 1 thread
fio_test: Laying out IO file (1 file / 4096MiB)
Jobs: 1 (f=1):
fio_test: (groupid=0, jobs=1): err= 0: pid=380872: Tue May 28 16:14:58 2024
write: IOPS=76.4k, BW=9545MiB/s (10.0GB/s)(280GiB/30001msec); 0 zone resets
clat (usec): min=4, max=762, avg=12.42, stdev=10.15
lat (usec): min=4, max=764, avg=12.82, stdev=10.24
clat percentiles (usec):
|1.00th=[ 10],5.00th=[ 10], 10.00th=[ 11], 20.00th=[ 11],
| 30.00th=[ 12], 40.00th=[ 12], 50.00th=[ 12], 60.00th=[ 12],
| 70.00th=[ 12], 80.00th=[ 12], 90.00th=[ 13], 95.00th=[ 14],
| 99.00th=[ 81], 99.50th=, 99.90th=, 99.95th=,
| 99.99th=
bw (MiB/s): min= 4044, max=10844, per=99.98%, avg=9542.31, stdev=1937.16, samples=59
iops : min=32359, max=86754, avg=76338.02, stdev=15497.31, samples=59
lat (usec) : 10=8.27%, 20=90.20%, 50=0.45%, 100=0.38%, 250=0.71%
lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01%
cpu : usr=6.15%, sys=93.04%, ctx=35238, majf=0, minf=0
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete: 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,2290766,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=9545MiB/s (10.0GB/s), 9545MiB/s-9545MiB/s (10.0GB/s-10.0GB/s), io=280GiB (300GB), run=30001-30001msec Juzi丶 发表于 2024-5-28 14:54
sas2008?这东西机械盘都跑不满没有任何测试的意义
为啥会跑不满?跑的时候我用 iostat 看了,除了关闭 arc 的 4k 单线程读写外,其他场景下每个磁盘都是满载了,测试结果的带宽也没超过 sas2008 的上限。 zfs set primarycache=none data用这个命令关不掉呀 proxmox 8.2 默认就给zfs 16g内存,事实16g也够了,家用环境根本不需要大内存 zfs不用ecc到底能不能跑啊,我的gen8太老了想换,打算搞个12th的普通板U不打算折腾ecc了,ARC还能开起来吗 helleon 发表于 2024-9-22 18:49
zfs不用ecc到底能不能跑啊,我的gen8太老了想换,打算搞个12th的普通板U不打算折腾ecc了,ARC还能开起来吗 ...
没问题,那里那么多内存错误 litguy 发表于 2024-9-22 19:00
没问题,那里那么多内存错误
感谢,才发现其实楼主也不是ecc
页:
[1]