Wissensdatenbank

Diebstahl von Zeit und warum deine Null anzeigt

Steal Time ist das Eingeständnis des Hypervisors, dass ein anderer Gast deinen Kern genommen hat; bei dedizierten Kernen gibt es nichts zu nehmen, also ist der nützliche Teil, was man stattdessen prüfen sollte.

Woher die Zahl stammt

%st in top ist der Anteil der Zeit, in der Ihre virtuelle CPU rechenbereit, aber nicht auf einem physischen Kern eingeplant war, wie vom Hypervisor gemeldet. Den Zähler gibt es, weil ein Gast sonst nicht zwischen einem langsamen Kern und einem Kern, den er nie erhalten hat, unterscheiden kann.

top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5

Der Rohwert für alle, die ihn selbst grafisch auswerten möchten, ist das achte Feld der cpu-Zeile in /proc/stat, angegeben in USER_HZ:

grep -w cpu /proc/stat

Warum er hier Null ist

Kerne werden einmal zugewiesen. Eine vCPU Ihrer Instanz ist an einen physischen Kern gebunden, der in keiner anderen Zuweisung liegt, auf einem Host, der nicht überbucht ist. Es gibt also keine Warteschlange, in der man warten müsste – kein niedriger Wert, kein Guthaben, das am vierten Tag des Monats aufgebraucht ist – nichts zu stehlen.

Wenn Ihrer nicht Null ist, ist das ein Defekt, und wir wollen das Ticket. Fügen Sie eine mpstat -P ALL 5 12-Ausgabe und die Instanz-ID hinzu.

Warum die Werte anderer nicht Null sind

Burstable-Pläne basieren auf Steal-Zeit. Mehrere Gäste teilen sich einen Kern, jeder hat ein Guthaben, und wenn das Guthaben aufgebraucht ist, gibt der Scheduler den Kern an jemand anderen ab. Ehrlich verkauft, ist das ein legitimes Produkt für Workloads, die im Leerlauf sind. Das hier ist es nicht. Wir haben die günstige Stufe 2021 entfernt, und mit ihr verschwand das Overselling.

Was zu prüfen ist, wenn die Maschine sich trotzdem langsam anfühlt

Steal ist das Erste, worauf alle schauen, und selten die Antwort. In der Reihenfolge der Wahrscheinlichkeit:

Run-Queue

vmstat 1 5

Mehr lauffähige Threads als Kerne in der r-Spalte bedeutet, dass Ihnen schlicht die CPU ausgeht. Kein Feintuning erfindet einen weiteren Kern.

Festplatte

iostat -x 1 5

%iowait steigt, während die Benutzerzeit niedrig bleibt, deutet auf Speicher hin, nicht auf den Prozessor.

Ihre eigene cgroup

Das ist die Falle. Ein Container mit CPU-Kontingent fühlt sich von innen genau wie Steal-Zeit an und meldet Steal Null, weil die Begrenzung Ihre ist und nicht unsere:

cat /sys/fs/cgroup/cpu.stat

Wenn nr_throttled und throttled_usec steigen, ist das von Ihrem eigenen Orchestrator gesetzte Kontingent die Obergrenze. Erhöhen Sie es oder entfernen Sie es.

Frequenz

Boost-Takt bewegt sich mit der Workload, und ein Single-Thread-Test ist der ehrliche Weg, um zu sehen, wo Sie tatsächlich stehen:

apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Vergleichen Sie die Ereignisse-pro-Sekunde-Zahl mit einer anderen Instanz, nicht mit einer Zahl aus irgendeinem Blogbeitrag von 2019.

Gast- und verschachtelte Spalten

%guest und %gnice sind nur dann ungleich Null, wenn Sie virtuelle Maschinen in Ihrer Instanz ausführen. Verschachtelte Virtualisierung ist auf den größeren EPYC-Plänen und auf Bare Metal verfügbar; prüfen Sie auf das Gerät, bevor Sie Ihr Design darauf aufbauen:

ls -l /dev/kvm

Die Kurzfassung

Hohes r bei fast hundert Prozent Benutzerzeit ist die CPU. Hohes %iowait ist die Festplatte. cpu.stat zählt Throttles und ist Ihr eigenes Kontingent. Steal ungleich Null sind wir – und das sollte nicht passieren.

Bereit, wenn Sie es sind

Wählen Sie eine Stadt. Wählen Sie eine Größe. Bezahlen Sie in Coins.

Keine Formulare darüber, wer Sie sind, kein Warten auf einen Menschen, der Sie genehmigt, kein Anruf zur Verifizierung. Die Rechnung wird beglichen, und die Zugangsdaten landen in Ihrem Posteingang.