Linux md vs. LVM Leistung

8

Ich versuche, mein NAS zu optimieren, OpenFiler auszuführen und frage mich, warum ich von 4 WD RE3-Laufwerken in RAID 5 eine relativ schlechte Leseleistung erhalte.

BEARBEITEN: Bitte beachten Sie, dass es sich um die gepufferte Lesegeschwindigkeit handelt, nicht um die zwischengespeicherte Geschwindigkeit

BEARBEITEN: Die Formatierung wurde geändert, um zu verdeutlichen, dass zwei Ausgabesätze vorhanden sind.

Wenn ich hdparm auf dem Meta-Gerät ausführe, erhalte ich die erwartete Leistung, gehe auf die Lautstärke und es ist ein Drittel der Geschwindigkeit!

Hat jemand eine Idee warum? Ist LVM so schlecht?

Dean

Meta device / dev / md0 Ergebnisse

[root @ nas2 etc] # hdparm -tT / dev / md0
/ dev / md0:
 Timing zwischengespeicherte Lesevorgänge: 4636 MB in 2,00 Sekunden = 2318,96 MB / s
 Timing gepufferte Festplatten lesen: 524 MB in 3,01 Sekunden = 174,04 MB / s

Vol group / dev / mapper / vg1-vol1 Ergebnisse

[root @ nas2 etc] # hdparm -tT / dev / mapper / vg1-vol1
/ dev / mapper / vg1-vol1:
 Zwischengespeicherte Timing-Lesevorgänge: 4640 MB in 2,00 Sekunden = 2320,28 MB / s
 Timing gepufferte Festplattenlesevorgänge: 200 MB in 3,01 Sekunden = 66,43 MB / s

Bearbeiten: Siehe Abschnitt auf der hdparm-Manpage, in dem darauf hingewiesen wird, dass dies ein absolut gültiger Test für die sequentielle Leseleistung ist. Dies ist das Problem, das ich zu lösen versuche.

-t Führen Sie Timings von Gerätelesungen zu Benchmark- und Vergleichszwecken durch. Für aussagekräftige Ergebnisse sollte dieser Vorgang an anderer Stelle 2-3 Mal wiederholt werden
              inaktives System (keine anderen aktiven Prozesse) mit mindestens ein paar Megabyte freiem Speicher. Dies zeigt die Geschwindigkeit des Lesens durch den Puffer an
              Cache auf der Festplatte ohne vorheriges Zwischenspeichern von Daten. Diese Messung gibt an, wie schnell das Laufwerk sequentielle Datenlesevorgänge ausführen kann
              Linux ohne Dateisystem-Overhead. Um genaue Messungen sicherzustellen, wird der Puffercache während der Verarbeitung von -t mit dem BLKFLSBUF geleert
              ioctl. Wenn auch das -T-Flag angegeben ist, wird ein Korrekturfaktor, der auf dem Ergebnis von -T basiert, in das für -t gemeldete Ergebnis einbezogen
              Betrieb.
Dean Smith
quelle
Hast du Tests wie ausprobiert bonnie++?
SaveTheRbtz

Antworten:

10

Die Standardeinstellungen für Readahead für LVM sind sehr pessimistisch. Versuchen blockdev --setra 8192 /dev/vg1/vol1Sie herauszufinden, was Ihre LVM-Leistung beeinträchtigt. Mit LVM erzielen Sie immer einen Leistungseinbruch. Wir messen es auf ordnungsgemäß konfigurierten Systemen bei etwa 10% der zugrunde liegenden Blockgeräteleistung.

womble
quelle
4

Ich habe keine gute Erklärung, aber ich kann die Ergebnisse bestätigen.

Testen von RAID (raid5, 4x1.5TB Laufwerke)

root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2130 MB in  2.00 seconds = 1065.81 MB/sec
 Timing buffered disk reads:  358 MB in  3.00 seconds = 119.15 MB/sec
root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2168 MB in  2.00 seconds = 1084.54 MB/sec
 Timing buffered disk reads:  358 MB in  3.01 seconds = 119.10 MB/sec

Test des Volumens, das md2 als physisches Gerät verwendet.

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2078 MB in  2.00 seconds = 1039.29 MB/sec
 Timing buffered disk reads:  176 MB in  3.03 seconds =  58.04 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2056 MB in  2.00 seconds = 1028.06 MB/sec
 Timing buffered disk reads:  154 MB in  3.03 seconds =  50.81 MB/sec

Ich habe die von womble vorgeschlagene Änderung vorgenommen und solche Ergebnisse gesehen.

root@enterprise:# blockdev --setra 8192 /dev/mapper/vg2-data

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2106 MB in  2.00 seconds = 1053.82 MB/sec
 Timing buffered disk reads:  298 MB in  3.00 seconds =  99.26 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2044 MB in  2.00 seconds = 1022.25 MB/sec
 Timing buffered disk reads:  280 MB in  3.03 seconds =  92.45 MB/sec
Zoredache
quelle
3

Stellen Sie sicher, dass Sie Äpfel mit Äpfeln vergleichen.

hdparm -t Liest vom Anfang des Geräts, das auch der schnellste Teil Ihrer Festplatte ist, wenn Sie ihm eine ganze Festplatte geben (und es dreht sich Platten).

Stellen Sie sicher, dass Sie es mit einem LV vom Anfang der Festplatte vergleichen.

Um das Mapping zu sehen, verwenden Sie pvdisplay -m.

(Okay, zugegeben, der Unterschied in der Anzahl kann vernachlässigbar sein. Aber denken Sie wenigstens darüber nach :)

MikeyB
quelle
Eigentlich stellt sich heraus, dass es nicht zu vernachlässigen ist. Wenn ich das Volume verwende, das bei Umfang 0 beginnt, ist die Leistung nahezu identisch. Dies ist ein Teil der Antwort, da bin ich mir sicher.
Dean Smith
Actaully stellt sich heraus, dass die Leistung geringer ist, wenn die Lautstärke eingestellt ist. Wenn ich die Bereitstellung aufhebe, stimmt die Lautstärke mit der des Raw-Geräts überein. Dies scheint jedoch immer noch etwas seltsam.
Dean Smith
0

Die von hdparm -T erstellte Arbeitslast ist für fast jeden Anwendungsfall nicht repräsentativ, außer für das Streaming von Lesevorgängen aus einer einzelnen großen Datei. Wenn die Leistung ein Problem darstellt, verwenden Sie raid5 nicht.

Jan Jungnickel
quelle
3
Richtig, es ist nicht repräsentativ für eine echte Arbeitsbelastung, ich habe nicht vorgeschlagen, dass dies der Fall ist. Es ist jedoch nützlich, um die Lesegeschwindigkeiten von Rohgeräten zu vergleichen. Das Meta-Gerät und das Volumen der Vol-Gruppe sollten vergleichbare sequenzielle Lesegeschwindigkeiten aufweisen und dies nicht. Das ist der Punkt der Frage.
Dean Smith
0

Sie können herausfinden, wo hdparm seine Zeit mit blktrace (wenn es sich um E / A handelt) oder oprofile (wenn es sich um eine CPU handelt) verbringt. Es würde auch helfen, das LVM-Setup zu kennen (pvdisplay, vgdisplay, lvdisplay).


quelle