© Ekaphon maneechot/Shutterstock.com
Performance in der Cloud?

Die neue Relativitätstheorie


Performance wird in der Cloud unter zwei sehr unterschiedlichen Gesichtspunkten gesehen. Die einen sehen das Ende aller Performanceprobleme. Die anderen zweifeln, ob performancekritische Anwendungen überhaupt in der Cloud betrieben werden können. Die Cloud ist weder das Allheilmittel aller Performanceprobleme noch ist sie für kritische Anwendungen ungeeignet. Wie misst und analysiert man nun Performance in der Cloud? Und wie unterscheiden sich diese Messungen von herkömmlichen Umgebungen?

In der Cloud abstrahieren wir von der eigentlichen Hardware, und das beeinflusst nicht nur unsere Anwendung, sondern auch jede Messung, die wir vornehmen. Das ist nichts Neues, sondern trifft auf jede virtualisierte Umgebung zu. Das Aufkommen der Cloud und die damit verbundene zusätzliche Komplexität machen das Problem jedoch akut. Um Performance und deren Messung in einer Cloud verstehen zu können, müssen wir uns zuerst den Herausforderungen der Virtualisierung stellen.

Virtualisierung – ein Paradigmenwechsel

Wie wirkt sich Virtualisierung auf meine Anwendungsperformance aus? Diese oft gestellte Frage wird vielfach nicht oder nur unzureichend beantwortet, und das hat seinen Grund. Ein virtualisiertes Betriebssystem hat keine direkte Kontrolle über die Hardware oder sein eigenes Laufzeitverhalten. Es kann vom Hypervisor jederzeit unterbrochen werden. Dadurch ergibt sich das so genannte Timekeeping-Problem [1].

Viele Systeme, darunter Windows, installieren Interrupts, die in regelmäßigen Abständen auslösen und den Tick Count erhöhen. Erreicht dieser einen gewissen Wert, ist eine Sekunde vergangen. Wird das System unterbrochen, werden diese Interrupts aufgestaut und dann in schneller Folge verarbeitet. Das führt zu einem gummibandartigen Zeitmessen, mit anderen Worten: Zeit ist relativ (Abb. 1). Manche Systeme, wie etwa Linux, sind hier intelligenter, aber auch ihnen ist die Unterbrechung nicht bewusst.

Kopp_Cloud_Performance_1.tif_fmt1.jpgAbb. 1: In einer VM verhält sich die Zeit wie ein Gummiband

Die Folgen sind erstaunlich. Messen wir die Ausführungszeit einer Transaktion oder einer Methode innerhalb einer VM, wissen wir nicht, ob diese stimmt oder ob mehr oder weniger Zeit vergangen ist. Das ist für detaillierte Analysen problematisch, da auf diese Weise leicht nicht existenten Problemen hinterher gejagt wird. VMWare löst dieses Problem mit einem eigens installierten Timer, der über einen speziellen Befehl erreichbar ist. Einige Analyselösungen nutzen den Timer, um die reale Zeit zu messen. Über zusätzliche APIs können auch die VM-Unterbrechungen dargestellt werden und erlauben so eine akkurate Analyse der Anwendung. Weder das Gastbetriebssystem noch der Applikationsserver nutzen diese Möglichkeiten, und das wirkt sich auf deren Metriken aus. Auslastungsmetriken wie CPU werden zeitbasiert ermittelt. Durch die Verzerrung der Zeit werden auch diese Metriken verzerrt. Gleichermaßen sind viele vom Applikationsserver zur Verfügung gestellten Statistiken betroffen. Hier versagen viele althergebrachte Methoden, die auf eben diese falschen und irreführenden Metriken vertrauen. Zeit ist jedoch nicht das einzige Problem.

Anwendungsperformance und geteilte Ressourcen

Virtualisierung erlaubt es, mehrere voneinander isolierte Betriebssysteme auf derselben Hardware auszuführen. Das erhöht die in Rechenzentren oft sehr niedrige Gesamtauslastung. Oft werden noch größere Ersparnisse durch den damit verbundenen geringeren Wartungs- und Managementaufwand realisiert. Die Kehrseite ist, dass sich die Komplexität im Performance- und Kapazitätsmanagement deutlich erhöht. Einzelne Anwendungen werden in verschiedenen VMs ausgeführt. Befinden sich die VMs auf dem gleichen Rechner, beeinflussen sich die­se gegenseitig, und das im Gegensatz zu mehreren Anwendungen innerhalb eines Betriebssystems, wo dieser Einfluss versteckt und indirekt ist (Abb. 2).

Kopp_Cloud_Performance_2.tif_fmt1.jpgAbb. 2: Eine Anwendung beeinflusst die andere indirekt über den geteilten Ressourcen

Je nach Art der Virtualisierung wird unsere Anwendung ohne ersichtlichen Grund langsamer, während sämtliche Systemmetriken gleich bleiben. Es kommt auch vor, dass die CPU-Auslastung des Systems zu- oder abnimmt, ohne dass wir wissen, warum. Hinzu kommt, dass sich das Gastbetriebssystem der tatsächlichen Systemleistung gar nicht bewusst ist. In manchen Fällen kommt es vor, dass weniger Ressourcen zur Verfügung stehen, als vom Gastsystem gemeldet werden. Auf Basis dieser Metriken können wir also keine Aussagen treffen.

Der versierte Leser wird nun zu Recht anmerken, dass VMWare sehr wohl „korrekte“ Ressourcemetriken über vSphere zur Verfügung stellt. Diese Metriken sind sehr wertvoll, wenn es darum geht, ein erkanntes Problem zu analysieren. Allerdings können wir alleine auf dieser Ebene nicht entscheiden, ob eine hohe Ressourcenauslastung auch die Ursache eines Performanceproblems innerhalb der Anwendung ist. Der Kontext zu den problematischen Transaktionen fehlt, und sie kö...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang