Relazione tra IOPS del disco e sar tps


13

Sto cercando di stimare i requisiti IOPS della mia applicazione in esecuzione su CentOS 6.2 a 32 bit. Ho iniziato a prendere delle misure su una macchina con dischi SATA e sono abbastanza confuso della differenza tra IOPS e tps misurati da sar.

Secondo Wikipedia, il disco SATA dovrebbe eseguire 75-100 IOPS. l'utilità ioping sembra confermare questo per il test di accesso casuale:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Ma i valori tps prodotti da sar sono molto più alti (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Non importa se questo carico è sequenziale (dd con varie dimensioni di blocco) o accesso casuale (ioping), il valore è sempre lo stesso. Pensavo che tps fosse in realtà IOPS e mi sarei aspettato che scendesse con blocchi più grandi trasferiti.

Cosa significa esattamente il valore tps? E come si collega agli IOPS?


2
Credo che stai vedendo IOPS più alti nel valore TPS a causa della cache del disco.
Ceejayoz,

1
Ok, ho provato un file da 10 GB tramite dd con blocco da 256kB per riempire effettivamente la cache e dopo ~ 90 secondi il tps scende a ~ 200, quindi forse hai ragione. Ma ancora 80 e 200 fanno una differenza ... È possibile che leggere e scrivere IOPS differisca? E c'è un modo per capire gli IOPS richiesti da questo valore?
Pystole,

1
Puoi descrivere perché stai cercando IOPS? leggi e scrivi sono un paio di scarpe abbastanza diverse che vengono gettate nello stesso piatto qui.
Nils,

Il motivo è che devo descrivere un requisito HW minimo. Ho un server che riceve i dati sulla rete (possiamo assumere bitrate costante qui) e scrive i dati ricevuti sul disco. I dati vengono scritti in file in sequenza ma potrebbero essercene centinaia (ad esempio 800) in parallelo. Ho capito che quando il numero di clienti raggiunge un certo punto, comincio a ottenere grandi offerte. La velocità effettiva del disco che posso raggiungere è di circa 25 MB / s, che è piuttosto bassa, meno client con bitrate più elevato possono fare 35 MB / s, sequenze pure di circa 130 MB / s. Quindi immagino che lo IOPS sia quello che conta qui ...
pystole

Risposte:


6

Le transazioni sono singoli comandi IO (blocco di recupero / blocco di scrittura) scritti sul disco RAW (nel tuo esempio dm-0). Il kernel Linux tenta di ordinare quei comandi in una sequenza migliore o cerca di comprimerli in comandi più efficienti (come: ottenere 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 controller possono avere una propria logica che riduce ulteriormente il numero reale di transazioni.

Una transazione potrebbe essere il comando SCSI "scrivi 2 GB sul crontoller 1 target 2 lun 3 a partire dal settore 22). Come puoi vedere, questo non può essere portato in correlazione diretta con i numeri di throughput.

Quello che cerchi è il tasso di scrittura sostenuto. Hai un paio di fattori limitanti qui:

  • connessione client: se la rete è Gigabit non avrai mai più di 100 MB / s di input
  • disk-controller: se si tratta di un controller da 3 Gb non avrai mai una velocità di trasmissione superiore a 300 MB / s
  • disco: cerca il valore del produttore per prestazioni di scrittura sostenute
  • Filesystem: c'è un po 'di overhead dal momento che il sistema operativo deve elaborare i dati - testalo in un disco RAM ...

La mia ipotesi per il tuo sistema è: ottenere un buon controller raid hardware in grado di fare raid 10 o 5 e ottenere almeno 6 dischi veloci (15k).

Per uso professionale utilizzare SAS invece di SATA.


Ok, hai ragione IOPS non ha alcun senso per le scritture poiché ci sono molte cache, riordini e fusioni. Chiusura ... Grazie.
Pystole,

5

Si noti inoltre che il TPSvalore rappresenta le letture e le scritture, è possibile utilizzare -xswitch per la vista estesa in cui le letture e le scritture sono separate (r / s = leggi IOPS, w / s = scrivi 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

Si hai ragione. Ma nel mio caso c'è quasi il 100% delle scritture, le letture sono quasi nessuna.
Pistole
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.