Sono riuscito a ottenere velocità molto vicine ai numeri che mi aspettavo.
Stavo cercando 400 MB/sec e gestito 392 MB/sec . Quindi dico che il problema è risolto. Con la successiva aggiunta di un dispositivo cache, sono riuscito a gestire 458 MB /sec letto (credo memorizzato nella cache).
1. Inizialmente ciò è stato ottenuto semplicemente aumentando il set di dati ZFS recordsize
valore a 1M
zfs set recordsize=1M pool2/test
Credo che questo cambiamento si traduca solo in una minore attività del disco, quindi letture e scritture sincrone di grandi dimensioni più efficienti. Esattamente quello che stavo chiedendo.
Risultati dopo la modifica
- bonnie++ =226 MB in scrittura, 392 MB in lettura
- gg =260 MB in scrittura, 392 MB in lettura
- 2 processi in parallelo =227 MB in scrittura, 396 MB in lettura
2. Sono riuscito ancora meglio quando ho aggiunto un dispositivo cache (SSD da 120 GB). La scrittura è un po' più lenta, non so perché.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 208325 48 129343 28 458513 35 326.8 16
Il trucco con il dispositivo cache era impostare l2arc_noprefetch=0
in /etc/modprobe.d/zfs.conf . Consente a ZFS di memorizzare nella cache dati di streaming/sequenziali. Fallo solo se il tuo dispositivo cache è più veloce del tuo array, come il mio.
Dopo aver beneficiato della modifica della dimensione del record sul mio set di dati, ho pensato che potesse essere un modo simile per gestire le scarse prestazioni zvol.
Mi sono imbattuto in diverse persone che hanno affermato di aver ottenuto buone prestazioni utilizzando un volblocksize=64k
, quindi l'ho provato. Senza fortuna.
zfs create -b 64k -V 120G pool/volume
Ma poi ho letto che ext4 (il filesystem con cui stavo testando) supporta opzioni per RAID come stride
e stripe-width
, che non ho mai usato prima. Quindi ho usato questo sito per calcolare le impostazioni necessarie:https://busybox.net/~aldot/mkfs_stride.html e ho formattato nuovamente lo zvol.
mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/zvol/pool/volume
Ho eseguito bonnie++
fare un semplice benchmark e i risultati sono stati eccellenti. Sfortunatamente non ho i risultati con me, ma erano almeno 5-6 volte più veloci per le scritture, se ricordo bene. Aggiornerò di nuovo questa risposta se eseguo nuovamente il benchmark.