Ho una domanda correlata su questo problema, ma è diventata troppo complicata e troppo grande, quindi ho deciso di dividere il problema in NFS e problemi locali. Ho anche provato a chiedere questo sulla mailing list di zfs-discuss senza molto successo.
Copia lenta tra le directory NFS / CIFS sullo stesso server
Schema: come sono installato e cosa mi aspetto
- Ho un pool ZFS con 4 dischi. ROSSO 2 TB configurato come 2 mirror con striping (RAID 10). Su Linux, zfsonlinux. Non ci sono dispositivi cache o di registro.
- I dati sono bilanciati tra mirror (importante per ZFS)
- Ogni disco può leggere (raw w / dd) in parallelo a 147 MB / sec, fornendo un throughput combinato di 588 MB / sec.
- Mi aspetto circa 115 MB / sec in scrittura, 138 MB / sec in lettura e 50 MB / sec in riscrittura di dati sequenziali da ciascun disco, sulla base dei parametri di riferimento di un analogo disco RED da 4 TB. Mi aspetto non meno di 100 MB / sec in lettura o scrittura, poiché qualsiasi disco può farlo in questi giorni.
- Ho pensato di vedere un utilizzo IO al 100% su tutti e 4 i dischi quando sotto carico leggevo o scrivevo dati sequenziali. E che i dischi verrebbero distribuiti oltre 100 MB / sec con un utilizzo del 100%.
- Ho pensato che il pool mi avrebbe dato circa 2x scrivere, 2x riscrivere e 4x leggere le prestazioni su un singolo disco - sbaglio?
- NOVITÀ Ho pensato che uno zvol ext4 sullo stesso pool avrebbe circa la stessa velocità di ZFS
Quello che effettivamente ottengo
Trovo che le prestazioni di lettura del pool non siano così alte come mi aspettavo
bonnie ++ benchmark sul pool di qualche giorno fa
Versione 1.97 ------ Uscita sequenziale ------ --Ingresso equivalente- - Casuale- Concorrenza 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Dimensioni macchina K / sec% CP K / sec% CP K / sec% CP K / sec% CP K / sec% CP / sec% CP igor 63G 99 99 232132 47 118787 27 336 97 257072 22 92,7 6
bonnie ++ su un singolo disco ROSSO da 4 TB da solo in uno zpool
Versione 1.97 ------ Uscita sequenziale ------ --Ingresso equivalente- - Casuale- Concorrenza 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Dimensioni macchina K / sec% CP K / sec% CP K / sec% CP K / sec% CP K / sec% CP / sec% CP vigore 63G 101 99 115288 30 49781 14 326 97 138250 13 111,6 8
In base a ciò, le velocità di lettura e riscrittura sono appropriate in base ai risultati di una singola unità RED da 4 TB (sono doppie). Tuttavia, la velocità di lettura che mi aspettavo sarebbe stata di circa 550 MB / sec (4 volte la velocità dell'unità da 4 TB) e almeno spererei per circa 400 MB / sec. Invece sto vedendo circa 260 MB / sec
bonnie ++ sul pool da adesso, mentre raccoglie le informazioni di seguito. Non è più come prima, e nulla è cambiato.
Versione 1.97 ------ Uscita sequenziale ------ --Ingresso equivalente- - Casuale- Concorrenza 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Dimensioni macchina K / sec% CP K / sec% CP K / sec% CP K / sec% CP K / sec% CP / sec% CP igor 63G 103 99 207518 43 108810 24 342 98 302350 26 256,4 18
zpool iostat durante la scrittura. Mi sembra a posto.
larghezza di banda delle operazioni di capacità pool alloc free read write read write -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.23T 2.39T 0 1.89K 1.60K 238M specchio 631G 1.20T 0 979 1.60K 120M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 0 1007 1.60K 124M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 0 975 0 120M specchio 631G 1.20T 0 953 0 117M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 0 1,01 K 0 128 M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 0 953 0 117M
zpool iostat durante la riscrittura. Mi sembra ok, penso .
larghezza di banda delle operazioni di capacità pool alloc free read write read write -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1,27 T 2,35 T 1015 923 125 M 101 M specchio 651G 1.18T 505 465 62.2M 51.8M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 198 438 24,4 M 51,7 M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 306384 37,8 M 45,1 M specchio 651G 1.18T 510 457 63.2M 49.6M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 304 371 37,8 M 43,3 M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 206 423 25,5 M 49,6 M
È qui che mi chiedo cosa stia succedendo
zpool iostat durante la lettura
larghezza di banda delle operazioni di capacità pool alloc free read write read write -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.27T 2.35T 2.68K 32 339M 141K specchio 651G 1.18T 1.34K 20 169M 90.0K ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 748 9 92.5M 96.8K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 623 10 76,8 M 96,8 K specchio 651G 1.18T 1.34K 11 170M 50.8K ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 774 5 95.7M 56.0K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 599 6 74.0M 56.0K
iostat -x durante la stessa operazione di lettura. Nota come IO% non è al 100%.
Dispositivo: rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz attendono r_await w_await svctm% util sdb 0,60 0,00 661,30 6,00 83652,80 49,20 250,87 2,32 3,47 3,46 4,87 1,20 79,76 sdd 0,80 0,00 735,40 5,30 93273,20 49,20 251,98 2,60 3,51 3,51 4,15 1,20 89,04 sdf 0,50 0,00 656,70 3,80 83196,80 31,20 252,02 2,23 3,38 3,36 6,63 1,17 77,12 sda 0.70 0.00 738.30 3.30 93572.00 31.20 252.44 2.45 3.33 3.31 7.03 1.14 84.24
zpool e test delle impostazioni del set di dati:
- atime è spento
- la compressione è disattivata
- ashift è 0 (rilevamento automatico - la mia comprensione era che questo era ok)
- zdb dice che i dischi sono tutti ashift = 12
- modulo - opzioni zfs zvol_threads = 32 zfs_arc_max = 17179869184
- sync = standard
Modifica - 30 ottobre 2015
Ho fatto qualche altro test
- set di dati bonnie ++ w / recordsize = 1M = 226 MB in scrittura, 392 MB in lettura molto meglio
- dataset dd w / record size = 1M = 260 MB in scrittura, 392 MB in lettura molto meglio
- zvol w / ext4 dd bs = 1M = 128 MB in scrittura, 107 MB in lettura perché così lento?
- set di dati 2 processori in parallelo = 227 MB in scrittura, 396 MB in lettura
- dd direct io non fa differenza sul set di dati e su zvol
Sono molto più felice della performance con l'aumentata dimensione del disco. Quasi tutti i file nel pool superano di 1 MB. Quindi lo lascerò così. I dischi non ottengono ancora il 100% di utilizzo, il che mi fa chiedere se potrebbe essere ancora molto più veloce. E ora mi chiedo perché la performance di zvol sia così scadente, in quanto è qualcosa che io (leggermente) uso.
Sono felice di fornire tutte le informazioni richieste nei commenti / risposte. Ci sono anche tonnellate di informazioni pubblicate nell'altra mia domanda: copia lenta tra le directory NFS / CIFS sullo stesso server
Sono pienamente consapevole del fatto che potrei non capire qualcosa e che questo potrebbe non essere affatto un problema. Grazie in anticipo.
Per chiarire, la domanda è: perché il pool ZFS non è veloce come mi aspetto? E forse c'è qualcos'altro che non va?
dd
per vedere che tipo di performance ottieni. Potresti anche provare l'IO diretto mentre stai aumentando le velocità di streaming in cui il doppio buffering della cache può influire sulle prestazioni. FWIW, 3/4 delle prestazioni di lettura teoriche di 4 dischi grezzi totali sono buone.
%util
numeri.