Skąd się bierze ta liczba
%st w top to udział czasu, w którym Twój wirtualny procesor był gotowy do uruchomienia, ale nie został zaplanowany na fizycznym rdzeniu, zgodnie z raportem hiperwizora. Licznik istnieje, ponieważ gość nie może w inny sposób odróżnić wolnego rdzenia od rdzenia, którego nigdy nie otrzymał.
top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5Surowa wartość, dla tych, którzy chcą ją samodzielnie wykreslić, to ósme pole linii cpu w /proc/stat, liczone w USER_HZ:
grep -w cpu /proc/statDlaczego tutaj jest zero
Rdzenie są przydzielane raz. vCPU Twojej instancji jest przypisany do fizycznego rdzenia, który nie jest w alokacji nikogo innego, na hoście, który nie jest nadsubskrybowany, więc nie ma kolejki do oczekiwania. Nie niska wartość, nie saldo kredytów, które wyczerpuje się czwartego dnia miesiąca — nic do ukradzenia.
Jeśli Twoja wartość nie jest zerowa, to jest to defekt i chcemy zgłoszenie. Dołącz wynik mpstat -P ALL 5 12 oraz identyfikator instancji.
Dlaczego u innych nie jest zero
Plany burstable są zbudowane na czasie kradzionym. Kilku gości współdzieli rdzeń, każdy ma saldo kredytów, a gdy saldo się wyczerpie, scheduler oddaje rdzeń komuś innemu. Sprzedawane uczciwie, to legalny produkt dla obciążeń, które są bezczynne. To nie ten produkt. Usunęliśmy tanią warstwę w 2021 roku i overselling zniknął razem z nią.
Co sprawdzić, gdy maszyna działa wolno mimo wszystko
Steal to pierwsza rzecz, na którą wszyscy patrzą, i rzadko jest odpowiedzią. W kolejności prawdopodobieństwa:
Kolejka procesów
vmstat 1 5Więcej wątków gotowych do uruchomienia niż rdzeni, w kolumnie r, oznacza, że po prostu skończył się procesor. Żadne dostrajanie nie stworzy kolejnego rdzenia.
Dysk
iostat -x 1 5%iowait rośnie, podczas gdy czas użytkownika pozostaje niski, wskazuje na pamięć masową, a nie na procesor.
Własna cgroup
To jest to, co łapie ludzi. Kontener z limitem CPU odczuwa to dokładnie tak jak time steal od wewnątrz procesu i raportuje zerowy steal, ponieważ limit jest Twój, a nie nasz:
cat /sys/fs/cgroup/cpu.statnr_throttled i throttled_usec rosnące oznaczają, że limit ustawiony przez Twój własny orchestrator jest sufitem. Podnieś go lub usuń.
Częstotliwość
Zegary boost zmieniają się wraz z obciążeniem, a test jednowątkowy jest uczciwym sposobem na sprawdzenie, gdzie faktycznie jesteś:
apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runPorównaj liczbę zdarzeń na sekundę z inną instancją, a nie z liczbą z czyjegoś wpisu na blogu z 2019 roku.
Kolumny guest i nested
%guest i %gnice są niezerowe tylko wtedy, gdy uruchamiasz maszyny wirtualne wewnątrz swojej instancji. Wirtualizacja zagnieżdżona jest dostępna w większych planach EPYC i na bare metalu; sprawdź urządzenie, zanim zaprojektujesz wokół niego:
ls -l /dev/kvmKrótka wersja
Wysokie r z czasem użytkownika bliskim stu procentom to procesor. Wysokie %iowait to dysk. cpu.stat liczące throttlingi to Twój własny limit. Niezerowy steal to my i nie powinien mieć miejsca.