Procesor pokazuje sto procent: pytanie, które trzeba zadać przed odczytaniem liczby

Trzy różne liczby noszą tę samą nazwę: średnia od uruchomienia, narosła suma i różnica między dwiema próbkami. Tylko ta ostatnia odpowiada na pytanie o teraz.

AtlasPVE ·

Ten wpis odpowiada na

  • proxmox wysokie zużycie procesora
  • proxmox który proces zjada procesor
  • load average co to jest
  • jak czytać wyjście top
  • proxmox procesor na 100 procent

Patrzysz na panel i procesor wygląda wysoko. Zanim cokolwiek zrobisz, jest jedno pytanie do zadania: jaki okres opisuje ta liczba?

Bo trzy różne liczby noszą tę samą nazwę, a te trzy mówią różne rzeczy.

Trzy liczby o tej samej nazwie

Średnia od uruchomienia. Jeśli maszyna była obciążona przez trzy dni dwa miesiące temu, to obciążenie nadal siedzi w tej średniej. Nie odpowiada na pytanie o teraz.

Narosła suma. Nigdy nie maleje. Mówi o przeszłości, a nie o dziś.

Różnica między dwiema próbkami. Bierze się dwa pomiary i odczytuje zmianę między nimi. Tylko ta odpowiada na pytanie o teraz.

Klasyczna pułapka

Standardowe narzędzie wypisujące procesy pokazuje na pierwszym ekranie średnią od uruchomienia. Jeśli spojrzysz na ten pierwszy ekran i zadziałasz, ingerowałeś w przeszłość, a nie w dziś.

Właściwym sposobem jest wzięcie co najmniej dwóch próbek i odczytanie drugiej. Samo narzędzie nie jest błędne; błędny jest sposób odczytu.

Ten sam błąd przybiera wszędzie ten sam kształt

Ten kształt widzieliśmy w tej bazie wiedzy już dwa razy.

Przy zużyciu dysku mówiliśmy nie procent, tylko nachylenie: osiemdziesiąt pięć procent pozostałej żywotności oznacza na jednym dysku dziesięć lat, a na innym osiem miesięcy.

Przy odrzuconych pakietach mówiliśmy nie suma, tylko tempo: maszyna, która rok temu miała jedną złą godzinę, przez własny licznik wygląda na winną dożywotnio.

Przy procesorze jest to nie średnia, tylko różnica. Trzy różne miejsca, jeden błąd odczytu.

Da się to zapisać jako regułę ogólną: liczba bez podanego okna czasowego nie jest pomiarem. Zanim zadziałasz na podstawie jakiejkolwiek liczby, zapytaj, jakie okno obejmuje.

Gdy procesor naprawdę jest wysoko

Wtedy potrzebne jest drugie rozróżnienie: czy jedna maszyna jest zajęta, czy serwerowi brakuje?

To normalne, że maszyna wirtualna używa całego przydzielonego jej udziału. Jeśli dałeś jej dwa rdzenie i zapełniła te dwa rdzenie, system pracuje dokładnie tak, jak zaprojektowano.

Problemem jest chwila, w której serwer się nasyca: goście zaczynają nie dostawać tego, o co proszą, i wszyscy razem zwalniają.

Jest też coś często mylonego: obciążenie nie jest zużyciem procesora. Obciążenie liczy rzeczy czekające, a część z nich może czekać nie na procesor, tylko na dysk. Możliwe jest wysokie obciążenie przy bezczynnym procesorze, a to mówi ci, żebyś patrzył gdzie indziej.

Co robi Atlas

Wypisując najbardziej obciążające procesor procesy serwera, Atlas celowo bierze dwie próbki i odczytuje drugą.

Powodem jest dokładnie powyższa pułapka: pierwsza próbka niesie średnią od uruchomienia i pokazanie jej byłoby mylące. Różnica nie jest drobiazgiem; lista posortowana według pierwszej próbki przedstawia proces obciążony miesiące temu jako dzisiejszego winowajcę.

Kolejny drobny, ale uczciwy szczegół: wynik tego pomiaru jest krótko przechowywany, a żądania przychodzące jednocześnie są wiązane z jednym pomiarem. Powód: przy otwartej karcie odświeża się ona co kilka sekund, a rozpoczynanie nowego pomiaru przy każdym odświeżeniu obciąża serwer bez potrzeby.

To ta sama zasada co we wpisie o temperaturze: to, co obserwuje, nie powinno być tym, co kosztuje.

Źródła

Własna dokumentacja Proxmoksa. Po angielsku i to ona ma ostatnie słowo w tej sprawie.

Powiązane wpisy

Jak to wygląda wewnątrz Atlasa?

Przejdź do strony produktu