Dlaczego cena spot AWS EC2 jest wyższa od ceny na żądanie?

27

Próbowałem wczoraj udostępnić instancje spot za pośrednictwem Ansible i prawie wszystkie moje żądania zakończyły się niepowodzeniem, nawet gdy podałem cenę spot == cenę na żądanie dla tej instancji.

Kiedy spojrzałem na wykres cen punktowych, znalazłem coś bardzo interesującego:

wprowadź opis zdjęcia tutaj

Cena spotowa instancji w us-east-1a jest większa niż cena na żądanie, co mnie pomyliło. [w rzeczywistości ~ 5 razy więcej]

Czy instancje spotowe nie są preferowane ze względu na niski koszt? Jeśli tak, to dlaczego cena jest wyższa niż cena na żądanie?

Według dokumentów AWS :

Instancje natychmiastowe zapewniają dostęp do niewykorzystanej pojemności Amazon EC2 po dużych zniżkach w stosunku do cen na żądanie.

Czy to oznacza również, że ludzie licytują cenę na żądanie? Jeśli tak, to dlaczego? Czy nie lepiej im jest z instancją na żądanie?

A może źle zrozumiałem pojęcie wystąpienia spotu?

Dawny33
źródło
Jeśli cena spotowa była zawsze niższa niż cena na żądanie, dlaczego w ogóle istniałaby cena na żądanie?
Zach Lipton
2
Zach, ponieważ Amazon może zakończyć twoje wystąpienie do woli, jeśli jest wyższy licytujący.
Xiong Chiamiov
1
Bez względu na to, jaki jest tego powód - możesz zminimalizować ryzyko, wdrażając reguły najlepszych praktyk dla instancji spotowych - aws.amazon.com/ec2/spot/getting-started - utwórz żądanie dla tylu typów instancji i tylu AZ jak to możliwe, w ten sposób możesz ograniczyć możliwość, że zapłacisz więcej. Jeśli zapłacisz nieco więcej w ułamku czasu i znacznie mniej we wszystkich innych przypadkach, jest to nadal korzystne dla Ciebie. Wygląda również na to, że algorytm z wieloma małymi instancjami może być znacznie bezpieczniejszy niż duże obciążenia pojedynczego węzła aws.amazon.com/ec2/spot/instance-advisor
Petr Chloupek

Odpowiedzi:

23

To jest naprawdę świetny przykład ludzi lekko nadużywających miejsca. Ludzie mówią: „Nasze obciążenie pracą jest naprawdę ważne, ale nie chcemy płacić pełnej ceny na żądanie”, więc ustalili cenę ofertową wyższą niż na żądanie, zakładając, że jest bardzo mało prawdopodobne, aby została zakończona, ale nadal chcą uzyskaj ofertę „najtańszej możliwej” ceny spot.

Zdarzały się przypadki, w których ludzie wprowadzali na przykład 1000 USD (mówiono mi o tym przynajmniej raz), ponieważ chcą korzyści z rynku kasowego. Oczywiście naturalnie w pewnym momencie pojawia się popyt i cena natychmiastowa SOARS, aby ludzie płacili więcej niż na żądanie.

Rynek spot działa w ten sposób, że Amazon ma wolne moce instancji X i liczą one od góry do dołu, aż zaspokoją zapotrzebowanie na wszystkie instancje X. „Cena” jest zatem najniższą ceną, za jaką mogą spełnić te X instancji.

Wyobraź sobie, że Amazon ma 10 000 instancji - odliczą do (powiedzmy) 0,43 $, dopóki nie zostaną spełnione 10 000 instancji. Ale jeśli ta podaż nagle spadnie do 100 przypadków, być może kilka osób ustali ceny ofertowe w wysokości 10 000 USD za 100 przypadków, nagle zapłacą te 10 000 USD za godzinę.

Tl; dr Zrozum, jak działa spot i ustaw limit, który jesteś gotów zapłacić.

Henz
źródło
12

Są dwa powody:

  • Czasami wielu użytkowników używa instancji spot (Pomyśl o przetwarzaniu wsadowym, uruchom 100 maszyn jako instancję spot i zrezygnuj).

  • Na przykład spot nie płacisz ceny licytacji, płacisz bieżącą cenę spot. Cena licytacyjna jest punktem odcięcia. Jeśli aktualna cena spot przekracza cenę licytacji, AWS zakończy to wystąpienie.

To ostatnie jest również powodem, dla którego niektórzy użytkownicy znacznie zawyżą ceny spot. Nie chcą, aby ich instancja zamykała się tak często, dlatego licytują cenę tak wysoką, że cena spot nigdy nie osiągnie. Ponieważ będą płacić tylko bieżącą cenę spot, instancja będzie znacznie tańsza w 99% przypadków.

Thern
źródło
Tak więc na tym zdjęciu w moim pytaniu cena spotowa wynosi 2,15 USD o 18:00, prawda? co oznacza, że ​​ludzie nadal płacą 2,15 USD za instancję, kiedy mogą zapłacić cenę na żądanie. Dlaczego tak?
Dawny33
1
zobacz moją odpowiedź (Zamierzam to opublikować)
Henry
@ Dawny33 Czasami cena podnosi się powyżej progu tylko przez krótki czas. Przejście z wyceny spot na żądanie wymaga odtworzenia instancji w normalnej instancji ec2. Jeśli cena ponownie spadnie, instancja na żądanie zostanie zniszczona, nowa instancja spot, itd. W ten sposób tracenie czasu może być przydatne. Niektórzy ludzie nie sądzą, że jest to warte wysiłku i będą korzystać tylko z instancji spotowych
Thern
6

Przydatne informacje pozwalające zrozumieć, dlaczego ktoś miałby licytować nad ceną na żądanie, można znaleźć we wstępie do wystąpień dodatkowych :

Instancje Spot można wykorzystać, aby zaspokoić okazjonalne potrzeby związane z dużymi możliwościami obliczeniowymi (pamiętaj, że domyślny limit dla Instancji Spot wynosi 100 w porównaniu do domyślnego limitu 20 dla Instancji na żądanie.) Jeśli twoje potrzeby są pilne, możesz określić wysoką cenę maksymalną (być może nawet wyższą niż cena na żądanie), która podniesie względny priorytet twojego żądania i pozwoli ci uzyskać dostęp do jak największej pojemności natychmiastowej, biorąc pod uwagę inne żądania i dostępną w danym momencie pojemność Spot Spot.

Jeśli masz ogromny wzrost popytu na twoją usługę (być może jest to link z innej popularnej strony - zobacz efekt Slashdot ), licytacja powyżej ceny na żądanie dla instancji spotowej pomoże ci uzyskać dostęp do znacznie większej liczby instancji, ponieważ odnotowane w dokumencie.

Oczywiście nie jest to zrównoważone na dłuższą metę i można uzyskać znacznie lepszą ofertę na obliczenia długoterminowe, po prostu kupując instancje na żądanie (a ponadto istnieje mniejsze ryzyko bicia się!).

Jeśli znajdujesz się w sytuacji, w której potrzebujesz dużej mocy obliczeniowej, szybko - bardziej niż można to zrobić po prostu kupując instancje na żądanie - overbid może mieć sens.

Aurora0001
źródło
3

Jeśli przyjrzysz się uważnie wykresom, zobaczysz, że skok jest zawsze bardzo krótki - wystarczy, aby zautomatyzowane systemy monitorowania napisane przez właściciela mogły z wdziękiem zakończyć te systemy. Ponadto od czasu do czasu zauważysz, że cena spada do zera natychmiast po skoku. Jest tak, ponieważ wszystkie systemy w tym centrum danych są używane tak jak systemy na żądanie, a brak systemów do wyceny spotowej powoduje, że cena wynosi zero.

Gdy wystąpienie spot zostanie oznaczone jako zakończone, komunikat informujący o tym będzie dostępny w systemie w lokalnym meta-danych uri pod adresem http://169.254.169.254/latest/meta-data/spot/termination-time . Upłyną 3 minuty . W większości przypadków wystarczy czasu, aby automatycznie obsłużyć wypowiedzenie. Licytacja powyżej ceny popytu jest konieczna tylko w przypadku wdrożeń, które wymagają więcej niż kilku minut, aby zakończyć z wdziękiem.

Jeśli nie można zaprojektować systemu tak, aby z wdziękiem kończył się, archiwizował dane itp. W 3 minuty, możesz ustawić stawkę wyższą niż cena popytu, aby zyskać na czasie. System można nawet zaprojektować w taki sposób, aby proaktywnie monitorował bieżącą cenę spotową i zamieniał się, zanim cena wzrośnie. Ale w tych czasach trzeba podjąć decyzję biznesową, ile jest warta czas, aby zakończyć z wdziękiem.

Głupotą jest płacenie 100 $ za godzinę przez 4-5 godzin w celu utrzymania systemu. Jeśli jednak zajmie to systemowi 30 minut, aby zakończyć wszystkie procesy z wdziękiem, możesz podjąć decyzję biznesową, ile warto potencjalnie utracić dane lub obniżyć poziom skalowanej usługi. Witryna e-commerce z zyskiem netto w wysokości 10 000 USD na godzinę może z pewnością zapłacić 1000 USD za utrzymanie 2 instancji dodatkowych przez 15 do 30 minut przy jednoczesnym uruchomieniu systemów popytu i archiwizacji danych.

Aplikacja internetowa może korzystać z Elastic Load Balancer, aby pomóc w automatycznym adresowaniu terminacji. Inteligentny implementator wprowadziłby zestaw skryptów do obsługi alertu. Mogą utrzymać 2 tanie instancje na żądanie, które są równoważone obciążeniem - a następnie użyć do pół tuzina systemów o średnim koszcie za pośrednictwem instancji spot, aby utrzymać wysoką wydajność i wydać mniej niż jeden system na żądanie o tej samej pojemności.

Pozostaw 3 z nich płacących do 100 USD za godzinę, a 3 z nich płacą tylko do połowy ceny na żądanie. Gdy AWS zakończy instancje, ELB dostosuje się automatycznie. Daje to automatycznemu systemowi godzinę na dostosowanie się za zaledwie 200 USD.

garyamort
źródło