EC2 t2.kredyt średni "oszczędnościowy" kalkulacja

Używam T2.średnia instancja. Jedna trzecia dnia robię intensywne obliczenia statystyczne i stwierdziłem, że reszta 2/3 czasu będę "zarabiać" kredyty w tempie 24 na godzinę.

Ale tak się nie dzieje. To jest moje użycie przez ostatnie dwa dni:

Wykorzystanie kredytu CPU

A to jest moje konto kredytowe:

Saldo kredytu CPU

Nie używałem go przez (więcej niż) dzień, aż do wczoraj 18: 00. Używam go intensywnie przez pięć godzin. Wtedy oczekiwałbym moje "konto" do kumulacji 24 kredytów na godzinę, ale przez 9-10 godzin prawie nic się nie dzieje, a następnie kumuluje się zgodnie z oczekiwaniami przez 9 godzin, a następnie znowu płasko.

Nie jestem w stanie rozgryźć, co się dzieje i czy jest to wina. Czy ktoś ma dobre wytłumaczenie?

EDIT: poniżej zamieściłem tydzień aktywności. Nadal nie mogę rozgryźć algorytmu:

Tydzień wykorzystania kredytu CPU Tydzień salda kredytu CPU

Author: user2523167, 2015-08-27

1 answers

Update: zasady używane do obliczania sald kredytowych CPU T2 zmieniły się tak, że problem powodujący to pytanie nie powinien już mieć wpływu.

Na podstawie opinii klientów zaktualizowaliśmy instancje T2 o nową Politykę alokacji kredytów CPU, która jest taka sama lub lepsza od poprzedniej polityki we wszystkich przypadkach.

...

Teraz zdobyte punkty CPU nie wygasają, dopóki instancja nie zostanie zakończona lub zatrzymana. Instancja T2 może nadal Zarabiaj do tego samego maksymalnego poziomu dozwolonego przez rozmiar instancji. Wartość Cpucreditusage będzie teraz wzrastać w każdej chwili, gdy aktualna wartość CPUCreditUsage będzie niższa od wartości bazowej i może wzrosnąć do maksymalnego dopuszczalnego rozmiaru instancji

Https://forums.aws.amazon.com/ann.jspa?annID=5196

H/T: W zeszłym tygodniu w AWS dla aktualizacji.

Oryginalna odpowiedź jest następująca.


[[3]] to pytanie wywołało u mnie sporo psychicznego niepokoju nad ostatnie kilka godzin, bo wykresy prawie mają sens, bazując na tym, co wiem o instancjach t2. [27]} prawie, ale nie do końca, {28]} i nie mogłem położyć palca na problemie. To najgorszy rodzaj. Szczególnie będąc wielkim fanem propozycji wartości oferowanych przez maszyny t2. Ale w końcu zrozumiałem, co tu się dzieje.

Jest jedna koncepcja kredytów CPU, której dokumentacja wydaje się nie wyjaśniać, ale matematyka się sprawdza, a Wyjaśnienie trzyma się ładnie pod obserwacje w świecie rzeczywistym:

Ostatnio zdobyte kredyty CPU są wydawane jako pierwsze, a nie jako ostatnie.

Czy porządek ma znaczenie? Tak. Do testów użyłem t2.micro (głównie dlatego, że miałem bezczynny, który działał przez kilka dni i potrzebował czegoś do zrobienia, i nie chciałem dodatkowych "początkowych" kredytów nowej instancji, aby przesłaniać obserwacje), ale wszystkie typy instancji w klasie t2 mają podobne zachowanie.

W Tle: W t2 Klasa, CPU credits są zdobywane z różną szybkością, ale CPU credits są używane z taką samą szybkością dla wszystkich typów wystąpień w klasie:

Kredyt CPU zapewnia wydajność pełnego rdzenia CPU przez jedną minutę.

T2.mikro i t2.małe mają tylko jeden rdzeń, więc mogą spalić do 1 kredytu na minutę lub 60 kredytów na godzinę, przy 100% wykorzystaniu procesora. T2.medium i t2.Duże są dwurdzeniowe, więc mogą spalić do 2 kredytów na minutę lub 120 kredytów na godzinę, przy 100% Wykorzystanie Procesora na obu rdzeniach.

Jeśli 1 kredyt = 100% 1 rdzenia przez 1 minutę, to 1 kredyt jest równy 20% 1 rdzenia przez 5 minut. Ponieważ interwał wykresu Cloudwatch jest co 5 minut, skonfigurowałem następujący test:

Na t2.micro, które działa od kilku tygodni bez praktycznie żadnego obciążenia, zainstalowałem lookbusy , poręczne narzędzie, które pozwala na uczynienie maszyny "zajętym" z parametrami, które podajesz - np. utrzymuj CPU na 20% wykorzystanie.
$ screen -S eat_cpu
$ ./lookbusy -v -c 20 -r fixed
Robi to dokładnie to, czego można się spodziewać, wypalając 1 CPU co 5 minut. Wykres" wykorzystanie kredytu CPU " potwierdza to, Pokazując 1 kredyt używany co 5 minut. (Wykres wykorzystania procesora i top potwierdzają 20%.) Ale co się dzieje z moim Saldem kredytowym? Wyczerpuje się o 1 kredyt co 5 minut. To wydaje się złe, prawda? To znaczy, tak, właśnie powiedziałem, że tyle używam, ale... Ja też mam zarabiać 6 kredyty na godzinę, więc powinno mi się zmniejszać tylko o 0,5 kredytów netto co 5 minut, prawda? Poczekaj... sprawdzam numery, jeszcze raz: zarabiam 6 na godzinę, wydaję 12 na godzinę, więc tak... wydaje się, że powinien to być spadek netto tylko o 6 na godzinę, a nie 12... prawda? Najwyraźniej coś nie sumuje się tak, jak się spodziewałem, ponieważ moje saldo zdecydowanie spada o 12 na godzinę, a mój procesor zdecydowanie działa tylko na 20%.

Wydaje mi się, że zarabiam żadnych Kredytów, by zrekompensować moje użycie. Jak to możliwe?

Chyba że...

Niewykorzystane punkty z danego 5-minutowego interwału wygasają 24 godziny po ich zdobyciu

Cóż, 24 godziny temu moja sprawa była całkowicie bezczynna. W ciągu tej godziny, zarobiłem 6 kredytów, które ja... nie?) use. Nie używam ich teraz? A nie powinnam?

Wszelkie wygasłe kredyty są usuwane z salda kredytów CPU w tym czasie, zanim nowo zdobyte kredyty zostaną Dodano

Crud. Czy to może być powiązane? W tej godzinie zarobiłem 6 nowych kredytów. Ale tuż przed tym straciłem 6 kredytów sprzed 24 godzin. Potem wydałem 12 kredytów w tej godzinie... więc moje saldo spadło o 6, w górę o 6 i w dół o kolejne 12. To wyjaśnia zmianę -12 na godzinę, ale... Czy to może być powód?

Jestem żarliwym czytelnikiem dokumentacji, więc wiedziałem o aspekcie wygasających kredytów... ale przez cały czas zakładałem, że to nic więcej niż powód, dla którego bezczynna instancja unosi się w pobliżu maksymalnej równowagi i nie ma żadnego innego znaczenia. Jak to możliwe? Jeśli mam mniej niż maksimum (6 x 24 = 144 dla t2.mikro) to jak Mogę mieć kredyty, które muszą wygasnąć?

Jeśli moje kredyty sprzed 24 godzin zawsze liczą się przeciwko mnie, Czy moje saldo nie będzie zmierzać do zera, niezależnie od tego, co robię?

Chyba że...

Po przewróceniu i przewróceniu przez większość nocy, kontemplując ślizganie się wokół stosów wyimaginowanych tokeny (reprezentujące kredyty CPU) na wyimaginowanym stole (reprezentującym czas)... Zdałem sobie sprawę, że zasada "wygasania" spowodowałaby dokładnie takie zachowanie, jakie obserwujemy, jeśli, wbrew intuicji, kredyty sąNie wydawane w kolejności, w jakiej zostały zarobione (FIFO), ale raczej w odwrotnej kolejności (LIFO).

Zgodnie z tą linią rozumowania, wytłumaczeniem tego, co mój test 20% CPU faktycznie robi, jest to, gdzie pierwsza godzina mojego testu to "godzina 0".]}
     | spends 6+6 credits  | expire 6 credits
test | earned this many    | earned this many
hour | hours before hour 0 | hours before hour 0
-----+---------------------+--------------------
 0       -1,  -2                   -24
 1       -3,  -4                   -23
 2       -5,  -6                   -22
 3       -7,  -8                   -21
 4       -9, -10                   -20
 5      -11, -12                   -19
 6      -13, -14                   -18
 7      -15, -16                   -17

Oraz spotykają się w środku.

Czy to jest prawdziwe, czy zgaduję? Nie zgaduję, a oto dowód:

Po 8 godzinach, mój wykres wykorzystania kredytu CPU pozostaje stały, nadal utrzymuje się na stałym poziomie 1 kredytu na 5 minut, ale po tych samych 8 godzinach, moje saldo kredytu CPU W końcu zaczyna się wyczerpywać w (wolniejszym) tempie, którego pierwotnie oczekiwałem: 0.5 kredytów co 5 minut.

Najwidoczniej, ponieważ pracowałem wstecz w czasie, wydając wcześniej zarobione kredyty "najpierw najnowsze", dogoniłem moje stare kredyty, które miały wygasnąć, w końcu dotarłem do punktu, w którym używałem ich, zanim miały szansę wygasnąć. Teraz, nie mam kredytów, które są 24 godziny na dobę, a więc żadne kredyty nie wygasają -- więc nie tracę kredytów, zanim nowe kredyty zostaną zarobione. Teraz jestem w stanie utrzymać 6, które zarabiam na godzinę, ponieważ zużyłem stare, zmniejszając wpływ netto na moje saldo kredytowe do oczekiwanego poziomu.

To wyjaśnia jedyną rezerwację, jaką miałem o wykresy w pytaniu: dlaczego, gdy spada zużycie, trwa tak długo, aby odbicie równowagi?

TheTL;DR odpowiedź jest taka: saldo nie odbija się od razu, po serii ciężkiego wykorzystania, ponieważ nadal masz niewykorzystane kredyty z 24 godzin przed, które są anulowanie nowo zarobione kredyty, aż do momentu, gdy nie masz żadnych 24-godzinne niewykorzystane kredyty. Gdy tak się stanie, saldo kredytu wzrasta ponownie.

Pozostaw instancję całkowicie bezczynną na 24 godziny, a w końcu zobaczysz, że saldo stale (w większości przypadków) ponownie wzrośnie do maksimum, zgodnie z oczekiwaniami. Wszystko mniej niż 24 godziny całkowicie bezczynne spowoduje, że równowaga pozostanie wiecznie gdzieś poniżej max.

Mój skrypt testowy w końcu wyczerpał moje saldo kredytowe prawie do końca w dół. Kiedy zabiłam proces zjadając procesor, saldo kredytu zaczęło się od razu odzyskiwać , w oczekiwanym stawka 6 kredytów na godzinę.

Odwrotnie, kiedy wziąłem inną maszynę, która widziała niskie wykorzystanie przez 24 godziny, i uruchomił procesor do 100% przez kilka minut, a następnie wziął go z powrotem do bezczynności, kredyty nie zaczęły gromadzić się natychmiast... równoważenie przez stare, wygasające.

Cytaty pochodzą z http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html .

 85
Author: Michael - sqlbot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 15:49:38