HP DL380 G7 + Smart Array P410i + Sysbench -> schlechte RAID 10-Leistung

8

Ich habe ein laufendes System mit geringer E / A-Auslastung:

  1. HP DL380G7 (24 GB RAM)
  2. Smart Array p410i mit 512 MB Battary Backed Write Cache
  3. 6x SAS 10k U / min 146gb Laufwerke in RAID10
  4. Debian Squeze Linux, ext4 + LVM, hpacucli installiert

iostat (cciss / c0d1 = raid10-Array, dm-7 = 60G lvm-Partition für Test):

Gerät: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz warten auf svctm% util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 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 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli "ctrl all show config"

Smart Array P410i in Steckplatz 0 (eingebettet) (sn: 5001438011FF14E0)

   Array A (SAS, nicht verwendeter Speicherplatz: 0 MB)


      Logisches Laufwerk 1 (136,7 GB, RAID 1, OK)

      physischer Antrieb 1I: 1: 1 (Port 1I: Box 1: Schacht 1, SAS, 146 GB, OK)
      physischer Antrieb 1I: 1: 2 (Port 1I: Box 1: Schacht 2, SAS, 146 GB, OK)

   Array B (SAS, nicht verwendeter Speicherplatz: 0 MB)


      Logisches Laufwerk 2 (410,1 GB, RAID 1 + 0, OK)

      physischer Antrieb 1I: 1: 3 (Port 1I: Box 1: Schacht 3, SAS, 146 GB, OK)
      physischer Antrieb 1I: 1: 4 (Port 1I: Box 1: Schacht 4, SAS, 146 GB, OK)
      physisches Laufwerk 2I: 1: 5 (Port 2I: Box 1: Schacht 5, SAS, 146 GB, OK)
      physischer Antrieb 2I: 1: 6 (Port 2I: Box 1: Schacht 6, SAS, 146 GB, OK)
      physisches Laufwerk 2I: 1: 7 (Port 2I: Box 1: Schacht 7, SAS, 146 GB, OK)
      physischer Antrieb 2I: 1: 8 (Port 2I: Box 1: Schacht 8, SAS, 146 GB, OK)

   SEP (Hersteller-ID PMCSIERA, Modell SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "ctrl all show status"

Smart Array P410i in Steckplatz 0 (eingebettet)
   Controller-Status: OK
   Cache-Status: OK
   Batterie- / Kondensatorstatus: OK

Sysbench-Befehl

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = off run --max-request = 30000

Sysbench-Ergebnisse

sysbench 0.4.12: Benchmark für die Bewertung von Multithread-Systemen

Ausführen des Tests mit folgenden Optionen:
Anzahl der Threads: 16
Initialisierung des Zufallszahlengenerators vom Timer.


Zusätzliche Flags zum Öffnen von Dateien: 0
128 Dateien mit jeweils 432 MB
54 GB Gesamtdateigröße
Blockgröße 4 KB
Anzahl der zufälligen Anforderungen für zufällige E / A: 30000
Lese- / Schreibverhältnis für kombinierten zufälligen E / A-Test: 1,50
Verwenden des synchronen E / A-Modus
Zufälliger Lesetest durchführen
Threads gestartet!
Erledigt.

Durchgeführte Operationen: 30000 Lesen, 0 Schreiben, 0 Andere = 30000 Gesamt
Lesen 117,19 MB Geschrieben 0b Insgesamt übertragen 117,19 MB (935,71 KB / Sek.)
  233.93 Anforderungen / Sek. Ausgeführt

Zusammenfassung der Testausführung:
    Gesamtzeit: 128.2455s
    Gesamtzahl der Veranstaltungen: 30000
    Gesamtzeit für die Ereignisausführung: 2051.5525
    Statistik pro Anfrage:
         min: 0,00 ms
         Durchschnitt: 68,39 ms
         max: 2010.15ms
         ca. 95 Perzentil: 660,40 ms

Themen Fairness:
    Ereignisse (Durchschnitt / Standard): 1875.0000 / 111.75
    Ausführungszeit (avg / stddev): 128,2220 / 0,02

Iostat während des Tests

avg-cpu:% user% nice% system% iowait% stehlen% idle
           0,00 0,01 0,10 31,03 0,00 68,86

Gerät: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz warten auf svctm% util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 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 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd: / usr / sbin / bonnie ++ -c 16 -n 0

Ein Byte nach dem anderen schreiben ... fertig
Intelligent schreiben ... fertig
Umschreiben ... fertig
Ein Byte nach dem anderen lesen ... fertig
Intelligent lesen ... fertig
starte sie ... fertig ... fertig ... fertig ... fertig ... fertig ... fertig ...
Version 1.96 ------ Sequenzielle Ausgabe ------ - Sequenzielle Eingabe- - Zufällige-
Parallelität 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Maschinengröße K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1
Latenz 14899us 726ms 15194ms 100ms 122ms 665ms

1,96,1,96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265,2,1 ,,,,,,,,,,,,,, ,,,, 14899us, 726 ms, 15194 ms, 100 ms, 122 ms, 665 ms ,,,,,,

Fragen

Sysbench zeigte also 234 zufällige Lesevorgänge pro Sekunde.
Ich erwarte mindestens 400.
Was kann der Engpass sein? LVM?
Ein anderes System mit mdadm raid1 + 2x 7200rpm-Laufwerken zeigt über 200 zufällige Lesevorgänge pro Sekunde ...

Vielen Dank für jede Hilfe!

Oleg Golovanov
quelle
Was ist die Streifengröße? iostat sieht so aus, als würde sysbench nur auf einem physischen Laufwerk arbeiten.
Dmitri Chubarov
hpacucli sagt, dass die Streifengröße 256k beträgt. DM-x-Geräte von iostat sind keine physischen Laufwerke, sondern lvm-Partitionen. DM-7 ist eine 60-GB-lvm-Partition, auf der ich sysbench ausgeführt habe.
Oleg Golovanov
Was genau testen Sie mit dieser speziellen sysbenchBefehlszeile? Simulieren Sie ein reales Nutzungsszenario?
ewwhite
Ich simuliere die PostgreSql-Datenbank, die intern 4-KB-Blöcke verwendet. Meine App macht viele zufällige Lese- / Schreibvorgänge in Big-Data-Dateien (App zum Zeitpunkt des Tests gestoppt)
Oleg Golovanov

Antworten:

10

Ihr System ist aufgrund Ihrer Hardwarespezifikationen definitiv unterdurchschnittlich. Ich habe das sysbenchDienstprogramm auf einige inaktive HP ProLiant DL380 G6 / G7-Server geladen, auf denen CentOS 5/6 ausgeführt wird, um deren Leistung zu überprüfen. Dies sind normale feste Partitionen anstelle von LVM. (Ich verwende LVM normalerweise nicht, da HP Smart Array-Controller flexibel sind.)

Der DL380 G6 verfügt über ein RAID 1 + 0-Array mit 6 Festplatten auf einem Smart Array P410-Controller mit 512 MB batteriegepuffertem Cache. Der DL380 G7 verfügt über ein 2-Platten-Enterprise-SLC-SSD-Array. Die Dateisysteme sind XFS . Ich habe dieselbe Sysbench-Befehlszeile verwendet wie Sie:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

Meine Ergebnisse waren 1595 zufällige Lesevorgänge pro Sekunde auf 6 Festplatten.
Auf SSD betrug das Ergebnis 39047 zufällige Lesevorgänge pro Sekunde . Die vollständigen Ergebnisse finden Sie am Ende dieses Beitrags ...

  • Was Ihr Setup betrifft, ist das erste, was mir auffällt, die Größe Ihrer Testpartition. Sie füllen die 60-GB-Partition fast mit 54 GB Testdateien. Ich bin mir nicht sicher, ob ext4 ein Problem mit einer Leistung von 90 +% hat, aber das ist für Sie am schnellsten zu ändern und erneut zu testen. (oder verwenden Sie einen kleineren Satz von Testdaten)

  • Selbst mit LVM stehen einige Optimierungsoptionen für dieses Controller- / Festplatten-Setup zur Verfügung. Es ist hilfreich, das Vorauslesen zu überprüfen und die Einstellung des E / A-Schedulers von der Standard- CFQ auf Deadline oder Noop zu ändern . Die Fragen und Antworten finden Sie unter: Linux - Real-World-Hardware-RAID-Controller-Tuning (scsi und cciss)

  • Wie hoch ist das Cache-Verhältnis Ihres RAID-Controllers? Ich verwende normalerweise eine Schreib- / Lesebilanz von 75% / 25%. Dies sollte ein schneller Test sein. Das 6-Platten-Array wurde in 18 Sekunden fertiggestellt. Ihre dauerte über 2 Minuten.

  • Können Sie einen Bonnie ++ - oder Iozone- Test für die betreffende Partition / das betreffende Array ausführen ? Es wäre hilfreich zu prüfen, ob andere Engpässe im System vorliegen. Ich war mit sysbench nicht vertraut , aber ich denke, diese anderen Tools geben Ihnen einen besseren Überblick über die Funktionen des Systems.

  • Optionen für die Dateisystem-Bereitstellung können einen kleinen Unterschied machen, aber ich denke, das Problem könnte tiefer liegen ...

hpacucli Ausgabe ...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 6-Platten-Ergebnisse ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD Ergebnisse ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00
ewwhite
quelle
Danke für die ausführliche Antwort! Ihre Ergebnisse sind fantastisch ... >> Ich verwende normalerweise kein LVM, insbesondere aufgrund der Flexibilität, die die HP RAID-Controller bieten. Welche Flexibilität meinen Sie? >> Wie hoch ist das Cache-Verhältnis Ihres RAID-Controllers? 75/25, Standard) >> Ich denke, das Problem ist tiefer als das ... yup! Ich habe die Ergebnisse von bonnie ++ v1.96 am Ende meines Hauptpostens angehängt. Es scheint, dass die Ergebnisse nicht so gut sind :( Zuerst werde ich versuchen, mich von LVM zu entfernen und den Test erneut durchzuführen. Wenn es nicht hilft - ich nehme an, dass etwas mit dem Raid-Controller nicht stimmt.
Oleg Golovanov
Können Sie Ihre bonnie++Befehlszeile anzeigen?
ewwhite
Es tut mir leid. Befehlszeile: / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov
3
Ich habe den Scheduler von cfq auf noop geändert und die Benchmark-Ergebnisse sind dramatisch gestiegen! )) Jetzt zeigt Sysbench für mich 1500+ zufällige Lesungen / Sekunde ... Groß, groß, danke :)
Oleg Golovanov
1
Versuchen Sie es deadlineauch ... Unter DB-Lasten läuft es möglicherweise besser als noop, und es gibt einige zusätzliche Tunables in Ihrem, /sys/block/cciss1/queue/iosched/wenn Sie verwenden deadline. In diesem Beitrag finden Sie weitere Informationen zur Feinabstimmung. Auf diese Weise konnte ich diesen Test auf bis zu 2600 zufällige Lesevorgänge pro Sekunde bringen.
ewwhite