Warum ist der Kassapreis des AWS EC2 höher als der On-Demand-Preis?


27

Ich habe gestern versucht, Spot-Instanzen über Ansible bereitzustellen, und fast alle meine Anfragen sind fehlgeschlagen, auch wenn ich meinen Spot-Preis == dem On-Demand-Preis dieser Instanz angegeben habe.

Als ich mir die Grafik mit den Spotpreisen ansah, fand ich etwas sehr Interessantes:

Bildbeschreibung hier eingeben

Der Kassakurs der Instanz in us-east-1a ist mehr als der Preis auf Abruf, was mich verwirrte. [in der Tat ~ 5x höher]

Sind Spot-Instances für die geringen Kosten nicht bevorzugt? Wenn ja, warum ist der Preis höher als der Preis auf Abruf?

Gemäß den AWS-Dokumenten :

Mit Spot-Instances erhalten Sie Zugang zu nicht genutzter Amazon EC2-Kapazität mit erheblichen Nachlässen im Vergleich zu On-Demand-Preisen.

Heißt das auch, dass die Leute über den Preis auf Abruf bieten? Wenn ja, warum dann? Geht es ihnen mit einer On-Demand-Instanz nicht besser?

Oder habe ich das Konzept der Spot Instances falsch verstanden?


Wenn der Kassapreis immer niedriger als der Abrufpreis war, warum würde der Abrufpreis überhaupt existieren?
Zach Lipton

2
Zach, weil Amazon Ihre Instanz nach Belieben beenden kann, wenn es einen höheren Bieter gibt.
Xiong Chiamiov

1
Egal aus welchem ​​Grund - Sie können das Risiko minimieren, indem Sie die Best-Practice-Regeln für Spot-Instanzen implementieren. - aws.amazon.com/ec2/spot/getting-started - Erstellen Sie die Anforderung für so viele Instanztypen und so viele AZs Auf diese Weise können Sie die Möglichkeit verringern, dass Sie mehr bezahlen. Wenn Sie in einem Bruchteil der Zeit etwas mehr und in allen anderen Fällen erheblich weniger bezahlen, ist dies für Sie immer noch von Vorteil. Es sieht auch so aus, als ob der Algorithmus mit vielen kleinen Instanzen viel sicherer sein kann, als große Einzelknoten-
Petr Chloupek

Antworten:


23

Dies ist tatsächlich ein großartiges Beispiel für Menschen, die die Stelle leicht missbrauchen. Die Leute sagen: "Unsere Arbeitslast ist wirklich wichtig, aber wir wollen nicht den vollen Preis auf Abruf zahlen." Sie setzen daher einen höheren Gebotspreis als auf Abruf fest, in der Annahme, dass es sehr unwahrscheinlich ist, dass er gekündigt wird, aber dennoch gekündigt werden soll Holen Sie sich den günstigsten Spot-Preis im Angebot.

Es hat Fälle gegeben, in denen Leute beispielsweise 1000 Dollar eingeben (mir wurde mindestens einmal davon berichtet), weil sie den Vorteil des Spotmarktes wollen. Natürlich steigt irgendwann die Nachfrage und der Spot-Preis, damit die Leute mehr zahlen als auf Abruf.

Der Spotmarkt funktioniert so, dass Amazon über X-Instances-Kapazitätsreserven verfügt und diese von oben nach unten zählen, bis alle X-Instances benötigt werden. Der "Preis" ist also der niedrigste Preis, zu dem sie diese X-Instanzen erfüllen können.

Stellen Sie sich vor, Amazon hat 10.000 Instanzen - und sie zählen bis (sagen wir) 0,43 US-Dollar herunter, bis diese 10.000 Instanzen erfüllt sind. Aber wenn diese Menge plötzlich auf 100 Instanzen sinkt, geben einige Leute Gebotspreise von 10.000 US-Dollar für ihre 100 Instanzen an und zahlen plötzlich diese 10.000 US-Dollar pro Stunde.

Tl; dr Verstehen Sie, wie Spot funktioniert, und setzen Sie eine Obergrenze, die Sie zahlen möchten.


12

Dafür gibt es 2 Gründe:

  • Die Spot-Instanz wird manchmal von vielen Benutzern verwendet. (Denken Sie an die Stapelverarbeitung, starten Sie 100 Computer als Spot-Instanz, und drücken Sie die Taste.)

  • Für eine Spot-Instanz zahlen Sie nicht den Gebotspreis, sondern den aktuellen Spot-Preis. Der Angebotspreis ist der Cutoff-Punkt. Übersteigt der aktuelle Kassakurs den Angebotspreis, beendet AWS diese Instanz.

Dies ist auch der Grund, warum einige Benutzer massiv über die Spotpreise bieten. Sie möchten nicht, dass ihre Instanz von Zeit zu Zeit heruntergefahren wird, und bieten daher einen so hohen Preis, dass der Kassakurs niemals erreicht wird. Da sie nur den aktuellen Kassapreis zahlen, ist die Instanz in 99% der Fälle viel billiger.


Auf diesem Bild in meiner Frage beträgt der Spot-Preis also 2,15 USD um 18:00 Uhr, oder? Das bedeutet, dass die Leute immer noch 2,15 US-Dollar für eine Instanz bezahlen, wenn sie den Preis auf Abruf bezahlen können. Warum so?
Dawny33

1
siehe meine Antwort (kurz vor dem Posten)
Henry

@ Dawny33 Manchmal steigt der Preis nur kurzzeitig über die Schwelle. Beim Wechsel vom Spot- zum On-Demand-Preis wird die Instanz auf einer normalen ec2-Instanz neu erstellt. Wenn der Preis wieder sinkt, ist die On-Demand-Instanz zerstört, neue Spot-Instanz, ect ... So kann es nützlich sein, Zeit zu verlieren. Einige Leute werden nicht denken, dass dies die Mühe wert ist und werden nur die Spot-Instanzen verwenden
Thern

6

Eine nützliche Information, um zu verstehen, warum jemand über den On-Demand-Preis bieten würde, finden Sie in der Einführung zu Spot-Instanzen :

Spot-Instanzen können verwendet werden, um den gelegentlichen Bedarf an großer Rechenkapazität zu decken. (Beachten Sie, dass das Standardlimit für Spot-Instanzen 100 gegenüber dem Standardlimit von 20 für On-Demand-Instanzen beträgt.) Wenn Ihre Anforderungen dringend sind, können Sie dies angeben Ein hoher Maximalpreis (möglicherweise sogar höher als der On-Demand-Preis), der die relative Priorität Ihrer Anfrage erhöht und es Ihnen ermöglicht, angesichts anderer Anfragen und der zu diesem Zeitpunkt verfügbaren Spot Instance-Kapazität auf so viel Sofortkapazität wie möglich zuzugreifen.

Wenn Sie eine große Nachfrage nach Ihrem Service haben (möglicherweise durch einen Link von einer anderen beliebten Website aus - siehe den Slashdot-Effekt ), können Sie mit einem Gebot über dem On-Demand-Preis für eine Spot-Instanz auf weit mehr Instanzen zugreifen vermerkt durch das Dokument.

Natürlich ist dies auf lange Sicht nicht nachhaltig, und Sie erhalten ein viel besseres Angebot für eine langfristige Berechnung, wenn Sie nur On-Demand-Instanzen kaufen (und das Risiko, überboten zu werden, ist geringer!).

Wenn Sie in einer Situation sind, in der Sie viel Rechenleistung benötigen - schneller als Sie es nur durch den Kauf von On-Demand-Instanzen erreichen können -, ist ein Überbieten möglicherweise sinnvoll.


3

Wenn Sie sich die Diagramme genau ansehen, werden Sie feststellen, dass ein Spitzenwert immer von sehr kurzer Dauer ist - gerade genug Zeit, damit die vom Eigentümer geschriebenen automatisierten Überwachungssysteme diese Systeme ordnungsgemäß beenden können. Außerdem werden Sie gelegentlich feststellen, dass der Preis unmittelbar nach einem Anstieg auf 0 fällt. Dies liegt daran, dass alle Systeme in diesem Rechenzentrum wie On-Demand-Systeme verwendet werden und der Preis bei Null liegt, wenn keine Systeme für Spot-Pricing verfügbar sind.

Wenn Ihre Spot-Instanz zur Beendigung vorgemerkt wurde, wird auf dem System eine Meldung angezeigt, die darauf hinweist, dass sie unter der lokalen Metadaten-URL http://169.254.169.254/latest/meta-data/spot/termination-time verfügbar ist . Es werden 3 Minuten sein, bis es endet. In den meisten Fällen mehr als genug Zeit, um die Kündigung automatisch abzuwickeln. Das Bieten über dem Nachfragepreis ist nur für Bereitstellungen erforderlich, deren ordnungsgemäße Beendigung einige Minuten in Anspruch nimmt.

Wenn es nicht möglich ist, Ihr System so zu gestalten, dass es ordnungsgemäß terminiert, Daten archiviert usw. in 3 Minuten. Sie können ein höheres Gebot abgeben als den Nachfragepreis, um Zeit zu gewinnen. Das System kann sogar so ausgelegt werden, dass es den aktuellen Kassakurs proaktiv überwacht und vor dem Kursübergang austauscht. In solchen Fällen müssen Sie jedoch eine Geschäftsentscheidung darüber treffen, wie viel es wert ist, wenn Sie ordnungsgemäß kündigen.

Es ist töricht, 4 bis 5 Stunden lang 100 US-Dollar pro Stunde zu zahlen, um Ihr System zu erhalten. Wenn Ihr System jedoch 30 Minuten benötigt, um alle Prozesse ordnungsgemäß zu beenden, können Sie eine Geschäftsentscheidung treffen, wie viel es wert ist, potenziell Daten zu verlieren oder Ihren horizontal skalierten Service zu beeinträchtigen. Eine E-Commerce-Site mit einem Nettogewinn von 10.000 US-Dollar pro Stunde kann es sich durchaus leisten, 1.000 US-Dollar zu zahlen, um zwei Spot-Instanzen 15 bis 30 Minuten lang laufen zu lassen und gleichzeitig Nachfragesysteme aufzurufen und Daten zu archivieren.

Webbasierte Anwendungen können mithilfe von Elastic Load Balancer die Beendigung automatisch beheben. Ein intelligenter Implementierer würde eine Reihe von Skripten einrichten, um die Warnung zu verarbeiten. Sie könnten zwei Instanzen mit niedrigen Kosten bei Bedarf unterhalten, die im Lastausgleich sind, und dann bis zu einem halben Dutzend Systeme mit mittleren Kosten über Spot-Instanzen verwenden, um eine hohe Leistung aufrechtzuerhalten und weniger als ein einzelnes System bei Bedarf mit derselben Kapazität auszugeben.

Lassen Sie 3 von ihnen bis zu 100 US-Dollar pro Stunde und 3 von ihnen nur bis zur Hälfte des On-Demand-Preises bezahlen. Wenn AWS Instanzen beendet, wird ELB automatisch angepasst. Geben Sie dem automatisierten System bis zu einer Stunde Zeit, um sich auf nur 200 USD einzustellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.