Alto iowait mentre il wMB / s è basso


8

Stavo indicizzando una tabella MySQL. Fa un grosso carico su quel computer.

Sembra a causa di un alto interesse. Ma mostra anche che il wMB / s è solo 2,87.

Un normale HDD SATA non è in grado di gestire più di 2,87 MB / s? Perché il processo è così lento allora?

iostat -x rapporti:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.74    0.00    3.48   47.51    0.00   47.26

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00   300.00    0.00  383.00     0.00     2.87    15.35   142.00  374.64   2.61  99.90
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00 2507.00     0.00     9.79     8.00   263.88  110.06   0.40  99.90
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    2.00     0.00     0.01     8.00     0.41  196.00 202.50  40.50
dm-3              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

Risposte:


12

Stai facendo piccole scritture casuali, che è praticamente la cosa più lenta che puoi fare su un disco rotante, quindi direi che il tuo throughput soddisfa le (mie) aspettative.

La tua avgrq-szdimensione è 15,35, il che significa che la tua richiesta media è 15,35 x la dimensione del settore del tuo disco SATA (più comunemente 512 byte, ma probabilmente 4096 byte su un disco SATA nuovissimo), quindi stai scrivendo 15,35 x 512 byte = 7.859,2 byte (in media) per richiesta, ogni volta che il iostatreport di 383 scritture / secondo ti dà 3.010.073,6 byte (stiamo moltiplicando per una media, quindi ecco da dove vengono i 6 byte). E 3.010.073,6 byte / secondo è 2,87 MB / s.

Il numero di scritture che è possibile eseguire al secondo dipenderà dalla quantità di disco necessaria per spostare le testine, ma in termini approssimativi si sta avvicinando il numero massimo di scritture che il dispositivo può effettuare in un secondo.

Una maggiore velocità di scrittura sui dischi rotanti si verifica quando si combina un piccolo numero di scritture al secondo con un grande avgrq-sz.

Se questo è un problema di prestazioni critico per te, suggerirei di esaminare le varie opzioni SSD che in genere offriranno prestazioni molto migliori su un carico di lavoro come questo.


4

È necessario eseguire iostatpiù volte durante il monitoraggio per creare un'immagine reale di ciò che sta accadendo. Quello, o usa uno strumento come Cacti per mantenere tali statistiche per te nel tempo in modo che tu possa guardare il grafico storico.

Ciò che molto probabilmente sta accadendo è che il disco sta facendo molte letture, a causa della scansione della tabella DB, e l' iostatesecuzione che hai postato è appena avvenuta durante un periodo in cui il DBMS stava scrivendo piuttosto che leggere. La scrittura interlacciata con la lettura è molto lenta su un disco rigido perché implica la ricerca, che è la cosa più lenta di un disco rigido. Se ascolti il ​​disco rigido, puoi probabilmente sentirlo tintinnare follemente poiché si alterna rapidamente tra la scrittura e la lettura in diverse parti del disco rigido.

Per far funzionare questo processo alla velocità di MByte / s a ​​due cifre che ti aspetti, dovresti dividere il processo in due, costruendo l'indice nella RAM mentre esegui la scansione della tabella, quindi scrivendo l'indice completo. MySQL è un software altamente ottimizzato, quindi se potesse farlo, mi aspetto che lo sia, e poiché non lo è, non può. Vale a dire, probabilmente non ha abbastanza RAM per farlo. Ciò significa che non hai abbastanza RAM fisica nella macchina per la parte di MySQL per contenere l'indice completo, o che non hai assegnato una porzione abbastanza alta della RAM del sistema nel file di configurazione di MySQL. La messa a punto di MySQL è tuttavia un argomento per un forum diverso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.