elvba 发表于 2024-5-27 21:48

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

YoshinoSakura 发表于 2024-5-28 01:33

https://s21.ax1x.com/2024/05/27/pk1nF7q.png
楼主图连接的图床,在部分地区看不到的

一日 发表于 2024-5-28 01:40

这差距我想到的是btrfs不行主要是cache不行

赫敏 发表于 2024-5-28 02:25

zfs可以两级缓存吗?内存+本地nvme

ctj 发表于 2024-5-28 07:17

赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme

可以l2arc

elvba 发表于 2024-5-28 11:52

赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme

可以,但是实际效果一般,没太大必要用。
只有在内存容量不够用的时候考虑开启,不然起反效果。

elvba 发表于 2024-5-28 12:19

YoshinoSakura 发表于 2024-5-28 01:33
https://s21.ax1x.com/2024/05/27/pk1nF7q.png
楼主图连接的图床,在部分地区看不到的

我换了个图床,现在试试能看到吗?

litguy 发表于 2024-5-28 12:47

赫敏 发表于 2024-5-28 02:25
zfs可以两级缓存吗?内存+本地nvme

l2arc 就是干这个的

mosigan 发表于 2024-5-28 14:12

zfs可以考虑用zil加速同步写操作,本身没并有用固态做写缓存的功能,l2arc只能做读缓存

YoshinoSakura 发表于 2024-5-28 14:45

elvba 发表于 2024-5-28 12:19
我换了个图床,现在试试能看到吗?

现在能

Juzi丶 发表于 2024-5-28 14:54

sas2008?这东西机械盘都跑不满没有任何测试的意义

Juzi丶 发表于 2024-5-28 16:15

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

elvba 发表于 2024-5-28 17:39

Juzi丶 发表于 2024-5-28 14:54
sas2008?这东西机械盘都跑不满没有任何测试的意义

为啥会跑不满?跑的时候我用 iostat 看了,除了关闭 arc 的 4k 单线程读写外,其他场景下每个磁盘都是满载了,测试结果的带宽也没超过 sas2008 的上限。

dutian_007 发表于 2024-9-15 17:14

zfs set primarycache=none data用这个命令关不掉呀

mdk2000 发表于 2024-9-15 17:48

proxmox 8.2 默认就给zfs 16g内存,事实16g也够了,家用环境根本不需要大内存

helleon 发表于 2024-9-22 18:49

zfs不用ecc到底能不能跑啊,我的gen8太老了想换,打算搞个12th的普通板U不打算折腾ecc了,ARC还能开起来吗

litguy 发表于 2024-9-22 19:00

helleon 发表于 2024-9-22 18:49
zfs不用ecc到底能不能跑啊,我的gen8太老了想换,打算搞个12th的普通板U不打算折腾ecc了,ARC还能开起来吗 ...

没问题,那里那么多内存错误

helleon 发表于 2024-9-22 19:06

litguy 发表于 2024-9-22 19:00
没问题,那里那么多内存错误

感谢,才发现其实楼主也不是ecc
页: [1]
查看完整版本: Truenas scale 下 zfs 关闭 ARC 的性能测试