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!
quelle
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
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
/sar
auf 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.
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.quelle
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.
quelle
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