Polecenie „top” systemu Linux: Czym są nas, sy, ni, id, wa, hi, si i st (do użycia procesora)?


195

Kiedy wydaje się topw systemie Linux, otrzymuję wynik podobny do tego:

Zrzut ekranu z góry

Jedna z linii ma informacje o zużyciu procesora przedstawione w następujący sposób:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Chociaż znam definicje każdego z nich (znacznie poniżej), nie rozumiem, co dokładnie oznaczają te zadania.

  • hi - co oznacza serwisowanie przerwań sprzętowych?
  • si - co oznacza przerwanie serwisowania oprogramowania?
  • st - mówią, że to „czas procesora na mimowolne oczekiwanie przez wirtualny procesor, podczas gdy hiperwizor obsługuje inny procesor (lub)% czasu procesora skradzionego z maszyny wirtualnej”.

Ale co to właściwie znaczy? Czy ktoś może być bardziej przejrzysty?

I wymienione wszystkie us, sy, ni, itp, ponieważ może to pomóc innym szukając samo. Tych informacji nie ma na stronach podręcznika.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine

Odpowiedzi:


92

hito czas spędzony na przetwarzaniu przerwań sprzętowych. Przerwania sprzętowe są generowane przez urządzenia sprzętowe (karty sieciowe, kontroler klawiatury, zegar zewnętrzny, czujniki sprzętowe, ...), gdy muszą coś zasygnalizować CPU (na przykład dane dotarły).

Ponieważ mogą się to zdarzać bardzo często i ponieważ zasadniczo blokują one bieżący procesor podczas ich działania, programy obsługi przerwań sprzętowych jądra są napisane tak, aby były tak szybkie i proste, jak to możliwe.

Jeśli konieczne jest wykonanie długiego lub złożonego przetwarzania, zadania te są odraczane za pomocą wywołania mechanizmu softirqs. Są one planowane niezależnie, mogą działać na dowolnym procesorze, mogą nawet działać jednocześnie (nie dotyczy to sprzętowych programów obsługi przerwań).

Część o twardych przerwaniach blokujących bieżący procesor oraz część dotycząca softirqsmożliwości uruchamiania w dowolnym miejscu nie są dokładnie poprawne, mogą istnieć ograniczenia, a niektóre twarde przerwania mogą przeszkadzać innym.

Na przykład przerwanie sprzętowe „odebrane dane” z karty sieciowej może po prostu przechowywać informację „karta EthX wymaga serwisowania” gdzieś i zaplanować softirq. softirqByłoby rzeczą, która wyzwala rzeczywiste routingu pakietów.

sireprezentuje czas spędzony w nich softirqs.

Dobra lektura na temat softirqmechanizmu (także z odrobiną historii) to Matthew Wilcox's I'm Do It Later: Softirqs, Tasklets, Bottom Halfves, Queues Tasks, Work Queues and Timers (PDF, 64k).

st, „czas kradzieży”, dotyczy tylko środowisk zwirtualizowanych. Reprezentuje czas, w którym rzeczywisty procesor nie był dostępny dla bieżącej maszyny wirtualnej - został „skradziony” z tej maszyny wirtualnej przez hiperwizora (w celu uruchomienia innej maszyny wirtualnej lub na własne potrzeby).

Dokument rozliczania czasu procesora od IBM zawiera więcej informacji na temat czasu kradzieży i rozliczania procesora w środowiskach zwirtualizowanych. (Jest skierowany do sprzętu typu zSeries, ale ogólny pomysł jest taki sam dla większości platform).


bardzo czyste. Tak więc, jeśli podłączę nowy system dźwiękowy, zestaw słuchawkowy itp. (Dowolny sprzęt w tym zakresie), spowoduje to również przerwanie sprzętowe, prawda?
its_me

2
Tak, może to być sposób na zasygnalizowanie przez twój mikroukład dźwiękowy, że „coś się wydarzyło”. Ale podłączenie zestawu słuchawkowego może być rozwiązane całkowicie przez sam układ dźwiękowy (na przykład przekierowanie wyjścia dźwięku z wyjścia głównego do słuchawek), więc może nie generować przerwy w głównym procesorze. Wpisanie klawisza na klawiaturze wygeneruje jednak przerwania (z urządzenia USB hub, jeśli masz klawiaturę USB). Zobacz także cat /proc/interrupts( man procdokument dla tego pliku).
Mat.

15
  • nas - czas spędzony w przestrzeni użytkownika
  • sy - Czas spędzony w przestrzeni jądra
  • ni - Czas spędzony na uruchamianiu niszowych procesów użytkownika (priorytet zdefiniowany przez użytkownika)
  • id - czas spędzony na bezczynności
  • wa - Czas spędzony na czekaniu na urządzeniach peryferyjnych IO (np. dysku)
  • hi - Czas spędzony na obsłudze procedur przerwań sprzętowych. (Ilekroć jednostka peryferyjna potrzebuje uwagi od procesora, dosłownie ciągnie linię, aby zasygnalizować procesorowi obsługę)
  • si - Czas spędzony na obsłudze procedur przerwań oprogramowania. (fragment kodu, wywołuje procedurę przerwania ...)
  • st - Czas spędzony na mimowolnym oczekiwaniu wirtualnego procesora, gdy hiperwizor obsługuje inny procesor (skradziony z maszyny wirtualnej)

2

Wartość „st” można po prostu wyjaśnić za pomocą wystąpienia T2.micro EC2 z AWS.

W dokumentacji AWS można przeczytać, że uzyskuje się tylko 10% wydajności bazowej na VCPU. Oznacza to, że jeśli masz proces, który zużyłby dużo czasu procesora, wartość „st” pozostanie około 90, ponieważ możesz używać tylko 10% VCPU. Suma pozostałych wartości pozostanie około 10.

Tak więc AWS korzysta z hiperwizora, aby umożliwić ci dostęp do pewnej mocy obliczeniowej. Spowalnia cię celowo, ponieważ używasz tylko instancji niskiego poziomu.

Mam nadzieję, że dzięki temu wszystko będzie trochę łatwiejsze do zrozumienia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.