我创建了两个 zfs 池(一个使用 ssd,另一个使用 rust),并对每个池运行 bonnie,以尝试了解它们的性能,但我发现输出有些令人困惑,因为性能似乎几乎相同。我想知道我是否误解了输出,或者是否有人可以就可能发生的事情提供建议?
两个池都有一个包含两个磁盘的镜像 vdev。
SSD 池 - 2 x 500GB Samsung 850 Pro,ashift=13
bonnie -u root -d /ssdpool/images/
Version 1.98 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
is7734 126G::8192:5 177k 99 475m 97 438m 98 376k 99 1.4g 99 +++++ +++
Latency 69204us 100ms 104ms 33890us 925us 6948us
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
is77346 16 16845 98 +++++ +++ 2463 10 +++++ +++ +++++ +++ 22164 98
Latency 6213us 708us 5089ms 2565us 42us 910us
bonnie++ -d /ssdpool/images/ -s 128G:4k -u root
Version 1.98 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
is77346 128G:4k 180k 99 343m 98 305m 99 396k 99 989m 99 +++++ +++
Latency 31352us 102ms 101ms 16948us 952us 12772us
Version 1.98 ------Sequential Create------ --------Random Create--------
is77346 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 0 98 +++++ +++ 724249376 10 +++++ +++ +++++ +++ 724249376 99
Latency 2523us 488us 5379ms 2562us 92us 926us
fio --name=random-write --ioengine=sync --iodepth=4 --rw=randwrite --bs=4k --direct=0 --size=256m --numjobs=16 --end_fsync=1
[...]
Run status group 0 (all jobs):
WRITE: bw=212MiB/s (222MB/s), 13.2MiB/s-15.5MiB/s (13.9MB/s-16.2MB/s), io=4096MiB (4295MB), run=16565-19359msec
HDD 池 - 2 x 4TB WD Green,ashift=12
bonnie -u root -d /hddpool/images/
Version 1.98 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
is77346 126G 166k 94 391m 86 345m 82 387k 99 1.4g 99 11676 399
Latency 97954us 101ms 105ms 39728us 939us 10904us
Version 1.98 ------Sequential Create------ --------Random Create--------
is77346 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 0 73 +++++ +++ 724249376 7 0 78 +++++ +++ 724249376 16
Latency 100ms 667us 6853ms 3384us 20us 563ms
bonnie++ -d /hddpool/images/ -s 128G:4k -u root
Version 1.98 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
is77346 128G:4k 166k 99 315m 96 268m 96 355k 99 979m 99 6563 259
Latency 32958us 101ms 103ms 26880us 1019us 11142us
Version 1.98 ------Sequential Create------ --------Random Create--------
is77346 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 0 92 +++++ +++ 724249376 7 0 81 +++++ +++ 724249376 18
Latency 2562us 949us 6462ms 3451us 31us 626ms
fio --name=random-write --ioengine=sync --iodepth=4 --rw=randwrite --bs=4k --direct=0 --size=256m --numjobs=16 --end_fsync=1
[...]
Run status group 0 (all jobs):
WRITE: bw=33.0MiB/s (35.6MB/s), 2175KiB/s-2623KiB/s (2227kB/s-2686kB/s), io=4096MiB (4295MB), run=99950-120548msec
如果还值得一提的是系统中的其他配置:
- 操作系统是 Ubuntu 20.04,运行于 SSD 上
- 64GB 内存
- 两个池都使用:atime=off、recordsize=64k、compression=lz4
- 我没有明确配置 zil 或 l2arc,因此除非它们默认使用 OS 磁盘,否则它们将不会被配置。
根据评论中@francisaugusto 的建议,我运行了 fio(见上文结果),结果显示两个池之间存在显著差异。我仍然不确定为什么 bonnie 会给出如此相似的结果,但我确信一切正常。如果将来有人读到这篇文章,也许可以放弃 bonnie,从 fio 开始。