EC2-t2.medium burstable Kredit "Einsparungen" Berechnung
Bin ich mit einem T2.medium-Instanz. Ein Drittel des Tages, ich Tue, intensive statistische Berechnungen und dachte, dass die restlichen 2/3 der Zeit würde ich "verdienen" Kredite in Höhe von 24 pro Stunde.
Aber das ist nicht passiert. Dies ist mein Verbrauch der letzten zwei Tage:
Und das ist mein credit-Konto:
Ich hatte nicht verwendet es für (mehr als) einen Tag, bis gestern 6 Uhr. Ich nutze es intensiv für fünf Stunden. Dann würde ich erwarten, dass mein "Konto" zu acummulate 24 credits pro Stunde, aber für 9-10 Stunden fast nichts passiert, dann ist es acummulate wie erwartet, für 9 Stunden und dann geht es wieder flach.
Ich bin nicht in der Lage, um herauszufinden, was Los ist und wenn es ist ein Fehler. Weiß jemand ne gute Erklärung?
EDIT: ich habe eine Woche der übung unten. Ich kann immer noch nicht herausfinden, der algoritm:
Es läuft schon seit ein paar Wochen und nicht schon viel genutzt, noch seltener ist als beschrieben. Und es erreicht nie die maximal zulässige credits. BTW, Dank für die zeigen, wie zu verwenden imgur für die inline-Bilder 🙂
Keine chance zu sehen, den passenden CPU-charts? Die Instanz sein könnte, verbrauchen das Guthaben in gleicher Höhe, wie Sie vorgesehen sind.
InformationsquelleAutor user2523167 | 2015-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update: Die Regeln zur Berechnung von t2 CPU-Guthaben angezeigt wird, geändert haben, so dass die Ausgabe der Aufforderung auf diese Frage sollte nicht mehr haben einen Einfluss.
h/t: Letzte Woche in AWS für das update.
Hier die originalantwort.
Diese Frage hat mich veranlasst, mich ein bisschen seelischen Schmerz in den letzten Stunden, da die Graphen fast Sinn machen, basiert auf dem, was ich weiß über die t2 Instanzen. Fast, aber nicht ganz, und ich konnte nicht meine finger auf das problem. Das ist die Schlimmste Art. Besonders als großer fan der value proposition angeboten von t2-Maschinen.
Aber ich wollte endlich herausfinden, was hier Los ist.
Gibt es ein Konzept, der die CPU-credits in der Dokumentation scheint es nicht zu erklären, aber die Mathematik funktioniert und die Erklärung hält sich schön unter realen Beobachtungen:
Die meisten vor kurzem verdiente CPU credits ausgegeben werden erste, nicht die Letzte.
Bestellen egal? Es funktioniert.
Zum testen habe ich einen t2.micro (vor allem weil ich hatte im Leerlauf eine, die ausgeführt worden sind, für mehrere Tage, und brauchte etwas zu tun, und ich wollte nicht, dass die extra "initial" - credits, eine neue Instanz zu vernebeln der Beobachtungen), aber alle instance-Typen in der t2-Klasse haben ein ähnliches Verhalten.
Hintergrund: in der t2-Klasse, die CPU-credits verdient werden, zu unterschiedlichen Preisen, aber die CPU-credits werden auf die gleiche rate für alle instance-Typen in der Klasse:
Den t2.Mikro-und t2.die kleinen haben nur einen Kern, so dass Sie brennen können bis zu 1 credit pro minute oder 60 credits pro Stunde, bei 100% CPU-Auslastung. Die t2.medium und t2.große dual-core, so dass Sie brennen können bis zu 2 credits pro minute oder 120 credits pro Stunde, bei 100% CPU Auslastung auf beiden cores.
Wenn 1 credit = 100% der 1-Kern für 1 minute, dann 1 credit ist es auch gleich 20% der 1-Kern für 5 Minuten. Da die Cloudwatch-graph Intervall ist in 5 Minuten-Schritten, stellte ich den folgenden test:
Auf einem t2.micro, das läuft schon seit mehreren Wochen mit im wesentlichen keine Last, die ich installiert lookbusy, ist ein handliches Dienstprogramm, das Ihnen erlaubt, eine Maschine zu machen "beschäftigt auszusehen" mit den Parametern, die Sie angeben -- e.g, halten die CPU bei 20% Auslastung.
Dieser genau das tut, was Sie erwarten würde, Verbrennung von 1 CPU Kredit alle 5 Minuten. Die "CPU-Credit-Verwendung" Diagramm bestätigt dies, zeigt 1 Kredit verwendet wird, alle 5 Minuten. (Die CPU-Auslastung von Graphen und die
top
beide bestätigen die 20%.)Aber was passiert mit meinem Guthaben? Ist es aufgebraucht, indem Sie 1 credit pro 5 Minuten. Das scheint falsch, nicht wahr? Ich meine, ja, ich sagte nur, dass so viele, die ich verwende, aber... ich bin auch angeblich verdienen werden 6 credits pro Stunde, also sollte ich nur das aufbrauchen von balance durch ein Netz von 0,5 credits alle 5 Minuten, richtig?
Halten... überprüfen die zahlen wieder: ich Verdiene 6 pro Stunde, Ausgaben 12, - pro Stunde, also, ja... das scheint, wie es sein sollte, ein Netto-Rückgang von nur 6 pro Stunde, nicht 12... richtig? Klar, etwas nicht addieren die Weise, die ich erwartet hatte, denn meine Bilanz ist definitiv unten durch 12 pro Stunde, und meine CPU ist auf jeden Fall nur bei 20%.
Scheine ich zu verdienen, ohne Kredite ausgleichen meiner Nutzung. Wie ist das möglich?
Es sei denn...
Gut, 24 Stunden her, mein Beispiel war komplett im Leerlauf. Während dieser Stunde, verdiente ich 6 credits, die ich... nicht (?) verwenden. Bin ich nicht mit Ihnen jetzt? Darf ich nicht?
Crud. Könnte das damit zusammenhängen? Diese Stunde, erwarb ich 6 neue Kredite. Aber gerade vor, dass ich verloren 6 credits von 24 Stunden. Dann verbrachte ich 12 credits dieser Stunde... so mein Gleichgewicht, wenn um 6, um 6, und unten von einem anderen 12. Gut, das erklärt die -12 ändern für die Uhrzeit, aber...
Kann das der Grund sein?
Ich bin ein unersättlicher Leser der Dokumentation, so dass ich wusste, dass über die auslaufenden Kredite Aspekt... aber ich hatte angenommen, dass dies war nichts weiter als der Grund, im Leerlauf Instanz schwebt in der Nähe seine maximale balance, und hatte keine andere Bedeutung. Wie könnte es? Wenn ich weniger als die maximale (6 x 24 = 144 für einen t2.Mikro), dann, wie konnte ich das nur credits die Notwendigkeit zu verfallen?
Wenn mein Guthaben von 24 Stunden sind immer das zählen gegen mich, wäre das nicht mein Gleichgewicht tendieren gegen null, unabhängig davon, was ich tun?
Es sei denn...
Nach dem werfen und drehen die meisten der Nacht, während der Betrachtung Verrutschen die Stapel von imaginären Token (die CPU-credits) auf eine imaginäre Tischplatte (die Zeit)... ich erkannte, dass der "Ablauf" - Regel würde dazu führen, genau das Verhalten, das wir beobachten, wenn, counter-intuitiv, credits nicht ausgegeben, in der Reihenfolge, in der Sie verdient werden (FIFO), sondern in umgekehrter Reihenfolge (LIFO).
Folgenden, dass die Argumentation, die Erklärung für das, was meine 20% CPU-test tatsächlich tun, ist dies, wo die erste Stunde von meinem test war die "Stunde 0" --
Und Sie in der Mitte treffen.
Ist das echt, oder bin ich da zu raten? Ich bin nicht erraten, und hier ist der Beweis:
Nach 8 Stunden meine CPU Kredit-Nutzung-graph bleibt solide, hält immer noch stabil bei 1 credit pro 5 Minuten, aber nach dem gleichen 8 Stunden, meine CPU credit balance schließlich beginnt, zum Abbau auf der (langsameren) rate ich ursprünglich erwartet: 0,5 Punkte alle 5 Minuten.
Scheinbar, wie ich arbeitete rückwärts in der Zeit, die Ausgaben, die zuvor verdienten credits "neueste zuerst," ich fing mit meinem alten Guthaben, die im Begriff waren zu verfallen, schließlich der Punkt erreicht, wo ich war mit Ihnen, bevor Sie eine chance hatte, zu verfallen. Nun, ich habe keine Kredite, die sind 24 Stunden alt, und so keine credits ablaufen-so bin ich nicht mehr verlieren credits, bevor neue Kredite sind verdient. Ich bin jetzt in der Lage zu halten, die 6, die ich in der Stunde verdienen, weil ich die alten, die Verringerung der Netto-Auswirkungen auf mein Guthaben auf dem erwarteten Niveau.
Erklärt dies die einzige Buchung hatte ich über die Diagramme in der Frage: warum, wenn die Auslastung abfällt, dauert es so lange, die balance zu erholen?
Den TL;DR Antwort ist diese: die balance nicht rebound sofort, nach einem Ausbruch von hoher Auslastung, denn Sie haben noch ungenutzte Guthaben von 24 Stunden vor, die Annullierung von Ihrem neu verdienten credits, bis Sie den Punkt erreichen, in der Zeit, wenn Sie über keine 24-Stunden-alten, ungenutzten credits. Wenn das passiert, wird Ihr Guthaben erhöht sich wieder.
Verlassen der Instanz komplett im Leerlauf für 24 Stunden und sehen Sie schließlich das Gleichgewicht ständig (zum größten Teil) steigen, um das maximale wieder, wie erwartet. Etwas weniger als 24 Stunden vollständig im Leerlauf dazu führen, dass Ihr Gleichgewicht zu bleiben, ständig werden irgendwo unterhalb der max.
Mein test-Skript schließlich erschöpft mein Guthaben fast alle dem Weg nach unten. Wenn ich getötet der Prozess Essen die CPU, der Guthaben begann sich zu erholen sofort, auf die erwartete rate von 6 credits pro Stunde.
Umgekehrt, wenn ich eine andere Maschine, die gesehen hatten, geringer Auslastung für 24 Stunden, und es lief die CPU auf 100% für ein paar Minuten, dann nahm Sie es zurück in den Leerlauf, die Kredite nicht zu akkumulieren beginnen, immedately... kompensiert durch die alten, auslaufenden lieben.
Sind Zitate aus http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html.
ja, die ersten Kredite waren schon lange nicht mehr. Ich habe absichtlich verwendet, eine Instanz, die läuft schon seit mehreren Monaten, hatte aber keine aktuelle Arbeitsauslastung, als auf die Einführung einer neuen, aus genau diesem Grund.
Great write up und sehr gründlich. Wird auf jeden Fall wieder kommen, wenn Sie benötigen einen refresh.
Der solide, gründlich, Beweis-vollständige Erklärung forderte mich auf bookmark diese für die regelmäßige Aktualisierung in der Zukunft. +1
Corey Quinn newsletter an Sie gebunden - vermutlich unter anderem? lastweekinaws.com
InformationsquelleAutor Michael - sqlbot