Azure VM-Preisgestaltung - Ist es besser, 80 Single-Core-Maschinen oder 10 8-Core-Maschinen zu haben?

8

Ich bin von einer Software begrenzt, die pro Instanz des Programmlaufs einen einzelnen Kern verwendet. Es wird eine SQL Server-Arbeitswarteschlange ablaufen und Ergebnisse auf dem Server ablegen. Je mehr Instanzen ich ausführe, desto schneller ist das Gesamtprojekt. Ich habe mit Azure-VMs ein wenig gespielt und kann den Prozess auf zwei Arten beschleunigen.

1) Ich kann die App auf einer einzigen Kern-VM ausführen, diese VM klonen und sie so oft ausführen, wie ich es für notwendig erachte, um den Job ausreichend zu beschleunigen.

ODER

2) Ich kann die App 8-mal auf einer 8-Core-VM ausführen, ... klonen Sie diese VM erneut und führen Sie sie so oft wie nötig aus, um den Job ausreichend zu beschleunigen.

Ich habe beim Testen festgestellt, dass die Beschleunigung für das Hinzufügen von 8 Single-Core-VMs und 1 8-Core-VMs ungefähr gleich ist. Unter der Annahme, dass dies wahr ist, wäre es besser, preislich Single-Core-Maschinen zu haben?

Die Preisgestaltung ist ein bisschen ein Rätsel, ob es sich um echte CPU-Nutzungszeit handelt oder um was. Es ist ein wenig einfacher, den 1 8-Kern-Ansatz zu verwenden, da das Hochdrehen von Maschinen und deren Abbau Zeit kostet, aber ich denke, das könnte automatisiert werden.

Es scheint von einigen Preisseiten, dass der Multiple-Single-Core-VM-Ansatz weniger kosten würde?

Nebenfrage: Könnte ich einige Power-Shell-Skripte mögen, um einfach VMs eines bestimmten Images hinzuzufügen und die App zu starten, und sie dann herunterzufahren, sobald ich kurz vor dem Abschluss stehe? Nach dem Generieren der VMs gäbe es eine Möglichkeit, die App zu starten, ohne dass man sich in jedem einzelnen Remote anmelden und es ausführen müsste?

    
shawn.mek 15.07.2013, 18:28
quelle

3 Antworten

5

Abrechnung

Laut Windows Azure Virtual Machines-Preisdetails werden virtuelle Computer von Ihnen berechnet die Minute (von Wanduhrzeit ). Die Preise sind als Stundensätze (60 Minuten) aufgeführt und werden basierend auf der Gesamtzahl der Minuten in Rechnung gestellt, wenn die VMs für eine Teilstunde laufen.

Im Juli 2013 kostet 1 Small VM (1 virtueller Kern) 0,09 $ / Std .; 8 kleine VMs (8 virtuelle Kerne) kosten $ 0,72 / Std .; 1 Extra Large VM (8 virtuelle Cores) kostet 0,72 $ / Std. (Entspricht 8 Small VMs).

VM-Größen und Leistung

Die Größe der VMs unterscheidet sich nicht nur in der Anzahl der Kerne und des Arbeitsspeichers, sondern auch im Netzwerk I / O Leistung , von 100 Mbps für Small bis 800 Mbps für Extra Large.

Extra Small VMs sind in Bezug auf CPU- und I / O-Leistung ziemlich begrenzt und für Workloads wie die von Ihnen beschriebenen nicht geeignet.

Für E / A-gebundene E / A-Anwendungen mit einem Thread, wie in der Frage beschrieben, kann eine Extra Large VM aufgrund der schnelleren Antwortzeiten für jede Anfrage einen Vorteil haben.

Es empfiehlt sich auch, Workloads mit 2, 4 oder mehr Prozessen pro Core zu benchmarken. Zum Beispiel 2 oder 4 Prozesse in einer Small VM und 16, 32 oder mehr Prozesse in einer Extra Large VM, um das angemessene Gleichgewicht zwischen CPU- und I / O-Lasten zu finden (vorausgesetzt, Sie verwenden nicht mehr RAM als verfügbar).

Automatische Skalierung

Automatische Skalierung virtueller Maschinen ist direkt in Windows Azure integriert . Es kann entweder auf CPU-Auslastung oder Windows Azure Queues-Länge basieren.

Eine weitere Alternative besteht darin, spezielle Tools oder Dienste zu verwenden, um die Last auf den Servern zu überwachen und PowerShell-Skripts auszuführen, um virtuelle Maschinen je nach Bedarf hinzuzufügen oder zu entfernen.

Automatisch ausführen

Sie können den Windows Scheduler verwenden, um beim Start von Windows automatisch Tasks auszuführen.

    
Fernando Correia 15.07.2013, 20:38
quelle
12

Ich würde argumentieren, dass alles andere gleich ist und dieser Code wirklich CPU-gebunden ist und nicht von jeder Speicherfreigabe profitiert, die mehrere Prozesse auf demselben Rechner bereitstellen würden, sollten Sie für die einzelnen Kernmaschinen statt Multi-Core-Maschinen.

Gründe:

Fehlerdomänen isolieren

Es ist besser, nach oben als nach oben zu skalieren, wenn möglich, weil dadurch Fehler naturgemäß isoliert werden. Wenn einer Ihrer kleinen Knoten abstürzt, betrifft dies nur einen Prozess. Wenn ein großer Knoten abstürzt, gehen mehrere Prozesse verloren.

Lastenausgleich

Windows Azure ist wie jedes andere System mit mehreren Mandanten eine gemeinsam genutzte Ressource. Dies bedeutet, dass Sie wahrscheinlich mit anderen Workloads um CPU-Zyklen konkurrieren werden. Wenn Sie kleine VMs verwenden, haben Sie eine bessere Chance, sie auf physische Server im Rechenzentrum zu verteilen, die zum Zeitpunkt der Bereitstellung der Maschinen die beste Ressourcensituation aufweisen (Sie möchten sicherstellen, dass VMs gestoppt und wieder freigegeben werden, bevor sie erneut gestartet werden) die Azure-Fabric-Platzierungsalgorithmen zur Auswahl der besten Hosts). Wenn Sie große VMs verwenden, ist es weniger wahrscheinlich, einen geeigneten Host mit optimalen Konflikten zu finden, um viele virtuelle Kerne unterzubringen.

Planung des virtuellen Prozessors

Es ist nicht allgemein bekannt, wie das Planen einer virtuellen CPU anders ist als das Planen einer physischen CPU, aber es lohnt sich, etwas darüber zu lesen. Die Hauptsache ist, dass Hypervisoren wie VMware ESXi und Hyper-V (auf denen Azure ausgeführt wird) mehrere virtuelle Kerne zusammen planen und nicht separat. Wenn Sie also eine 8-Kern-VM besitzen, muss der physische Host über 8 physische Kerne verfügen, die gleichzeitig sind, bevor die virtuelle CPU ausgeführt werden kann. Je mehr virtuelle Kerne vorhanden sind, desto unwahrscheinlicher ist es, dass der Host zu irgendeinem Zeitpunkt über genügend physische Kerne verfügt (selbst wenn 7 physische Kerne frei sind, kann die VM nicht ausgeführt werden). Dies kann zu einem paradoxen Effekt führen, dass die VM schlechter arbeitet, wenn mehr virtuelle CPU-Kerne hinzugefügt werden. Ссылка

Kurz gesagt, ein einzelner vCPU-Rechner erhält mit höherer Wahrscheinlichkeit einen Anteil am physischen Prozessor als ein 8 vCPU-Rechner, alle anderen sind gleich.

Und ich stimme zu, dass die Preisgestaltung grundsätzlich die gleiche ist, abgesehen von ein wenig mehr Speicherkosten, um viele kleine VMs gegen weniger große zu speichern. Aber die Speicherung in Azure ist weit weniger kostspielig als die Berechnung, so dass es wahrscheinlich keinen wirtschaftlichen Ausschlag gibt.

Ich hoffe, das hilft.

    
Noah Stahl 18.07.2013 01:00
quelle
2

Der Preis ist "Verfügbarkeit der Maschine in Stunden * Rate der VM Größe / Stunde * Anzahl der Instanzen"

z.B. Sie haben eine 8-Core-VM (Extra Large) für einen Monat (30 Tage) (30 * 24) * 0,72 $ * 1 = 518,4 $

für 8 einzelne Kerne wird es sein (30 * 24) * 0,09 * 8 = 518,4 $

Ich bezweifle also, dass es einen Preisunterschied geben wird. Ein Vorteil kleinerer Maschinen und "Skalierung" ist, wenn Sie die Skalierbarkeit genauer steuern können. Eine extragroße Maschine wird mehr ungenutzte Dollar als 2-3 kleine Maschinen essen.

Ja, das kannst du definitiv schreiben. Angenommen, sie sind IaaS-Maschinen, könnten Sie das Skript zum Windows-Start hinzufügen, wenn Sie auf PaaS die " verwenden können Startup-Aufgabe ". Referenz

    
IUnknown 15.07.2013 20:38
quelle