Soluzione 1:
Le transazioni sono singoli comandi IO (fetch block/write block) che vengono scritti sul disco RAW (nel tuo esempio dm-0). Il linux-kernel cerca di ordinare quei comandi in una sequenza migliore o cerca di comprimerli in comandi più efficienti (come:ottieni due blocchi contemporaneamente invece di ottenere un blocco e ottenere un altro blocco subito dopo questo). Queste sono le transazioni che vanno al controller del disco (tps per sda).
I buoni controllori possono avere una propria logica che riduce ulteriormente il numero reale di transazioni.
Una transazione potrebbe essere il comando SCSI "scrivi 2 GB a crontoller 1 target 2 lun 3 a partire dal settore 22). Come puoi vedere, questo non può essere messo in correlazione diretta con i numeri di throughput.
Quello che stai cercando è la velocità di scrittura sostenuta. Hai un paio di fattori limitanti qui:
- connessione client:se la rete è Gigabit non avrai mai più di 100 MB/s in ingresso
- disk-controller:se si tratta di un controller da 3 Gb, non avrai mai un throughput superiore a 300 MB/s
- disco:cerca il valore del produttore per prestazioni di scrittura sostenute
- Filesystem:c'è un piccolo sovraccarico poiché il sistema operativo deve elaborare i dati - provalo in un disco RAM...
La mia ipotesi per il tuo sistema è:procurati un buon controller raid hardware in grado di eseguire raid 10 o 5 e ottieni almeno 6 dischi veloci (15k).
Per uso professionale usa SAS invece di SATA.
Soluzione 2:
Tieni inoltre presente che TPS
value rappresenta letture e scritture, puoi usare -x
switch per la visualizzazione estesa in cui le letture e le scritture sono separate (r/s =read IOPS, w/s =write IOPS):
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
vda 0.07 24.65 0.30 18.95 30.65 330.22 18.74 0.07 3.61 0.98 1.89