Waar het getal vandaan komt
%st in top is het aandeel van de tijd dat uw virtuele CPU uitvoerbaar was maar niet gepland werd op een fysieke core, zoals gerapporteerd door de hypervisor. De teller bestaat omdat een gast anders niet het verschil kan zien tussen een trage core en een core die hij nooit kreeg.
top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5De ruwe waarde, voor wie hem zelf wil grafieken, is het achtste veld van de cpu-regel in /proc/stat, geteld in USER_HZ:
grep -w cpu /proc/statWaarom het hier nul is
Cores worden in één keer toegewezen. Een vCPU op uw instantie is vastgepind aan een fysieke core die in niemands anders toewijzing zit, op een host die niet overboekt is, dus er is geen wachtrij om in te wachten. Niet een laag getal, niet een tegoed dat op de vierde dag van de maand opraakt — niets te stelen.
Als die van u niet nul is, is dat een defect en we willen de ticket. Voeg een mpstat -P ALL 5 12 run toe en het instantie-ID.
Waarom de cijfers van anderen niet nul zijn
Burstable plannen zijn gebouwd op steal time. Meerdere gasten delen een core, elk heeft een tegoed, en wanneer het tegoed leeg raakt geeft de planner de core aan iemand anders. Eerlijk verkocht is dat een legitiem product voor workloads die idle zijn. Het is niet deze. We hebben de goedkope laag in 2021 verwijderd en de overselling ging mee.
Wat te controleren als de machine toch traag aanvoelt
Steal is het eerste waar iedereen naar kijkt en zelden het antwoord. In volgorde van waarschijnlijkheid:
Run queue
vmstat 1 5Meer uitvoerbare threads dan cores, in de r-kolom, betekent dat u simpelweg geen CPU meer heeft. Geen enkele tuning verzint een extra core.
Schijf
iostat -x 1 5%iowait stijgt terwijl gebruikers tijd laag blijft, wijst op opslag, niet op de processor.
Uw eigen cgroup
Dit is degene die mensen betrapt. Een container met een CPU-quota voelt van binnenuit precies als steal time en rapporteert nul steal, omdat de limiet van u is in plaats van van ons:
cat /sys/fs/cgroup/cpu.statnr_throttled en throttled_usec stijgen betekent dat het quota dat uw eigen orchestrator instelt het plafond is. Verhoog het of verwijder het.
Frequentie
Boost klokken bewegen mee met de workload, en een single-threaded test is de eerlijke manier om te zien waar u werkelijk zit:
apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runVergelijk het events-per-seconde cijfer met een andere instantie in plaats van met een getal uit iemands blogpost uit 2019.
Gast- en geneste kolommen
%guest en %gnice zijn alleen niet-nul wanneer u virtuele machines binnen uw instantie draait. Geneste virtualisatie is beschikbaar op de grotere EPYC-plannen en op bare metal; controleer het apparaat voordat u eromheen ontwerpt:
ls -l /dev/kvmDe korte versie
Hoog r met gebruikers tijd nabij honderd procent is de CPU. Hoog %iowait is de schijf. cpu.stat telt throttles en is uw eigen quota. Niet-nul steal is ons probleem, en het zou niet mogen gebeuren.