Die Lese- / Schreibgeschwindigkeit der SSD (Intel 530) ist mit RAID 10 sehr langsam

11

Erläuterung:

Wir haben einen Server:

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

SSD-Laufwerke sind 4 brandneue 2,5 "Intel 530 mit 540 MB / s Lesegeschwindigkeit und 490 MB / s Schreibgeschwindigkeit

  • CentOS 6
  • Dateisysteme sind ext4

Dies ist jedoch das Testergebnis für die Lesegeschwindigkeit bei 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

und dies ist für die Schreibgeschwindigkeit:

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

Wir hatten auf eine Lesegeschwindigkeit von 1 GB mit RAID 10 gehofft, aber 270 MB sind nicht einmal die Geschwindigkeit einer einzelnen Festplatte!

Fragen:

  1. Warum ist es so langsam?
  2. Liegt es am RAID-Controller?

Update 1 - Gleiche Lese- / Schreibgeschwindigkeit:

Nachdem ich einige Einstellungen wie in den Antworten erwähnt geändert habe, habe ich das folgende Ergebnis:

(Weiß jemand, warum es 4 GB statt 400 MB als Lesegeschwindigkeit anzeigt?!)

BEARBEITEN: Es sieht so aus, als ob der Befehl falsch war und wir hätten -s144g für diese RAM-Menge verwenden sollen. Deshalb werden 4 GB angezeigt (wie in den Kommentaren von ewwhite vorgeschlagen).

[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

aber der alte hdparm -t /dev/sdaBefehl zeigt immer noch:

Timing gepufferte Festplattenlesevorgänge: 810 MB in 3,00 Sekunden = 269,85 MB / s

Update 2 (Tuned-Utils-Paket) - Die Lesegeschwindigkeit beträgt jetzt 600 MB / s:

Schließlich einige Hoffnung, wir hatten den Cache vom RAID-Controller deaktiviert und einige andere Dinge früher ohne Glück getan, aber da wir den Server neu geladen und das Betriebssystem erneut installiert haben, haben wir vergessen, "Tuned-Utils" zu installieren, wie in der Antwort von ewwhite vorgeschlagen (Danke ewwhite für dieses tolle Paket, das du vorgeschlagen hast)

Nach der Installation tuned-utilsund Auswahl des enterprise-storageProfils beträgt die Lesegeschwindigkeit jetzt ~ 600 MB / s +, aber die Schreibgeschwindigkeit ist immer noch sehr langsam (~ 160 MB) (:

Hier ist das Ergebnis für den iozone -t1 -i0 -i1 -i2 -r1m -s144gBefehl:

    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

Auch mit hdparm -t /dev/sdaBefehl haben wir:

Timing gepufferte Festplattenlesevorgänge: 1802 MB in 3,00 Sekunden = 600,37 MB / s

Irgendwelche Vorschläge für die sehr langsame Schreibgeschwindigkeit?

Update 3 - Einige Informationen in Kommentaren angefordert:

Die Schreibgeschwindigkeit ist immer noch sehr niedrig (~ 150 MB / s, was nicht einmal 1/3 einer einzelnen Festplatte entspricht).

Ausgabe für df -hund 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
Ara
quelle
Für diesen Test sollten Sie wahrscheinlich die doppelte Menge an RAM angeben, die auf dem Server installiert ist.
ewwhite
Können Sie uns die Firmware-Version Ihres Smart Array P410-Controllers mitteilen?
ewwhite
@ewwhite Vielen Dank für Ihren Kommentar. Die Firmware-Version ist p410 (256 MB, V6.40) und die ROM-Version ist 8.40.41.00. War mein iozone-Befehl falsch? Wenn ja, können Sie mir bitte den richtigen Befehl zum Testen mitteilen? weil alles, was ich versuche, ich bekomme die Lesegeschwindigkeit in GB
Ara
Hier stimmt etwas nicht. Sie erhalten nur ~ 122 MB / s Schreibvorgänge. Die angezeigten 4 GB / s-Zahlen sind Operationen aus dem Cache, daher sollte Ihre Befehlszeichenfolge so aussehen iozone -t1 -i0 -i1 -i2 -r1m -s144g. :(
ewwhite
@ewwhite Vielen Dank, die Lesegeschwindigkeit ist jetzt sehr gut (detailliert als Update 2 in meiner Frage), aber die Schreibgeschwindigkeit ist sehr enttäuschend. Haben Sie Vorschläge dafür?
Ara

Antworten:

16

Während die andere Antwort hier einige Punkte enthält, sind Ihre spezifischen Probleme auf Plattformbeschränkungen und die Betriebssystemkonfiguration zurückzuführen:

  • Durch die Verwendung von Consumer- SATA-SSDs auf einem HP Smart Array P410-RAID-Controller ist der Durchsatz begrenzt . SATA-Festplatten werden auf diesen Controllern mit 3,0 Gbit / s (3 G) und nicht mit 6,0 Gbit / s (6 G) ausgeführt. Dies ist also eine Barriere, die sich auf die Lesegeschwindigkeit Ihrer Intel-SSDs auswirkt. 300 MB / s oder weniger pro Laufwerk.

  • Der Smart Array P410-Controller stellt bei Verwendung mit SSDs spezielle Anforderungen und Best Practices . Kurz gesagt, der Controller kann 50.000 IOPS ausführen. Deaktivieren Sie den Array-Beschleuniger für Ihr SSD-Volume, und die Leistung liegt bei ~ 6 Laufwerken.

  • Bei der Festplattenleistung geht es nicht immer um die sequentielle Lese- / Schreibgeschwindigkeit. Versuchen Sie das Benchmarking mit einem geeigneten Tool wie iozone oder bonnie ++ . Sie erhalten weiterhin die zufälligen E / A-Vorteile Ihrer mehreren Laufwerke.

  • Installieren Sie auf Betriebssystemebene das Paket " optimierte Dienstprogramme" und stellen Sie das Profil so ein enterprise-performance, dass Schreibbarrieren aus Ihren Dateisystemen entfernt werden, und stellen Sie den richtigen E / A-Aufzug für Ihr Setup ein. Dies wird auch hier in anderen Fragen behandelt .

  • Es sieht so aus, als würden Sie LVM verwenden. Das kann auch Auswirkungen haben ...

Hier ist ein Bericht der Iozone für einen G7 ProLiant, der mit vier 6G-SATA-SSDs (auf 3G-Geschwindigkeit heruntergeschaltet) auf demselben HP Smart Array P410-RAID-Controller ausgeführt wird.

Sie sollten ~ 470 MB / s Schreibvorgänge und 650 MB / s + Lesevorgänge sehen.

[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
ewwhite
quelle
Vielen Dank, das Modell ist "DL160 G6", ja, es handelt sich um eine Rückwandplatine :( Ich würde mich sogar über 600 MB freuen, aber 270 MB sind wirklich langsam. Was sollte ich tun, hilft Software-Raid?
Ara
2
Okay, mit einem DL160 G6 sollten Sie zwei Kabel vom RAID-Controller zur Rückwandplatine des Laufwerks haben ... 8 Laufwerkssteckplätze. Ihr Problem hierbei ist der Laufwerksdurchsatz, Ihre Testmethode und die Servereinstellungen. Probieren Sie die anderen Vorschläge aus, die ich in meiner Antwort aufgeführt habe.
ewwhite
Interessantes über das P410, das nur 3G auf SATA ausführt, und die spezifischen Best Practices. Mod up. (LVM sollte jedoch in Bezug auf negative Auswirkungen auf die Leistung kein schwerer Schlag sein, auch hier vermerkt: unix.stackexchange.com/questions/7122/… )
Roman
1
@Ara Für den ProLiant gibt es keinen 6G SATA-Controller. Das ist der Punkt. Ihre SSDs werden auf dieser Plattform nur mit 3G-Geschwindigkeit ausgeführt, es sei denn, Sie verwenden SAS- SSDs.
ewwhite
1
Bei @Ara Software RAID muss eine Verbindung zu einem anderen Controller wie einem SAS-HBA (z. B. dem LSI 9211-8i) hergestellt werden. Auf diese Weise können Sie die gesamte Bandbreite Ihrer Festplatten anzeigen. Es gibt jedoch andere Aspekte der SSD-Leistung, die über die reine Leistung hinausgehen sequentielle Lese- / Schreibbandbreite.
ewwhite
12

Oh je, wo soll ich anfangen?

Es geht um so viel, und Sie brauchen ein gutes Verständnis für alles. Wenn Sie nur ein paar Festplatten gegen einen RAID-Controller werfen, erhalten Sie nicht die gewünschten Ergebnisse.

Dies kann nicht einfach beantwortet werden. Aber zumindest ist hier eine Liste von Dingen, die Sie sich ansehen müssen:

  • Hat der Controller überhaupt den erforderlichen Durchsatz? (-> Datenblätter)
  • Hat der Controller überhaupt genug Bandbreite zum Host (dies ist sogar bei Version 1.0 der Fall, da es sich um x8 handelt)?
  • Hat der Chipsatz des Systems genügend Durchsatz (CPU-Controller)? (Unbekannt)
  • Welche Schreibstrategie haben Sie dem Controller zugewiesen? ( das hat dich höchstwahrscheinlich gebissen )
  • Ist alles ausgerichtet (Partition startet, LVs, PVs)?
  • Sind die Blockgrößen harmonisiert? (RAID-Stripe-Größe, Blockgröße, FS-Blöcke, ...)
  • Ist das Dateisystem für das RAID-Setup optimiert? (Level und Blockgröße)

Da Ihr Durchsatz für das gesamte RAID (ohne Berücksichtigung von FS) erheblich niedriger ist als bei einer einzelnen Festplatte, ist es wahrscheinlich, dass Sie Ihre Schreibstrategie falsch eingerichtet haben. Der Controller wartet wahrscheinlich darauf, dass alle Festplatten den Schreibvorgang bestätigen (und es sei denn, Sie haben den RAM auf der Batterie des Controllers gesichert, ist dies möglicherweise in Ihrem besten Interesse).

römisch
quelle
Das ist wirklich schwieriger als ich dachte, ich dachte, es ist so einfach wie das Upgrade des Raid Controller RAM auf 512 MB! , danke Roman, lassen Sie mich einige von dem überprüfen, was Sie gerade gesagt haben, in der Hoffnung, den Grund zu finden
Ara
Die meisten der oben genannten sind gültige Strategien zur Fehlerbehebung für Randfälle, gelten jedoch nicht für die Besonderheiten der Konfiguration des Originalplakats. Der Controller verfügt hier über den erforderlichen Durchsatz und die erforderliche Bandbreite, die CPU ist in Ordnung, der RAID-Controller hat standardmäßig ein R / W-Cache-Verhältnis von 25:75 (sollte für die SSD-Verwendung vollständig deaktiviert sein), CentOS6 richtet Partitionen korrekt aus und es gibt zu viel potenzielle Abstraktion, um sie zu erhalten die Blockgrößen "harmonisiert". Die drei Probleme sind, dass die 6G-Festplatten mit 3G-Geschwindigkeit gedrosselt werden, dass Schreibschranken für das Dateisystem wahrscheinlich aktiviert sind und der E / A-Aufzug die Standard-CFQ ist.
ewwhite
1
Das Servermodell wurde zum Zeitpunkt meiner Antwort leider nicht notiert. Gut zu wissen über die Drosselung. Ich denke, die Barrieren und der CFQ haben in diesem spezifischen "Benchmark" nicht viel gekostet, aber dennoch wertvolle Informationen.
Roman
@Roman Entschuldigung, ich habe das Modell vorher nicht erwähnt, ich schätze Ihre Hilfe sehr. Ich versuche sowohl Ihre als auch die von ewwhite, 500-600 MB zu erreichen. Ich denke, das ist die höchste Geschwindigkeit, die ich mit diesem 3G-Limit erreichen kann
Ara,
1
Überhaupt kein Problem. Stellen Sie sicher, dass Sie den Links in den Antworten von ewwhite folgen, da mit dem P410 in Verbindung mit SSDs bestimmte Dinge zu tun sind. Stellen Sie außerdem sicher, dass Sie die vier Festplatten gleichmäßig auf die beiden Verbindungen von der Rückwandplatine zum Controller verteilen.
Roman