it-swarm.com.de

Wie programmiere ich AWS Spot Instances, um strategisch zu bieten, sodass die Auktion nie verloren geht, bis ein Konkurrent das Maximum überschreitet, das ich bereit bin zu zahlen?

Ich glaube, ich bin im richtigen Bereich des Stapelaustauschs, um dies zu fragen. Wenn nicht, lass es mich wissen.

Ich verwende Amazon Web Services nur für temporäre Hosting-Dienste, daher sind die Spot-Instances für mich sehr wertvoll. Ich würde auch nur eine Instanz erstellen und diese starten und stoppen - aber das passt leider nicht unbedingt zu meinem knappen Budget.

Wie auch immer, es bringt mich wirklich um, wenn mich jemand an einer Stelle überbietet, die ich habe (ich tendiere dazu, die größeren zu wählen, von denen es weniger gibt), und ich werde nach dem Zufallsprinzip angepfiffen. Ich weiß, oder zumindest glaube ich, dass es eine Möglichkeit gibt, etwas zu programmieren, um Ihren Angebotspreis dynamisch zu ändern und einen potenziellen Konkurrenten zu schlagen, wenn dessen Preis höher ist als Ihrer.

Früher glaubte ich, dass Amazon mir automatisch den höchsten Preis direkt über dem nächstniedrigen Wettbewerber in Rechnung stellen würde (ohne dass dies erforderlich wäre). Wenn ich also zu hoch biete, bezahle ich nur das, was ich zum Gewinnen benötigt hätte und die Auktion fortsetzen. Im Wesentlichen dachte ich, mein Gebotspreis sei mein Maximalgebotspreis.

Anscheinend habe ich nach meinen Rechnungen und mehreren Experimenten - das ist nicht der Fall. Sie berechnen mir alles, was ich geboten habe, auch wenn ich weiß, dass niemand sonst da ist, der mir widerspricht.

Ich musste das klären, aber lassen Sie mich zum Hauptpunkt zurückkehren:

Nehmen wir an, ich biete $ 0,50, der Konkurrent kommt herein und bietet 0,55 Cent. Ich werde angepfiffen. Ich möchte es dort haben, wo ich ein Maximum festgelegt habe, das ich zu zahlen bereit bin (sagen wir mal $ 1,00 hier), und wenn dann ein Konkurrent hereinkommt und versucht, $ 0,55 zu bieten, wird mein Gebot dynamisch angepasst, um sein Gebot bei $ 0,56 zu übertreffen bis er meine $ 1.00 Schwelle durchbricht.

Ich habe die Anleitungen gelesen und obwohl sie mehr oder weniger einfach sind, habe ich das Gefühl, dass sie ein paar Löcher in ihnen hinterlassen, die mich letztendlich verwirren. Wie zum Beispiel, wo gebe ich den besagten Befehl ein oder wann mache ich das? Vielleicht bin ich nur Tech-Analphabet und brauche Hilfe beim Entschlüsseln dieser Anleitungen.

Ein guter Anfang für jemanden, der bereit ist, mir zu helfen, dieses Problem zu entschlüsseln, ist hier: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/spot-as-update-bid.html

4
Taal

Es gibt keine geheime Methode, die hier festgelegt werden muss, und Sie müssen nicht tun, was Sie versuchen.

Sie sollten bieten, was die Maschinen für Sie wert sind, denn Sie zahlen nicht mehr als die Marktanforderungen.

Nun, ich hatte vorher geglaubt, Amazon würde mir automatisch den höchsten Preis direkt über dem nächstniedrigeren Konkurrenten berechnen ...

Ich bin mir nicht sicher, woher du diese Idee hast.

Es gibt zu jedem Zeitpunkt einen festen Spot-Preis für alle Instanzen mit allen vier folgenden identischen Konfigurationselementen:

  • gleiche Verfügbarkeitszone
  • gleiche Instanzklasse
  • gleiche Plattform (Linux/Unix, Windows oder SUSE)
  • gleiche Produktklasse (VPC oder EC2 Classic)

Jeder zahlt den gleichen Kassapreis für diesen Zeitraum, unabhängig davon, ob sein Maximalgebotspreis höher war"

- http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html

In Anbetracht dessen irren Sie sich entweder mit der folgenden Behauptung oder Sie müssen sich an den AWS-Support wenden, da dies nicht korrekt ist:

Sie berechnen mir alles, was ich biete, auch wenn ich weiß, dass niemand sonst in der Nähe ist, der mir widersprechen kann.

Das ist in zweierlei Hinsicht nicht richtig.

Sie zahlen oft weniger pro Stunde als Ihr Maximalgebot. Der Spot-Preis wird regelmäßig angepasst, sobald Anfragen eingehen und sich das verfügbare Angebot an Instanzen ändert. "

- http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html

Meine Rechnungen stimmen in dieser Hinsicht mit der Dokumentation überein. Mir wird immer der Spotmarktpreis in Rechnung gestellt, der in der Konsole angezeigt wird, was definitiv nicht mein Maximalgebot ist.

Wenn Sie dies nicht sehen, dann vermute ich, dass Sie die Marktsignale nicht richtig interpretieren.

Wichtig ist, dass Sie nicht wissen können, wer sonst noch oder ob jemand anderes da ist, um Ihnen zu bieten, da der aktuelle Marktpreis nicht das aktuelle Höchstgebot widerspiegelt, und in Fällen, in denen das Angebot die Nachfrage übersteigt, habe ich festgestellt, dass die Das Vorhandensein oder Nichtvorhandensein meiner Instanzen hat keinen Einfluss auf den Marktpreis.

Die einzige Schlussfolgerung, die ich aus meiner Erfahrung mit der Analyse von Preisentwicklungen und -trends ziehen kann, ist, dass EC2 für jede Kombination der vier oben aufgeführten Faktoren einen Mindestpreis hat. Wenn an einem bestimmten Ort mehr dieser bestimmten Kapazität vorhanden ist als derzeit insgesamt Spot-Anfragen vorliegen, bleibt der Spot-Marktpreis auf dem Mindestpreis für diese Instanzklasse + Verfügbarkeitszone + Plattform + Produkt. Ansonsten steigt es an.

Ihre Spot-Anfragen verändern wahrscheinlich den Markt durch ihre Präsenz. Wenn der Markt nicht zu seinem Mindestpreis ist, können Sie fast sicher sein, dass dies ist, was Sie sehen - in diesem Fall würde es Sie sehen aus wie , sie berechnen Ihnen, was Sie bieten, aber das liegt daran, dass Ihre Anfragen dazu führen, dass der Mindestpreis steigt.

Nehmen wir zur Veranschaulichung mit Zahlen an:

Sie und ich bieten beide für c3.large-Instanzen unter Linux/Unix in Amazon VPC in der Verfügbarkeitszone "us-east-1a". (Nehmen wir weiter an, dass "us-east-1a" sich auf dieselbe Verfügbarkeitszone in meinem AWS-Konto und in Ihrem AWS-Konto bezieht, was keineswegs unbedingt zutrifft. Die Zuordnung der Verfügbarkeitszonen zu Konten ist pseudo zufällig unter verschiedenen AWS-Kunden.)

Wir werden spekulieren, dass EC2 nur 10 solcher Instanzen für Spot-Allokationen zur Verfügung hat und der Mindestmarktpreis 0,032 USD/Stunde beträgt. Mein Maximalgebot beträgt 0,096 USD/Stunde.

Ich habe 8 davon in Betrieb, und ein anderer Kunde hat 1 laufende Instanz, und der andere Kunde hat ein Maximalgebot von 0,035 USD/Stunde.

Der andere Kunde und ich zahlen beide 0,032 US-Dollar pro Stunde, da immer noch nicht genutzte Maschinen für die Bedienung des Kassamarkts reserviert sind, sodass unsere Instanzen die Preise nicht geändert haben.

Wenn Sie jedoch den Preis beobachten, haben Sie keine Ahnung, ob unsere Maschinen in Betrieb sind oder nicht, oder ob wir gegen Sie bieten, da sich der Preis nicht ändert.

Jetzt kommen Sie mit, sehen den Preis bei 0,032 USD/Stunde und bieten 0,04 USD für 2 Instanzen.

Es gibt nicht genug Kapazität, um 8 + 1 + 2 = 11 zu bedienen, da nur 10 Maschinen verfügbar sind. Das System entscheidet also, wer zum Laufen kommt und wer anhalten muss, und der Markt verändert sich.

Mein Maximalgebot von 0,096 US-Dollar ist das höchste, sodass meine 8 Maschinen weiterlaufen können. Ihr maximales Gebot steht bei 0,04 US-Dollar an nächster Stelle, sodass Ihre beiden Instanzen gestartet werden und der andere Kunde, dessen maximales Gebot niedriger ist als wir beide, gekündigt wird.

Und was passiert mit dem Marktpreis?

das letzte erfüllte Gebot legt den Spot-Preis fest"

- http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/spot-pricing-interruptions.html

Der Kassakurs liegt laut Dokumentation nun bei 0,04 US-Dollar.

Später verkleinere ich und benötige nicht alle meine Instanzen, sodass ich 5 davon beende. Jetzt gibt es Überkapazitäten, sodass der andere Benutzer (oben erwähnt, maximales Gebot 0,035 US-Dollar) wieder hochfährt, Ihre Instanzen weiter ausgeführt werden und der Markt auf den Mindestpreis von 0,032 US-Dollar zurückfällt - was wir alle bis zum Markt bezahlen schaltet wieder.

Jedes Mal, wenn die Preise nicht an der Basislinie liegen, hat die Nachfrage das Angebot überschritten, und ein erfolgreiches Gebot wird wahrscheinlich die Rate für alle erhöhen.

Der Spotmarkt ist ein grundsätzlich fairer Marktplatz. Jeder zahlt das Preisgebot des niedrigsten Bieters, dessen Anfrage erfüllt werden kann, außer anscheinend in Fällen, in denen die zugewiesene Kapazität nicht voll ausgelastet ist. In diesem Fall scheint ein für diese bestimmte Konfiguration festgelegter Mindestpreis anzuwenden zu sein .

Die einzigen wirklichen "Geheimnisse" bestehen darin, die für Sie geeigneten Standort-/Konfigurationskombinationen zu finden, die auch am wenigsten nachgefragt werden, und zu bieten, was diese Maschinen für Sie tatsächlich wert sind. Sie werden nicht mehr als das bezahlen, und manchmal werden Sie weniger bezahlen.

Offensichtlich ist es auch sinnvoll, nicht mehrere Computer auf die gleichen Spot-Anforderungen zu setzen, sondern die Gebotsbeträge zu staffeln, wenn mehrere identische Computer benötigt werden, aber nicht unbedingt alle ausgeführt werden müssen Direkt am Rand der Nachfragekurve erscheint , dass Ihr niedrigstes erfülltes Gebot in einigen Fällen das Gebot sein könnte, das den Marktpreis festlegt. Wenn Sie also im obigen Beispiel 0,04 USD und 0,036 USD geboten hätten, wäre der Markt auf 0,036 USD anstatt auf 0,04 USD zusammengewachsen, was uns alle nur ein bisschen pro Stunde erspart hätte.

3