Estou testando um espelho do ZFS usando o FIO (Flexible I / O tester) para entender a escalabilidade de leitura aleatória dos espelhos do ZFS. Os caches primários e secundários foram definidos como nenhum, pois o aplicativo que eu uso executa seu próprio armazenamento em cache.
Para fins de teste, estou usando discos magnéticos /dev/sdb
e /dev/sdc
com ~ 100 IOPS de leitura aleatória. As figuras de disco único foram obtidas da FIO ao usar uma montagem ZFS de disco único.
Meu entendimento do espelho do ZFS deve ser de aproximadamente 200 (100 + 100) IOPS de leitura aleatória. Ao testar, estou tendo apenas 140 IOPS de leitura aleatória. Os resultados completos estão abaixo:
test@pc:/mnt/zfs-raid1# fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=8 --runtime=240 --group_reporting
randread: (groupid=0, jobs=8): err= 0: pid=4293: Wed Nov 16 21:02:08 2016
read : io=137040KB, bw=584482B/s, iops=142, runt=240091msec
slat (usec): min=222, max=2246.9K, avg=56047.94, stdev=85252.98
clat (usec): min=2, max=5142.9K, avg=838922.05, stdev=443521.12
lat (msec): min=5, max=5401, avg=894.97, stdev=460.94
clat percentiles (msec):
| 1.00th=[ 75], 5.00th=[ 269], 10.00th=[ 396], 20.00th=[ 529],
| 30.00th=[ 619], 40.00th=[ 693], 50.00th=[ 766], 60.00th=[ 848],
| 70.00th=[ 947], 80.00th=[ 1090], 90.00th=[ 1336], 95.00th=[ 1614],
| 99.00th=[ 2507], 99.50th=[ 2835], 99.90th=[ 3720], 99.95th=[ 3884],
| 99.99th=[ 4621]
bw (KB /s): min= 1, max= 851, per=12.92%, avg=73.67, stdev=43.13
lat (usec) : 4=0.01%, 10=0.01%
lat (msec) : 10=0.11%, 20=0.05%, 50=0.34%, 100=0.85%, 250=3.16%
lat (msec) : 500=12.49%, 750=30.99%, 1000=26.12%, 2000=23.48%, >=2000=2.38%
cpu : usr=0.02%, sys=0.14%, ctx=99221, majf=0, minf=202
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.2%, 16=99.6%, 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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=34260/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=16
Run status group 0 (all jobs):
READ: io=137040KB, aggrb=570KB/s, minb=570KB/s, maxb=570KB/s, mint=240091msec, maxt=240091msec
O espelho foi criado usando:
zpool create zfs-raid1 mirror /dev/sdb /dev/sdc
Este é o nível de escalabilidade esperado? Ou há algo que estou perdendo?