Langsame Festplattenleistung auf Azure Virtual Machine

9

Okay, lassen Sie mich zunächst sagen, dass ich kein Betriebsmitarbeiter, sondern ein Entwickler bin. Also gehe ich hier in ein unbekanntes Land, also bitte ertrage es mit mir.

Ich möchte eine virtuelle Azure-Maschine zum Extrahieren einer 50-GB-XML-Datei aus einer 1,9-GB-Zip-Datei verwenden. Daher habe ich getestet, welche Instanzgröße in Azure ich verwenden sollte, um eine gute Leistung zu erzielen, ohne mehr zu bezahlen, als ich benötige.

Die Festplattenleistung von Azure-VMs war jedoch nicht erstaunlich, und ich würde gerne wissen, ob ich etwas falsch mache oder ob meine Ergebnisse den Erwartungen entsprechen.

Womit habe ich zuerst getestet? Ich habe eine benutzerdefinierte .NET-Konsolenanwendung, die nur eine Zip-Datei als Argument verwendet und sofort mit dem Extrahieren der Zip-Datei in dasselbe Verzeichnis beginnt, in dem sich die Zip-Datei befindet. Während der Extraktion berechnet die Anwendung, wie viele Megabyte Die Anwendung hat pro Sekunde in die Zieldatei geschrieben und gibt sie aus.

Auf meinem lokalen Entwicklungscomputer erhalte ich mit dieser Anwendung eine ziemlich gute Leistung, 160-210 MB / s geschrieben. Der gesamte Extraktionsvorgang dauert also ca. 8 Minuten. Die technischen Daten meines lokalen Computers sind Intel Core i7 950, 3 GHz, 4 Kerne (8 logisch), 12 GB RAM, Samsung SSD 830 Serie 250 GB.

Okay, ich habe angefangen, verschiedene Instanzgrößen zu testen, und hier sind meine Ergebnisse.

  • Auf einer A4-Instanz mit Windows Server 2012 Datacenter R2 (8 Kerne, 14 GB RAM) mit einem gestreiften RAID von 4 virtuellen Festplatten unter Verwendung desselben Speicherkontos ohne Host-Caching habe ich konstant 30-35 MB / s erhalten, was das Ganze bedeutet Die Extraktion dauerte 24 Minuten und 48 Sekunden. Ich habe auch versucht, das Host-Caching zu aktivieren, aber es machte keinen wirklichen Unterschied.
  • Auf einer D4-Instanz mit Windows Server 2012 Datacenter (8 Kerne, 28 GB RAM, 500 GB lokale SSD-Festplatte) habe ich in den ersten Minuten eine wirklich gute Leistung (über 150 MB / s) erzielt und dann die Leistung mit Spitzenwerten von 200 MB / s variiert. s und Täler mit 9 MB / s. Die durchschnittliche Leistung lag zwischen 70 und 100 MB / s. Die Extraktion dauerte 9 min und 40 Sekunden.
  • Auf einer D3-Instanz mit Windows Server 2012 Datacenter (4 Kerne, 14 GB RAM, 250 GB lokale SSD-Festplatte) habe ich in der ersten Minute eine wirklich gute Leistung (150+ MB / s) erzielt, aber dann ging die Leistung auf konstant 20-40 MB zurück / s dauert der Extraktionsvorgang 21 Minuten und 49 Sekunden.

Auf einer D2- und D1-Instanz ist die Festplattenleistung schlechter als auf der D3.

Und das überrascht mich wirklich. Wie kann eine lokale SSD-Festplatte so schlecht funktionieren wie auf den Instanzen D1, D2 und D3? Und weiß jemand, warum die Festplattenleistung zwischen D1 und D4 so unterschiedlich ist? Ist es ein Speicherproblem? Wenn ich mir den Task-Manager anschaue, während die Extraktion läuft, explodiert die Speichernutzung. Ich vermute, es liegt daran, dass Windows die geschriebenen Daten zwischenspeichert, aber wenn der Speicher knapp wird, müssen die Daten auf die Festplatte geschrieben werden. In diesem Fall nimmt die Festplattenleistung ab. Dies geschieht jedoch nicht auf meinem lokalen Computer. Warum ist auf diesen VMs ein derart aggressives Caching erforderlich?

Ich weiß, dass es Unterschiede zwischen meinem lokalen Computer und einem in Azure gehosteten virtuellen Computer gibt, aber ist die Festplattenleistung, die ich erlebe, wirklich zu erwarten?

(Ich habe meine Frage ursprünglich auf Stackoverflow gepostet , da ich vermutete, dass meine Anwendung die Ursache war. Aber ich bin mir nicht mehr so ​​sicher.)

René
quelle

Antworten:

7

Etwas spät zur Party hier, aber für das, was es wert ist, "angehängte" SSDs in Azure zu haben, werden ihre IOPs basierend auf der Computergröße gedrosselt. Es wurde nirgendwo in der Preisgestaltung erwähnt, aber ich habe dieses Problem als Ticket mit technischem Support angesprochen, als sie mich auf den folgenden Blog-Beitrag verwiesen haben.

Siehe diesen Link: http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/

Richard Hauer
quelle
Tolle Infos, danke Richard! Ich vermutete, dass es mit Drosselung zu tun hatte, konnte aber zu diesem Zeitpunkt keine spezifischen Informationen darüber finden. Dieser Blog-Beitrag beantwortet meine Fragen.
René
Azure Limit Disk io..was zum Teufel..Ich wechsle zu Google Cloud ..Sie beschränken dies nicht und der Preis ist viel billiger.
Tyan
4

Vielleicht hängt es nicht mit der Erinnerung zusammen. "Physische" Festplatten in Azure verwenden den sogenannten Blob-Speicher. Aus diesem Grund ist die Leistung auch bei ähnlicher Hardware nicht mit der Ihres lokalen Computers identisch. Weitere Informationen finden Sie unter diesem Link . Dies scheint ein häufiges Problem für die SQL Server-Community zu sein, die stark von der Festplattenleistung abhängt. Ich zitiere einen Artikel, den ich darüber gefunden habe

In der Leistungsanleitung für SQL Server in Azure VMs wird erwähnt (auf den Seiten 15 und 26), dass in Azure VMs Speicherbereiche verwendet werden können, um die Speicherleistung für SQL Server-Workloads zu verbessern

Storage Spaces ist eine in Windows Server 2012 integrierte Funktion, mit der Sie mehrere physische Festplatten zum Erstellen einer einzelnen virtuellen Festplatte verwenden können, um die E / A-Einschränkungen der VM-Festplatte selbst zu umgehen. Nochmals zitieren:

Bei größeren VMs, die viele (bis zu 16) physische Festplatten unterstützen, ist eine erhebliche Steigerung der Speicherleistung möglich. Dadurch kann Azure als funktionsfähige Plattform für viele SQL-Workloads aktiviert werden, die ansonsten durch die E / A-Leistung einer einzelnen Azure-Festplatte zu stark eingeschränkt würden.

Dieser Artikel zeigt Ihnen die Schritte zum Erstellen eines Speicherplatzes.

Sie sollten dies zuerst versuchen. Wahrscheinlich können Sie sogar eine kleinere Instanz verwenden, da der Speicherdienst ein von der Instanz selbst getrennter Dienst ist.

Bruno Faria
quelle
Sie haben Recht, dass Standardfestplatten in Azure tatsächlich Blob-Speicher verwenden, aber ich glaube nicht, dass dies bei SSD-Festplatten der Fall ist. Nach den Angaben von Microsoft handelt es sich um lokale physische SSD-Festplatten. Und wenn das der Fall ist, finde ich es seltsam, dass sich die Leistung zwischen den D-Instanzgrößen so stark unterscheidet. In Bezug auf Speicherplätze: Ich habe dies untersucht und einige Tests durchgeführt, aber leider hat es mir keinen nennenswerten Leistungsgewinn gebracht. Am Ende bin ich zu dem Schluss gekommen, dass ich einfach akzeptieren muss, dass ich für diese Aufgabe eine größere Instanz verwenden muss.
René
1
@ René Hattest du die Gelegenheit, das neue Azure Storage Premium zu testen? Es tut mir leid, dass Sie dieses alte Thema angesprochen haben, aber ich bin ziemlich gespannt, wie sich dieser neue Speicher in Ihrer Umgebung verhalten würde.
Bruno Faria
Sorry für meine späte Antwort. Großartiger Tipp zu Azure Storage Premium. Ich habe es nicht ausprobiert, da es in meiner Region noch nicht verfügbar ist. Aber ich werde ein Auge darauf haben. Danke noch einmal!
René