Ik vind punt 2 nog wel vreemd. Mirrors zouden eigenlijk altijd bijna 100% schaling moeten laten zien qua IOPS.
Als dat niet zo is, moeten we daar misschien toch eens naar kijken.
Kan je uitleggen wat je exact getest hebt?
Ik ben ook nog wel benieuwd naar hoe je de connectie maakt met clients, ik lees wel 10Gb, maar welk protocol? Windows SMB? Heb je NFS al eens geprobeerd? Staan dingen als Jumbo Frames aan?
Het is onwaarschijnlijk dat Jumbo Frames je ineens meer IOPS gaat geven, maar optimalisaties zijn natuurlijk altijd welkom.
Gister trouwens even met iozone op mijn eigen pool getest:
Iozone: Performance Test of File I/O
Version $Revision: 3.429 $
Compiled for 64 bit mode.
Build: linux-AMD64
Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
Vangel Bojaxhi, Ben England, Vikentsi Lapa.
Run began: Mon Nov 16 07:58:42 2020
Auto Mode
File size set to 10485760 kB
Command line used: iozone -a -s 10g
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
10485760 4 595214 491669 1838962 1880717 263048 18880 1236126 1171757 420422 481354 457476 1834081 1861290
10485760 8 695607 704668 2897200 3022669 518504 28475 2422150 2256752 532722 637920 545166 2860159 2989892
10485760 16 794086 1212809 4073538 4172785 1013739 11982 293208 283175 1185585 15042 11561 2602673 2765983
10485760 32 15301 23654 4219477 4787972 1837251 3708 1429017 158072 2265416 17581 14746 955293 1778941
10485760 64 23771 29422 455498 2697121 2023230 10395 782569 604128 4133247 17245 16320 63560 6162004
10485760 128 890662 809597 6259382 6866663 6447859 140165 5696246 17810025 6698745 696762 264311 6537945 6719345
10485760 256 401666 324772 5624101 6842440 6706087 158882 638994 2226721 6499427 29551 38188 6804958 6449949
10485760 512 99045 440635 5820640 6722275 6798657 846745 7313826 15957170 6875881 793085 664260 6740279 6144222
10485760 1024 859896 818427 6151077 6528026 6498665 615432 6529371 16959620 6571437 582326 1228307 5627128 6325262
10485760 2048 706990 775194 5382719 6030614 6651607 802770 7128485 16911291 6679751 790030 1264446 6007444 6496182
10485760 4096 801974 461678 5914681 4931349 5713102 854098 4836103 9855410 5717703 995908 1002120 5898899 4930934
10485760 8192 842932 446763 5389714 4966607 5556387 345704 5784745 7530990 5574993 406101 280667 4795770 5169419
10485760 16384 702826 646659 5083610 5406000 5400690 640130 5064611 7384832 5500190 875032 645680 4303557 5314414
iozone test complete.
In de frewrite test (1 van de moeilijkste tests volgens mij), zie je bij 4 en 8k vrij hoge waardes, want caching (denk ik), maar bij de 16k test, zie je de pool al flink inzakken. Dat is eigenlijk het slechtste punt van mijn array. Daar haal ik dus 11561KB/s, bij records van 16k is dat dus ~722 iops. Mijn pool bestaat uit 6 * 2.5" 2TB schijfjes in RAIDZ2, en het zijn ook nog eens SMR schijven.
Ik zou dezelfde test graag met een veel grotere size willen doen, maar mijn pool is vrij vol, dus dat gaat niet zo goed
Zojuist ook even FIO gedraait, die laat weer een heel ander beeld zien:
fio --name=randread --rw=randread --direct=1 --ioengine=libaio --bs=8k --numjobs=16 --size=10G --runtime=600 --group_reporting
Dit is dus een randomread test, blocksize 8k, 16 concurrent threads, met voor elke thread een 10G test file. De totale spanne van de test is dus 160GB, waar die bij iozone 'maar' 10GB was. Hier zie je de hoeveelheid IOPS al vele malen lager zijn.
Heeft natuurlijk ook met de benchmark te maken.
Jobs: 15 (f=15): [r(15),_(1)][94.0%][r=1097KiB/s][r=137 IOPS][eta 00m:38s]
randread: (groupid=0, jobs=16): err= 0: pid=21272: Tue Nov 17 08:26:02 2020
read: IOPS=2291, BW=17.9MiB/s (18.8MB/s)(10.5GiB/600133msec)
slat (usec): min=2, max=3516.9k, avg=6572.29, stdev=43065.53
clat (nsec): min=550, max=576206, avg=896.47, stdev=1386.78
lat (usec): min=2, max=3516.9k, avg=6573.32, stdev=43066.52
clat percentiles (nsec):
| 1.00th=[ 564], 5.00th=[ 572], 10.00th=[ 620], 20.00th=[ 636],
| 30.00th=[ 644], 40.00th=[ 644], 50.00th=[ 652], 60.00th=[ 652],
| 70.00th=[ 660], 80.00th=[ 668], 90.00th=[ 692], 95.00th=[ 908],
| 99.00th=[ 6624], 99.50th=[ 6816], 99.90th=[ 7392], 99.95th=[ 8384],
| 99.99th=[29568]
bw ( KiB/s): min= 12, max=576720, per=6.78%, avg=1241.87, stdev=21893.85, samples=17109
iops : min= 1, max=72090, avg=154.87, stdev=2736.75, samples=17109
lat (nsec) : 750=94.47%, 1000=0.69%
lat (usec) : 2=0.16%, 4=0.36%, 10=4.29%, 20=0.02%, 50=0.02%
lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%
cpu : usr=0.03%, sys=0.39%, ctx=65043, majf=0, minf=175
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=1375055,0,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):
READ: bw=17.9MiB/s (18.8MB/s), 17.9MiB/s-17.9MiB/s (18.8MB/s-18.8MB/s), io=10.5GiB (11.3GB), run=600133-600133msec
De average latency van mijn pool is dus 65ms, met een max latency van
3.5 seconde 
Als je kijkt naar 99% percentielen (wat soms een redelijker getal is dan het gemiddelde), zie je dus dat 99% van de tijd een IO operatie gecomplete wordt in 66ms.
De IO depth per thread was nooit hoger dan 1, dus er is hooguit een queue depth van 16 te bereiken. Veel hoger zal denk ik ook geen zin hebben (gehad).
Uiteindelijk is het gemiddelde aantal IOPS dus op 137 IOPS uitgekomen (zie bovenin).
Dat komt neer op ~35 iops per schijf (4 data schijven, 2 parity doen niet mee)
[
Voor 101% gewijzigd door
FireDrunk op 17-11-2020 08:33
]
Even niets...