Viele Neukunden wollen, wenn sie mit der Nutzung von CloudSigma beginnen, die Performance testen; sie wollen oft die Performance-Ergebnisse zwischen Cloud-Servern und ihrer eigenen Infrastruktur vergleichen, und das ist auch sinnvoll. Ein reiner Preisvergleich nach Ressourcen erzählt bei weitem nicht die ganze Geschichte; worauf es wirklich ankommt, ist das Endergebnis: Wie viel kostet es, eine bestimmte Rechenaufgabe zu bewältigen?
Für jede gegebene Anforderung kann die Anzahl der benötigten Ressourcen zwischen verschiedenen Clouds stark variieren. Das bedeutet, dass ein reiner Preisvergleich nicht funktioniert. Die Kehrseite der Medaille ist, dass ein isolierter Performance-Vergleich auch nicht besser ist. Aussagekräftige Vergleiche müssen sowohl Preis als auch Performance einbeziehen, um ein Maß für die Kosten pro Recheneinheit zu berechnen. In diesem Beitrag werde ich einige meiner Gedanken zum Benchmarking unserer Cloud-Server und anderer teilen. Ich werde auch einige Tipps geben, wie man nützliche Ergebnisse erzielt und was diese wirklich bedeuten.
Warnhinweise
Um es gleich vorwegzunehmen: Ich bin dem Benchmarking im Allgemeinen gegenüber recht skeptisch. Es bietet selten einen echten Einblick in die Praxis. Kurz gesagt, es gibt keinen echten Ersatz dafür, die tatsächlichen Anwendungen, die Sie nutzen möchten, auf der Plattform auszuführen. Wenn Sie dies mit einem angemessenen Zeitaufwand erreichen können, gibt es keinen Ersatz für ein solches Vorgehen.
Ein weiterer Faktor ist, wie ausgelastet der Cloud-Anbieter ist. Sie können Cloud-Server benchmarken und hervorragende Ergebnisse erzielen. Diese können jedoch größtenteils auf den Auslastungsgrad (oder dessen Fehlen) dieses bestimmten Anbieters zurückzuführen sein. Das ist vielleicht kein positives Zeichen. Es könnte auf Schwierigkeiten im Betrieb, verlorene Kunden, vergangene Probleme mit der Verfügbarkeit und Zuverlässigkeit usw. hindeuten. Sie sollten daher bei der Interpretation der Benchmark-Ergebnisse immer nach vergangenen Ausfällen und anderen potenziellen Problemen des Cloud-Anbieters suchen.
Als letzter Warnhinweis: Die Performance ist nicht der einzige Faktor, den Sie berücksichtigen sollten. Oft kann eine geringere Performance eine robustere (und redundantere) zugrunde liegende Hardware-Architektur widerspiegeln. Es ist daher immer wichtig, ein sehr klares Verständnis davon zu haben, auf welcher Infrastruktur die Cloud aufgebaut ist. So können Sie die Ergebnisse fair vergleichen und eine fundierte Kaufentscheidung treffen.
Das Problem definieren
Später in diesem Beitrag werde ich die verschiedenen Aspekte der Performance erläutern und aufzeigen, wie man die Ergebnisse am besten interpretiert. Vor jedem Benchmarking ist es jedoch wichtig, die Art der Rechenleistung zu charakterisieren, die Sie in der Cloud anstreben; dies bestimmt die relative Bedeutung der verschiedenen Performance-Metriken. Wenn Sie beispielsweise einen Datenbankserver einrichten möchten, der einer hohen Lese- aber einer geringen Schreibbelastung ausgesetzt sein wird, sollten Sie auf die Festplatten-Performance in der Cloud und insbesondere auf den nicht-sequenziellen Lesezugriff achten.
Bevor Sie also mit dem Benchmarking von Cloud-Servern beginnen, sollten Sie genau festlegen, was Sie als gute Performance der Cloud betrachten würden. Sie sollten bestimmen, welche Aspekte entscheidend sind und einen unverhältnismäßig großen Einfluss auf die reale Performance Ihrer Rechenleistung haben. Sobald Sie eine klare Vorstellung davon haben, sind Sie in der Lage, sich mit dem Benchmarking zu befassen.
Rechenleistung
Wenn wir uns die reine Rechenleistung ansehen, sprechen wir von CPU und RAM. Die Performance-Unterschiede auf rein rechnerischer Ebene zwischen den Clouds sind eigentlich nicht so groß. Es gibt jedoch einige Faktoren, die die tatsächlichen Unterschiede verursachen.
Der mit Abstand größte Faktor, der die Rechenleistung in der Cloud beeinflusst, ist die Überbuchung. Public Clouds sind Multi-Tenant-Umgebungen. RAM und Speicher können eigentlich nicht überbelegt werden (obwohl sie überverkauft werden können), aber die CPU kann es und wird es auch. Der Grad der Überbelegung variiert erheblich, aber im Wesentlichen sind Public-Cloud-Anbieter in der Lage, die CPU-Kapazität eines physischen Hosts zu mehr als 100 % zu verkaufen.
Einige der größten Anbieter nutzen CPU-Überbuchungsraten von über dem Dreifachen. Dies bedeutet, dass die gesamte ‘verkaufte’ CPU-Kapazität aller virtuellen Server auf derselben physischen Maschine das Dreifache ihrer tatsächlichen CPU-Kapazität betragen kann. Sie tun dies, weil die meisten virtuellen Server die meiste Zeit über nicht annähernd 100 % ihrer CPU-Zuweisung auslasten. Dennoch wirken sich die Überbuchungsraten direkt auf die Performance-Benchmarks und die reale Nutzung von Cloud-Servern aus. Wenn die Überbuchung hoch ist (d. h. bei mehr als 200 % CPU-Zuweisung), verschlechtert sich die Leistung des Cloud-Servers erheblich.
Einfach ausgedrückt: Wenn die Last auf einer physischen Maschine mehr als 1 pro Kern beträgt, werden Rechenaufgaben in eine Warteschlange gestellt, und die Zeit, die diese virtuelle Maschine zur Erledigung der Aufgabe benötigt, verlängert sich. Da die meisten Clouds auf Basis von Kapazität/Stunde abrechnen, hat dies direkte Kostenauswirkungen für die Kunden dieser Cloud.
Der andere wichtige Faktor, der die Rechenleistung beeinflusst, ist die Anzahl der CPU-Kerne, auf die die virtuelle Maschine Zugriff hat. Dies ist nicht für alle Anwendungen ein Faktor, aber viele moderne Anwendungen unterstützen Multi-Threading. Effektiv bedeutet dies, dass die Anwendung und/oder das Betriebssystem in der Lage ist, die Rechenaufgaben auf mehrere Kerne zu verteilen. Ein hervorragender Tipp zur Verbesserung der Rechenleistung besteht darin, die Anzahl der Threads (d. h. Kerne), die eine Anwendung unterstützen kann, mit der Anzahl der Kerne abzustimmen, auf die die virtuelle Maschine Zugriff hat.
Leider ist dies bei vielen Public Clouds nicht möglich. Das liegt daran, dass deren Virtualisierungsplattformen keine Virtualisierung auf CPU-Kernebene unterstützen. Mit anderen Worten: Jeder Kern kann immer nur von einer virtuellen Maschine gleichzeitig genutzt werden. Bei Clouds, die die Virtualisierung von CPU-Kernen unterstützen, sollten Sie experimentieren und die Anzahl der Kerne für diese Maschine variieren, während die Gesamt-CPU-Größe gleich bleibt.
Wenn Sie beispielsweise eine 2-GHz-Maschine haben, können Sie sehen, wie sich eine Verdoppelung der genutzten Kerne von zwei auf vier auf Ihr Benchmarking auswirkt. Dadurch können Anwendungen, die auf dieser virtuellen Maschine laufen, Aufgaben über vier Kerne gleichzeitig ausführen. In unserem Fall können Sie die Anzahl der Kerne, die eine virtuelle Maschine verwendet, über die Registerkarte ‘Erweitert’ im Server-Detail-Modal unserer Webkonsole einstellen. Denken Sie nur daran, immer zu überprüfen, wie hoch die Standard-Kerngröße des Cloud-Anbieters ist, bevor Sie die Anzahl der verwendeten Kerne manuell überschreiben. In unserem Fall sind es 2,2 GHz pro Kern, aber das variiert von Cloud zu Cloud.
Ich empfehle die Verwendung von POV-RAY, CoreMark, Dhrystone oder Whetstone für das Benchmarking der Leistung von Cloud-Servern.
Speicher: der echte Performance-Benchmark für Cloud-Server
Die gesamte Leistung wird durch das schwächste Glied begrenzt, an dem ein Engpass entsteht. Derzeit hat sich die Technologie im Bereich der Virtualisierung im Hinblick auf die Nutzung von CPU und RAM erheblich weiterentwickelt. Beispielsweise kann eine einzelne physische Maschine virtualisiert werden und mehrere Cloud-Server bei minimalem Verlust der Gesamtleistung beherbergen. Leider müssen im Bereich des Speichers noch große Fortschritte erzielt werden. Das Endergebnis ist, dass in den meisten Fällen die Leistung von virtuellen Servern in der Cloud durch die Leistung der Speicherlösung dieser Cloud bestimmt wird.
Kurz gesagt ist der Speicher derzeit der limitierende Faktor für die Leistung der meisten Rechenaufgaben in der Cloud. Welche Ergebnisse auch immer POV-Ray und andere Benchmarks für reine Rechenaufgaben liefern mögen, die Realität ist, dass die Geschwindigkeit, mit der der virtuelle Server Daten von physischen Speicherplatten abrufen und darauf schreiben kann, die tatsächliche Leistung eines Cloud-Servers bestimmt.
Vor diesem Hintergrund resultieren die tatsächlichen Leistungsunterschiede in der Cloud, selbst in Bezug auf Rechenaufgaben, meist aus Unterschieden in der Speicherleistung. Wie bereits in diesem Beitrag erwähnt, gibt es je nach Rechenaufgabe sehr unterschiedliche Kundenbedürfnisse. Dies gilt umso mehr für den Speicher. Benötigen Sie schnellen Lesezugriff auf große sequenzielle Datenblöcke (wie Streaming-Medien) oder auf kleine, verstreute Informationen (vielleicht in einer großen Datenbank)? Müssen Sie einen hohen Schreibzugriff für sich schnell ändernde Daten aufrechterhalten, auf die periodisch in großen Schüben zugegriffen wird? Es gibt zahlreiche Szenarien, und jedes wird auf derselben Plattform eine andere Leistung erbringen.
Grundsätzlich lassen sich die Leistungsunterschiede auf die Architektur zurückführen. Diese Unterschiede in der Architektur resultieren in der Regel aus unterschiedlichen Graden der Robustheit im Hinblick auf die Speicherung von Daten, deren Redundanz und somit letztlich auf die Wahrscheinlichkeit, dass sie jemals unwiederbringlich verloren gehen. Grob gesagt nutzen Clouds entweder zentralisierte Datenlösungen in Form eines Storage Area Network (SAN) oder eher verteilte lokale Speicherlösungen. Bei diesen befindet sich der Speicher auf jeder einzelnen physischen Maschine.
Gute SANs verfügen von Natur aus über eine hohe integrierte Redundanz. Die Leistung leidet jedoch darunter, dass die Daten für Rechenaufgaben vom SAN über das Netzwerk an die CPU und den RAM der virtuellen Maschine gesendet werden müssen. Infolgedessen weisen SAN-basierte Clouds im direkten Vergleich tendenziell eine geringere Leistung auf als Clouds mit lokalen, verteilten Speicherlösungen. Ein weiterer Nachteil eines SAN besteht darin, dass es einen sehr großen Single Point of Failure darstellt. SANs sind extrem zuverlässig. Wenn sie jedoch einmal ernsthaft ausfallen (und das ist schon vorgekommen), müssen Sie wahrscheinlich mit einem sehr großen Ausfall und Datenverlust rechnen.
Die meisten Cloud-Anbieter, die SANs einsetzen, nutzen vor allem aus Kostengründen keine vollständig redundanten Failover-Lösungen, wie sie im Enterprise-Umfeld üblich sind. Es ist wichtig zu erkennen, dass nicht jedes SAN gleich ist, und für den jeweiligen Cloud-Anbieter zu verstehen, welches Maß an Redundanz er bei seinen SANs einsetzt.
Auf lokalem Speicher basierende Clouds weisen tendenziell eine gute Festplattenleistung auf. Oft bieten sie den lokalen Speicher jedoch nur in einer nicht-persistenten Form an. Dies ist kein fairer Vergleich mit persistentem Speicher. Temporärer Speicher muss nicht in gleicher Weise robust gegen Ausfälle sein wie permanenter Speicher. Es ist immer wichtig, persistenten Speicher mit persistentem Speicher zu vergleichen, um aussagekräftige Ergebnisse zu erhalten.
Wenn Sie sich Clouds mit verteilten lokalen Speicherlösungen ansehen, müssen Sie auch wissen, welche Redundanz diese aufweisen. Festplatten fallen in erheblichem Maße aus, weshalb die Speichermethode von entscheidender Bedeutung ist. Die meisten Anbieter verwenden eine Form von RAID, aber es gibt sehr unterschiedliche Sicherheitsstufen. Am unteren Ende steht RAID1, bei dem sich im Wesentlichen zwei Festplatten spiegeln. Dies bietet in der Regel eine gute Leistung. Wenn jedoch eine Festplatte ausfällt, sind die Daten bis zum Kopieren aller Daten von der alten auf die neue Festplatte durch die Ersatzfestplatte von einem vollständigen Verlust bedroht, falls die zweite (stark belastete) Festplatte ebenfalls ausfällt. Zudem ist die Festplattenleistung während des Wiederaufbaus des RAID1-Arrays wahrscheinlich viel, viel geringer als normal.
Viele Anbieter verwenden daher RAID5 (tolerant gegenüber dem Ausfall einer Festplatte) oder RAID6 (tolerant gegenüber dem Ausfall von zwei Festplatten). RAID6 bietet die mit Abstand sicherste Lösung für lokalen Speicher, geht jedoch mit erheblichen Leistungseinbußen einher. Unser Ansatz besteht darin, RAID6 zu verwenden, dies jedoch mit erstklassigen Hardware-RAID-Controller-Karten zu kombinieren. Diese verfügen über große Speichercaches und sind batteriegepuffert. Die von uns verwendeten RAID-Controller-Karten sind tatsächlich erheblich teurer als die gesamten Festplatten-Arrays. So können wir eine Leistung liefern, die mit weitaus weniger widerstandsfähigen Konfigurationen vergleichbar ist, und bieten gleichzeitig das sehr große Sicherheitsnetz des RAID6-Speichers. Lesen Sie mehr über unseren Aufbau der Cloud-Infrastruktur, mit dem wir sehr offen umgehen.
Ich empfehle die Verwendung von IOzone oder Bonnie++ für Festplatten-Leistungsbenchmarks.
So, wenn Sie die Ergebnisse von Speicher-Benchmarks interpretieren, stellen Sie sicher, dass Sie auch die folgenden Informationen haben:
- Welche Speicherarchitektur verwendet die Cloud (lokal, SAN, andere)?
- Welche Failover- und Redundanzmaßnahmen sind für die Daten eingerichtet?
- Ist der Speicher, den ich benchmarke, temporär oder persistent?
Wenn Sie die Antworten auf diese drei Fragen mit den Ergebnissen des Benchmarkings zusammenführen, erhalten Sie einen recht guten Einblick in die tatsächliche Speicherleistung.
Netzwerk
Die Leistung des Netzwerks ist wesentlich einfacher zu bestimmen und zu messen als die Rechen- und Festplattenleistung. Die Netzwerkleistung hat zwei Schlüsselaspekte: Latenz und Bandbreite.
Je nach Ihren Anforderungen kann die Latenz des Netzwerks, das der Cloud-Anbieter verwendet, wichtig sein oder auch nicht. Wenn Sie die Cloud für weitgehend in sich geschlossene Operationen nutzen, ist es unwahrscheinlich, dass die Latenz eine Priorität darstellt. Wenn Sie jedoch Echtzeitanwendungen ausführen, die mit der Welt außerhalb der Cloud interagieren, ist die Latenz ein entscheidender Leistungsfaktor.
Normalerweise resultiert der weitaus größte Teil der Latenz aus der reinen physischen Distanz. Beispielsweise ist die meiste Latenz zwischen London und San Francisco eigentlich die Zeit, die das Licht benötigt, um diese Entfernung zurückzulegen. Unterschiede in der Latenz werden durch die unterschiedliche Effizienz der gewählten Route bestimmt. Dies ist der Aspekt, der sich von Cloud zu Cloud unterscheidet. Die Effizienz der Route ist ein direktes Ergebnis der Netzwerkanbieter, zu denen die Cloud direkte Verbindungen hat. Dies passiert entweder durch die Nutzung von IP-Konnektivität von ihnen oder durch Peering. Wenn Sie sich die Latenzen ansehen, können Sie einfach Ihren Cloud-Server anpingen und dessen Leistung bestimmen. Es ist jedoch wichtig, die Leistung zwischen Ihren tatsächlichen Endbenutzern und Ihrem Cloud-Server zu ermitteln.
Wenn die meisten Ihrer Benutzer in einer bestimmten Region ansässig sind oder der Zugriff hauptsächlich von der Hauptniederlassung Ihres Unternehmens aus erfolgt, ist es wichtig, die Leistung von diesen Standorten aus zu testen. Kommerzielle Dienste wie Pingdom bieten eine kostengünstige Möglichkeit, die Latenz von einer großen Anzahl allgemeiner Standorte weltweit gleichzeitig zu bestimmen.
Die tatsächliche Bandbreite, die Ihr Cloud-Server erreichen kann, ist ebenfalls sehr wichtig. Im Gegensatz zu traditionelleren Hosting-Lösungen neigen Cloud-Anbieter dazu, die Kosten im Verhältnis zum Gesamtvolumen des Datentransfers zu berechnen. Mit anderen Worten, nicht zeitabhängig wie bei einer Abrechnung pro Mbit, die Ihnen rund um die Uhr eine feste Konnektivität bietet. Trotzdem werden viele Cloud-Anbieter die Bandbreite für jeden virtuellen Server ‘drosseln’. Dies bleibt für den Benutzer unsichtbar, bis Sie an diese Grenze stoßen. Wenn Sie ein sehr unregelmäßiges Bandbreitenprofil haben, könnte dies ein wichtiger Leistungsfaktor sein, den Sie berücksichtigen sollten.
Um die tatsächliche Bandbreite Ihres Cloud-Servers zu testen, ist es wichtig, Daten von einer Quelle auf den Cloud-Server herunterzuladen, die die Übertragungsrate an ihrem Ende nicht einschränkt. Ich finde oft, dass eine hervorragende Methode zur Bestimmung der verfügbaren Geschwindigkeit darin besteht, eine große Datei von einem großen Anbieter wie Microsoft, Ubuntu oder, noch besser, das Betriebssystem zu patchen. Dies führt in der Regel dazu, dass viele verschiedene Dateien von verschiedenen Standorten gleichzeitig heruntergeladen werden. Es gibt Ihnen ein ziemlich gutes Gefühl für die Geschwindigkeit Ihrer Verbindung.
Ich lade oft eine Fedora live CD von deren Hauptseite als Standardtest herunter, aber Sie sollten zumindest immer mit einigen verschiedenen Dateien und Standorten experimentieren. Wenn Sie darauf bestehen, Ihr eigenes, sehr schnelles Unternehmensnetzwerk zu nutzen, möchten Sie stattdessen vielleicht als Test eine Datei von Ihrem Cloud-Server auf Ihr eigenes Netzwerk herunterladen.
Fügen Sie nun die Preise wieder hinzu, um die Ergebnisse zu gewichten
Mit den oben genannten Methoden sollten Sie ein gutes Gefühl dafür bekommen, wie die verschiedenen Anbieter von Cloud-Servern abschneiden. Darüber hinaus sollten Sie wissen, auf welche Aspekte Sie sich konzentrieren müssen, die für Ihre speziellen Anforderungen am wichtigsten sind.
Der letzte Schritt besteht darin, den Benchmark-Ergebnissen eine Preisdimension hinzuzufügen. Hierfür gibt es keine Formel. Es hängt von der relativen Leistung der verschiedenen oben genannten Aspekte ab, und Sie bestimmen diese. Wenn eine Cloud eine um 40 % bessere Leistung erbringt (wie von Ihnen festgelegt), aber nur 30 % teurer ist, sieht sie eindeutig attraktiv aus. Ebenso kann bei einem großen Bandbreitenbedarf eine geringere Rechenleistung durch einen wettbewerbsfähigen Tarif für die Datenübertragung übertrumpft werden. Der Schlüssel zur richtigen Entscheidung liegt darin, all die verschiedenen Faktoren einzubeziehen.
Schließlich sollte das Benchmarking Teil eines größeren Prozesses sein, um zu bestimmen, welche Cloud-Server für Sie geeignet sind. Dies sollte auch andere Aspekte einbeziehen. Dazu können beispielsweise Service-Level-Agreements, Überlegungen zur Daten-/Anbieterbindung, der physische Standort und die rechtliche Zuständigkeit gehören. Indem Sie all diese Aspekte zusammenführen, werden Sie sich in die Lage versetzen, die richtige Wahl des Cloud-Computing-Anbieters zu treffen.
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.