fio \
--name RWRITE \
--rw=randwrite \
--filename=/dev/sd* \
--size=1g \
--blocksize=4k \
--iodepth=1 \
--numjobs=1 \
--direct=1 \
--randrepeat=0 \
--ioengine=libaio \
--group_reporting
/
Вот так можно блочный девайс затестить на случайную запись, например. Просто меняй букву в имени девайса, но только не попутай❗️ с другими дисками)
В плане самого тестирования надо регулировать size, blocksize, iodepth и numjobs - к примеру я когда тестирую SSD-диски, то для начала обычно ставлю 1g, 4к, 32 и 16 соответственно - потому что так КристалДискМарк по умолчанию тестит и можно сравнивать свои результаты с обзорами в инете)
Вот что у меня вышло из тестов zpool через zvol.
iostat -yv 10 1
raid-500 1.19T 1.97T 1 7.85K 18.0K 327M
mirror-0 295G 165G 0 1.18K 0 35.8M
gptid/00c0a656-9b41-11ed-b79d-c45444d2f933 - - 0 323 0 18.0M
gptid/101deddb-bcb6-11ed-9f82-c45444d2f933 - - 0 886 0 17.9M
mirror-1 266G 194G 0 2.01K 0 74.6M
gptid/feb6f20f-9b40-11ed-b79d-c45444d2f933 - - 0 1.51K 0 37.3M
gptid/00aa76cf-9b41-11ed-b79d-c45444d2f933 - - 0 520 0 37.3M
mirror-2 247G 213G 0 1.19K 4.80K 62.9M
gptid/001c4697-9b41-11ed-b79d-c45444d2f933 - - 0 645 0 31.5M
gptid/00b618e9-9b41-11ed-b79d-c45444d2f933 - - 0 574 4.80K 31.5M
indirect-3 - - 0 0 0 0
mirror-5 390G 538G 0 1.15K 5.60K 59.3M
gptid/1d276c82-dacb-11ed-812f-c45444d2f933 - - 0 769 4.80K 29.6M
gptid/1d427365-dacb-11ed-812f-c45444d2f933 - - 0 403 818 29.7M
mirror-6 22.1G 906G 0 2.32K 7.59K 94.7M
gptid/16389aa3-daee-11ed-812f-c45444d2f933 - - 0 1.72K 7.59K 47.3M
gptid/16464c81-daee-11ed-812f-c45444d2f933 - - 0 608 0 47.4M
---------------------------------------------- ----- ----- ----- ----- ----- -----
root@truenas[/mnt/raid-500]# fio --name RWRITE --rw=randwrite --filename=/dev/zvol/raid-500/test --size=10g --blocksize=4k --iodepth=1 --numjobs=1 --direct=1 --randrepeat=0 --ioengine=posixaio --group_reporting
RWRITE: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=posixaio, iodepth=1
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [f(1)][100.0%][eta 00m:00s]
RWRITE: (groupid=0, jobs=1): err= 0: pid=9757: Mon Apr 17 09:20:41 2023
write: IOPS=18.0k, BW=70.5MiB/s (73.9MB/s)(10.0GiB/145252msec); 0 zone resets
slat (usec): min=9, max=1824, avg=52.08, stdev=152.95
clat (nsec): min=1102, max=287285, avg=1602.26, stdev=1593.49
lat (usec): min=10, max=1828, avg=53.68, stdev=153.41
clat percentiles (nsec):
| 1.00th=[ 1176], 5.00th=[ 1208], 10.00th=[ 1240], 20.00th=[ 1304],
| 30.00th=[ 1352], 40.00th=[ 1384], 50.00th=[ 1416], 60.00th=[ 1432],
| 70.00th=[ 1464], 80.00th=[ 1512], 90.00th=[ 1656], 95.00th=[ 2288],
| 99.00th=[ 4128], 99.50th=[14784], 99.90th=[16512], 99.95th=[22144],
| 99.99th=[58112]
bw ( KiB/s): min=19944, max=161032, per=99.94%, avg=72149.29, stdev=27800.93, samples=289
iops : min= 4986, max=40258, avg=18037.05, stdev=6950.20, samples=289
lat (usec) : 2=93.67%, 4=5.29%, 10=0.36%, 20=0.63%, 50=0.04%
lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%
cpu : usr=6.07%, sys=48.91%, ctx=206181, majf=0, minf=1
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,2621440,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=70.5MiB/s (73.9MB/s), 70.5MiB/s-70.5MiB/s (73.9MB/s-73.9MB/s), io=10.0GiB (10.7GB), run=145252-145252msec
Убрал все slog/meta кэши. Т.к. пока что их добавление и убирание особо ничего не добавляет. Ну скорость постабильнее вышла. Судя по всему вцелом говнодиски итак неплохо выдают с кэшем в RAM.