Genaue Trendierung der zufälligen E / A-Leistung für die Kapazitätsplanung

11

Wo ich arbeite, haben wir zahlreiche "Big Iron" -Server, die zum Hosten vieler virtueller Maschinen mit einem Xen-Hypervisor verwendet werden. Diese sind normalerweise mit 32 GB RAM, Dual Quad Core-Prozessen und schnellen Festplatten mit E / A-Kapazität konfiguriert.

Wir sind an dem Punkt angelangt, an dem die vorhandene Hardwarekonfiguration etwas länger wird und es Zeit ist, größere, schnellere und glänzendere neue Hardware zu beschaffen.

Wie oben erwähnt, wurde das vorhandene Kit mit 32 GB RAM bereitgestellt, wodurch die Anzahl der VMs, die wir auf einem Host bereitstellen können, effektiv begrenzt wurde.

Bei der Untersuchung neuerer Hardware wird jedoch deutlich, dass Sie auf einem einzelnen Computer mit 64, 72 oder sogar 96 GB in einem einzelnen Gehäuse immer mehr RAM erhalten können. Dies ermöglicht es uns offensichtlich, mehr Maschinen zu einem bestimmten Host zu bringen, was immer ein Gewinn ist. Die bisher abgeschlossene Analyse deutet darauf hin, dass der begrenzende Faktor nun auf das Festplattensubsystem verschoben wird.

Das Problem besteht nun darin, eine Vorstellung davon zu bekommen, wo wir uns befinden ... Aufgrund der Verwendung wissen wir, dass wir nicht in Bezug auf die E / A-Bandbreite, sondern vielmehr in Bezug auf die Anzahl der zufälligen I begrenzt sind / O Operationen, die abgeschlossen werden können. Wir wissen anekdotisch, dass iowait, sobald wir diesen Punkt erreicht haben, in die Höhe schießen wird und die gesamte Maschinenleistung den Hunden zugute kommt.

Dies ist der Kern der Frage, die ich stelle. Ist jemandem eine Möglichkeit bekannt, die vorhandene E / A-Leistung genau in Bezug auf die Anzahl der abgeschlossenen zufälligen E / A-Operationen genau zu verfolgen / zu bestimmen?

Was ich wirklich versuche, um eine Metrik zu erhalten, ist "diese Konfiguration kann erfolgreich X Anzahl zufälliger E / A-Anforderungen verarbeiten, und wir führen derzeit (im Durchschnitt) Y-Ops mit einer Spitze von Z-Ops durch".

Danke im Voraus!

Keiran Holloway
quelle

Antworten:

5

sarmacht den Job hier gut; Es werden die Anzahl der Transaktionen sowie die pro Sekunde gelesenen / geschriebenen Sektoren erfasst, die verwendet werden können, um dann Ihre E / A-Workload mit relativ guter Genauigkeit wiederzugeben (in Bezug auf die Lese- / Schreibverhältnisse sowie die Transaktionsgröße) Bestimmender Faktor dafür, wie "zufällig" Ihr E / A ist). Es ist nicht perfekt, aber meiner Erfahrung nach ist es gut genug, um die Art von Schätzung vorzunehmen, die Sie sich ansehen.

womble
quelle
2

Dies scheint also ein Problem bei der Überwachung und Kapazitätsberichterstattung zu sein. Wenn Sie anfangen wollen, Trendstatistiken zu messen, würde ich auf der ganzen Linie gehen, damit Sie vergleichen, korrelieren usw. können.

In Bezug auf Tools haben Sie Ganglien, Zenoss, Nagios usw. in der OpenSource-Welt und zahlreiche andere Anbieterprodukte.

Sie können sie so konfigurieren, dass sie die KPIs verfolgen, messen und speichern, an denen Sie interessiert sind, und sie dann regelmäßig melden.

Angesichts Ihrer Fragen zur RAM-Auslastung ist es sinnvoll, auch die Speicherstatistiken, die Swap-Auslastung und die CPU einzubeziehen, damit Sie sie für denselben Zeitraum auf breiter Front vergleichen und feststellen können, welche begrenzt sind usw.

Sobald Sie Daten erfasst haben, können Sie alles in einer schönen großen Datenbank speichern, um Berichte zu erstellen und möglicherweise historische Daten zu verdünnen, z. Speichern Sie alle 5 Sekunden Metrik für 6 Monate, dann pro Minute, dann 5, dann pro Stunde, wenn Sie weiter zurückgehen. So etwas kann geschrieben und über Cron, Autosys usw. ausgeführt werden.

Diese Berichte geben Ihnen, was das Management will - dh. etwas mit hübschen Grafiken.

Und für die tägliche Verwaltung können Sie Echtzeitinformationen in einem Diagramm / Zahlen über die Konsole anzeigen, um zu sehen, wie Sie sich zu einem bestimmten Zeitpunkt verhalten.

Alex
quelle
Vielen Dank für Ihre Antwort. Das größte Problem, das ich finde, besteht darin, die Anzahl der Operationen genau zu verfolgen. Dh alles, was mir begegnet ist, berichtet über die Menge der Daten, die verschoben werden, oder über Iowa usw. usw. Dies scheint hier nicht ganz in die Rechnung zu passen.
Keiran Holloway
2

Wir verwenden collectl, da wir alle erforderlichen Informationen in einer einzigen Datei zusammenfassen und die Statistiken bei Bedarf wiedergeben können. Auf diese Weise können Sie die Anzahl der IOPS pro Aufzeichnungsintervall, Kontextwechsel und Speicherstatistiken anzeigen. Sie können dies pro Festplatte aufschlüsseln oder sich nur einen Überblick über das System verschaffen. Collectl unterstützt auch Glanz.

Dies ist ein großartiges Tool, um einen Überblick über die Gesamtsystemleistung zu erhalten. Viel Glück, laut Beobachtungen erreichen SATA-Festplatten bei wahlfreiem Zugriff normalerweise zwischen 200 und 300 IOPS.


quelle
Hat jemand viel Erfahrung mit SAS-Laufwerken mit 15.000 U / min?
Keiran Holloway
2

Wir zeichnen Festplatten-E / A auf dieselbe Weise auf und zeichnen sie grafisch auf wie alle anderen Metriken:

  • Die Daten werden mithilfe von SNMP von Hosts abgerufen. Unsere NAS / SAN-Boxen tun dies nativ. Wir verwenden net-snmp auf allen Linux-Hosts, die diese Informationen von USB-DISKIO-MIB bereitstellen .

  • Die Daten werden (im RRD-Format) gespeichert und mit Cacti grafisch dargestellt . Einige Disk IO-Vorlagen geben uns die Anzahl und Größe der Transaktionen an, die im üblichen aktuellen, durchschnittlichen und Spitzenformat angezeigt werden.

Diese Metriken sind nicht unbedingt so endlich wie die Verwendung von iostat/ dstat/ sarauf einem Host. Aber es ist Feuer und Vergessen, das automatisch eingerichtet wird, wenn eine neue Maschine in Betrieb genommen, zentral gespeichert und für zukünftige Referenzzwecke verfügbar bleibt.

Wir verwenden diese Daten, um uns operativ auf ungewöhnliche Trends aufmerksam zu machen, und greifen bei jeder Kapazitätsplanung immer darauf zurück.

Was ich wirklich versuche, um eine Metrik zu erhalten, ist "diese Konfiguration kann X Anzahl zufälliger E / A-Anforderungen [..] erfolgreich verarbeiten".

Hier gibt es ein paar Probleme:

  • Es ist ziemlich schwierig, zufällige E / A von sequentiellen E / A zu trennen und zu quantifizieren. Da der grundlegende Unterschied zwischen den beiden die physische Position der auf der Plattenplatte gespeicherten Blöcke ist. Sie können anhand der Größe der Transaktionen eine fundierte Vermutung anstellen, da sich viele kleine Transaktionen wahrscheinlich auf kleine Dateien beziehen, die auf der Festplatte verteilt sind. Es gibt jedoch keine Garantie. Es könnte sein das Lesen kleiner Mengen von Daten sequentiell aus einer einzigen Datei oder angrenzenden Blöcke auf der Platte.

  • Durch das Aufzeichnen der Kennzahlen erhalten Sie ein sehr gutes Bild davon, wie Ihre Verpflichtungen heute aussehen, wie sie sich im Laufe der Zeit geändert haben und wie sie sich in Zukunft ändern werden. Was es Ihnen nicht sagen wird, ist die Decke. Zumindest nicht bevor es zu spät ist. Um dies festzustellen, müssen Sie einige Berechnungen (anhand Ihrer Hardwarespezifikationen), Benchmarking (ich mag bonnie++mich selbst) durchführen und es ist hilfreich, eine logistische Vorstellung davon zu haben, wofür diese DomUs verwendet werden.

Dan Carley
quelle
1

Abhängig von Ihrem Speicher-Backend (IBM SVC / DS8000) können Sie möglicherweise Statistiken zu zufälligen IOPS direkt daraus abrufen.

Zum Abrufen von Statistiken vom Server können Sie nmon verwenden . Es ist kostenlos (wie bei Bier). Ursprünglich von IBM für AIX entwickelt, läuft es auch unter Linux.

MikeyB
quelle
Der gesamte Speicher ist direkt angeschlossen und läuft auf Debian-Hosts. Alles, was FOSS ist, ist gut.
Keiran Holloway
1

Wenn Leute SAR verwenden, hoffe ich zumindest, dass Sie Ihre Daten alle paar Sekunden abtasten. Wenn ich collectl benutze, probiere ich einmal pro Sekunde. Um zu messen, wie gut Sie bei zufälligen E / A-Vorgängen abschneiden, verwenden Sie ein Tool wie Robin Millers dt (google it). Sie können problemlos eine Menge zufälliger E / A generieren und dann einfach mit collectl messen, um zu sehen, wie viele Sie haben kann pro Sekunde tun. Eine typische Festplatte leistet normalerweise maximal 200 bis 300 E / A / s, basierend auf der Rotationslatenz. Die Blockgröße hatte nur minimale Auswirkungen, da das Warten von 1/2 Umdrehung auf die richtige Position der Festplatte alles andere überfordert.

Übrigens - iowait ist eine der am meisten missverstandenen Messungen. Es hat NICHTS mit dem Laden der CPU zu tun, es bedeutet nur, dass die CPU während der E / A nichts anderes getan hat. In der Tat, wenn Sie bei 100% iowait sind, bedeutet das im Wesentlichen, dass Sie ungefähr 100% untätig sind!

-Kennzeichen


quelle