Velocità di lettura / scrittura SSD (Intel 530) molto lenta con RAID 10


11

Spiegazione:

Abbiamo un server:

  • Modello: HP ProLiant DL160 G6
  • 4 SSD da 240 GB (RAID-10)
  • 72 GB di RAM DDR3
  • 2 x L5639
  • Controller RAID HP P410 (256 MB, V6.40, versione Rom: 8.40.41.00)

Le unità SSD sono 4 nuovissimi Intel 530 da 2,5 "con velocità di lettura 540 MB / s e velocità di scrittura 490 MB / s

  • CentOS 6
  • I file system sono ext4

ma questo è il risultato del test per la velocità di lettura sul raid 10:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

e questo è per la velocità di scrittura:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

speravamo in 1 GB di velocità di lettura con raid 10 ma 270 MB non è nemmeno la velocità di un singolo disco!

Domande:

  1. Perché è così lento?
  2. È a causa del controller RAID?

Aggiornamento 1 - Stessa velocità di lettura / scrittura:

Dopo aver modificato alcune impostazioni come indicato nelle risposte, ho il seguente risultato:

(Qualcuno sa perché mostra 4 GB invece di 400 MB come velocità di lettura ?!)

EDIT: sembra che il comando sia sbagliato e avremmo dovuto usare -s144g per questa quantità di RAM, ecco perché mostra 4 GB (come suggerito nei commenti di ewwhite)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

ma il vecchio hdparm -t /dev/sdacomando mostra ancora:

Letture disco buffer temporizzate: 810 MB in 3,00 secondi = 269,85 MB / sec

Aggiornamento 2 (pacchetto tuned-utils) - La velocità di lettura ora è di 600 MB / s:

Finalmente qualche speranza, abbiamo disabilitato la cache dal controller raid e fatto altre cose prima senza fortuna, ma poiché abbiamo ricaricato il server e installato nuovamente il sistema operativo, abbiamo dimenticato di installare "tuned-utils" come suggerito nella risposta di ewwhite (Grazie ewwhite per questo fantastico pacchetto che hai suggerito)

Dopo aver installato tuned-utilse scelto il enterprise-storageprofilo, la velocità di lettura è ora ~ 600 MB / s + ma la velocità di scrittura è ancora molto lenta (~ 160 MB) (:

Ecco il risultato per il iozone -t1 -i0 -i1 -i2 -r1m -s144gcomando:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

Anche con hdparm -t /dev/sdacomando abbiamo:

Letture del disco buffer temporizzate: 1802 MB in 3,00 secondi = 600,37 MB / sec

Qualche suggerimento per la velocità di scrittura molto lenta?

Aggiornamento 3 - Alcune informazioni richieste nei commenti:

La velocità di scrittura è ancora molto bassa (~ 150 MB / s che non è nemmeno 1/3 di un singolo disco)

Uscita per df -he fdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux

Per questo test, dovresti probabilmente specificare il doppio della quantità di RAM installata nel server.
ewwhite,

Puoi dirci la versione del firmware del controller Smart Array P410?
ewwhite,

@ewwhite grazie per il tuo commento, la versione del firmware è p410 (256 MB, V6.40) e la versione rom è 8.40.41.00, il mio comando iozone è sbagliato? se sì, potresti dirmi il comando giusto con cui provare? perché tutto quello che provo ottengo la velocità di lettura in GB
Ara

C'è qualcosa di molto sbagliato qui. Ricevi solo ~ 122 MB / s di scrittura. Le cifre di 4 GB / s che vedi sono operazioni dalla cache, quindi la tua stringa di comando dovrebbe apparire come iozone -t1 -i0 -i1 -i2 -r1m -s144g. :(
ewwhite

@ewwhite Grazie mille, la velocità di lettura ora è molto buona (dettagliata come aggiornamento 2 nella mia domanda), ma la velocità di scrittura è molto deludente, hai qualche suggerimento per questo?
Ara

Risposte:


16

Mentre l'altra risposta qui emerge alcuni punti, i tuoi problemi specifici sono dovuti alle limitazioni della piattaforma e alla configurazione del sistema operativo:

  • La velocità effettiva è limitata dall'uso di SSD SATA consumer su un controller RAID HP Smart Array P410 . I dischi SATA funzionano a 3.0Gbps (3G) su questi controller anziché a 6.0Gbps (6G). Quindi questa è una barriera che influisce sulla velocità di lettura dei tuoi SSD Intel; 300 MB / se meno per unità.

  • Il controller Smart Array P410 presenta requisiti e best practice specifici se utilizzato con SSD. In breve, il controller è in grado di supportare 50.000 IOPS, disabilitare l'acceleratore di array per il volume SSD e il massimo delle prestazioni a ~ 6 unità.

  • Le prestazioni del disco non riguardano sempre la velocità sequenziale di lettura / scrittura. Prova il benchmarking con uno strumento adeguato come iozone o bonnie ++ . Ottieni ancora i vantaggi I / O casuali delle tue unità multiple.

  • A livello di sistema operativo, installa il pacchetto tuned-utils e imposta il profilo in modo enterprise-performanceda rimuovere le barriere di scrittura dal tuo filesystem e imposta il giusto elevatore I / O per la tua configurazione. Questo è trattato anche in altre domande qui .

  • Sembra che tu stia usando LVM. Anche questo può avere un impatto ...

Ecco un rapporto sullo iozone per un G7 ProLiant in esecuzione con quattro SSD SATA 6G consumer (spostati a velocità 3G) sullo stesso controller RAID HP Smart Array P410.

Dovresti vedere ~ 470 MB / s di scrittura e 650 MB / s + di lettura.

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec

Grazie mille, il modello è "DL160 G6", sì, c'è backplane coinvolto :( Vorrei anche essere felice con 600MB di qui, ma 270MB è molto lento, che cosa pensi che dovrei fare, fa RAID software di aiuto?
Ara

2
Va bene, con un DL160 G6, dovresti avere due cavi che vanno dal controller RAID al backplane dell'unità ... 8 slot per unità. Il tuo problema qui è il throughput dell'unità, la metodologia di test e le impostazioni del server. Prova gli altri suggerimenti che ho elencato nella mia risposta.
ewwhite,

Parte interessante del P410 che fa solo 3G su SATA e le migliori pratiche specifiche. Mod up. (LVM tuttavia non dovrebbe essere un battitore pesante in termini di impatto negativo sulle prestazioni, anche qui indicato: unix.stackexchange.com/questions/7122/… )
Roman

1
@Ara Non esiste un controller SATA 6G per ProLiant. Questo è il punto. I tuoi SSD funzioneranno solo a velocità 3G su questa piattaforma a meno che tu non usi SSD SAS .
ewwhite,

1
@Ara Software RAID implicherebbe la connessione a un controller diverso, come un SAS HBA (ad es. LSI 9211-8i) ... ti permetterebbe di vedere l'intera larghezza di banda dei tuoi dischi, ma ci sono altri aspetti delle prestazioni SSD oltre al puro larghezza di banda sequenziale di lettura / scrittura.
ewwhite,

12

Oh caro, da dove cominciare?

C'è così tanto da fare e hai bisogno di una buona comprensione di tutto. Basta lanciare un sacco di dischi contro un controller RAID non produrrà i risultati che stai cercando.

Non è possibile rispondere facilmente a questa domanda. Ma almeno, ecco un elenco di cose che devi guardare:

  • Il controller ha anche il throughput necessario? (-> Fogli dati)
  • Il controller ha persino una larghezza di banda sufficiente per l'host (lo fa, anche a v1.0, poiché è x8)
  • Il chipset del sistema ha un throughput sufficiente (CPU-Controller)? (sconosciuto)
  • Quale strategia di scrittura hai incaricato il responsabile del trattamento? ( questo è ciò che molto probabilmente ti ha morso )
  • Tutto è allineato (partizione inizia, LV, PV)?
  • Le dimensioni dei blocchi sono armonizzate? (Dimensione della striscia RAID, dimensione del blocco, blocchi FS, ...)
  • Il filesystem è ottimizzato per la configurazione RAID? (Livello e dimensione del blocco)

Poiché la velocità effettiva dell'intero RAID (trascurando FS) è significativamente inferiore a un singolo disco, è probabile che tu abbia impostato la tua strategia di scrittura in modo errato; il Controller probabilmente sta aspettando che tutti i dischi confermino la scrittura (e, a meno che tu non abbia la RAM supportata dalla batteria del controller, questo potrebbe essere nel tuo interesse).


questo è davvero più difficile di quanto pensassi, ho pensato che fosse semplice come aggiornare il RAM del controller Raid a 512 MB! , grazie romano, fammi controllare alcune delle cose che hai appena detto sperando di trovare il motivo
Ara

La maggior parte delle precedenti sono strategie di risoluzione dei problemi valide per casi limite, ma non si applicano ai dettagli della configurazione del poster originale. Il controller qui ha il throughput e la larghezza di banda richiesti, la CPU va bene, il controller RAID è impostato automaticamente sul rapporto cache 25:75 R / W (dovrebbe essere disabilitato interamente per l'uso SSD), CentOS6 allinea correttamente le partizioni e c'è troppa potenziale astrazione per ottenere le dimensioni del blocco "armonizzate". I tre problemi a portata di mano sono i dischi 6G che sono strozzati a velocità 3G, le barriere di scrittura del filesystem sono probabilmente abilitate e l'ascensore I / O è il CFQ predefinito.
ewwhite,

1
Il modello del server purtroppo non è stato notato al momento della mia risposta. Buono a sapersi sulla limitazione. Penso che le barriere e il CFQ non siano costati molto in questo specifico "benchmark", ma comunque preziose informazioni.
Romano,

@Roman Mi dispiace di non aver menzionato prima il modello, apprezzo molto il tuo aiuto, sto provando le tue guide e la tua ewwhite per raggiungere i 500-600 MB, immagino che sia la velocità più alta che posso raggiungere con questo limite 3G
Ara

1
Nessun problema. Assicurati di seguire i collegamenti nelle risposte di ewwhite, poiché ci sono cose specifiche da fare con il P410 insieme a SSD. Inoltre, è necessario distribuire i quattro dischi in modo uniforme tra le due connessioni dal backplane al controller.
Romano
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.