Questa parte contiene un certo numero di benchmark di un sistema reale che usa il software RAID.
I benchmark sono stati fatti con il programma Bonnie
e ogni volta con file grandi due o più volte la dimensione della RAM fisica presente sulla macchina.
I benchmark misurano solo la larghezza di banda (bandwidth) in ingresso e in uscita su un solo grande file. Questa è una cosa interessante da conoscere, se siamo interessati al massimo indice di trasferimento (throughput) per scritture/letture di grandi quantità di dati.
In ogni caso, questi numeri ci dicono poco delle prestazioni dell'array se esso fosse usato come un "news spool", un web-server, ecc.
Teniamo sempre in mente, che i numeri dei benchmark sono il risultato dell'esecuzione di un programma ``sintetico''. Pochi dei programmi che appartengono alla vita reale fanno quello che fa Bonnie
e, sebbene questi numeri di I/O siano interessanti da guardare, non sono indicativi delle prestazioni dei programmi reali. Non troppo almeno.
Per ora ho solo i risultati ottenuti sulla mia macchina. Il sistema è:
I tre dischi U2W pianterebbero il controller U2W, and il disco UW ingolferebbe il controller UW.
Sembra impossibile instradare più di 30 MB/s di dati attraverso i bus SCSI del sistema usando o meno il RAID. Quello che credo è che, siccome il sistema è piuttosto vecchio, sia la banda passante della memoria a mancare, e questo limita quello che può essere inviato attraverso un controller SCSI.
La lettura è un "Sequential block input", e la scrittura è un "Sequential block output". La dimensione del file è stata di 1 GB per tutti i test. I test sono stati fatti in modalità singolo utente (single user). Il driver SCSI è stato configurato per non usare il "tagged command queuing".
Chunk size | Block size | Read KB/s | Write KB/s |
4k | 1k | 19712 | 18035 |
4k | 4k | 34048 | 27061 |
8k | 1k | 19301 | 18091 |
8k | 4k | 33920 | 27118 |
16k | 1k | 19330 | 18179 |
16k | 2k | 28161 | 23682 |
16k | 4k | 33990 | 27229 |
32k | 1k | 19251 | 18194 |
32k | 4k | 34071 | 26976 |
a questo, sembra che la dimensione del chunk non faccia molta differenza. Comunque, la dimensione del blocco dell'ext2fs dovrebbe essere più grande possibile, quindi 4 KB (ovvero la dimensione della pagina) sui sistemi IA-32.
Questa volta il driver SCSI è stato configurato per utilizzare il "tagged command queuing", con una profondità della coda di 8. Per il resto tutto come prima.
Chunk size | Block size | Read KB/s | Write KB/s |
32k | 4k | 33617 | 27215 |
Nessun altro test è stato fatto. TCQ sembra incrementare un poco le prestazioni in scrittura, ma in realtà non è che ci sia poi tutta questa differenza.
L'array è stato configurato per lavorare in modalità RAID-5, dei test simili ai precedenti sono stati fatti.
Chunk size | Block size | Read KB/s | Write KB/s |
8k | 1k | 11090 | 6874 |
8k | 4k | 13474 | 12229 |
32k | 1k | 11442 | 8291 |
32k | 2k | 16089 | 10926 |
32k | 4k | 18724 | 12627 |
Ora, sia la dimensione del chunk che quella del blocco del filesystem sembrano effettivamente fare la differenza.
Un array RAID-10 è composto da ``mirrored stripes'', ovvero, un array RAID-1 di due array RAID-0. La chunk-size è la dimensione del chunk sia dell'array RAID-1 che di quello RAID-0. Non ho compiuto dei test nel caso in cui le due dimensioni del chunk differiscano, per quanto sia perfettamente lecito.
Chunk size | Block size | Read KB/s | Write KB/s |
32k | 1k | 13753 | 11580 |
32k | 4k | 23432 | 22249 |
Nessun altro test è stato fatto. La dimensione del file era 900MB, perché le quattro partizioni coinvolte erano da 500 MB ognuna, il che non permetteva di avere spazio per un file da 1 GB in questa configurazione (RAID-1 su due array da 1000MB).