Jak może istnieć średnia wartość obciążenia 0,00?

12

Rozumiem, że bilans obciążenia jest sposobem pomiaru obciążenia procesora. Nie rozumiem jednak, w jaki sposób 0.00może istnieć średnia obciążenia . Czy jądro nie zawsze działa? Czy to nie bierze udziału w obciążeniu procesora?

NerdOfLinux
źródło
6
Zauważ, że w większości przypadków to, co widzisz jako 0,00, to tak naprawdę 0,0001 lub mniej więcej
PlasmaHH
1
W dawnych czasach była to średnia długość kolejki uruchamiania. Innymi słowy, ile procesów było gotowych do wykonania (i nie czekając na We / Wy itp.). Jeśli nie ma, jest to 0,00. Z moich doświadczeń wynika, że ​​jest to możliwe tylko wtedy, gdy nie uruchamiasz pulpitu graficznego, a jedynie serwer bez graficznego interfejsu użytkownika.
Thorbjørn Ravn Andersen
Dla kompletności, myślę, że był to jeden z BSD, które przez jakiś czas miały błąd jądra, w którym wątek bezczynności jądra był liczony do średniej obciążenia, powodując średnią obciążenie 1,00, gdy system w ogóle nic nie robił. Naprawiono to dość szybko.
CVn

Odpowiedzi:

16

Przeciętne obciążenie w danym okresie to średnia liczba procesów, które rywalizowały o procesor w tym okresie. „Jądro” nie działa, jeśli nie ma nic do zrobienia; dokładniej, jeśli nie ma nic do zrobienia, procesor otrzymuje specjalny „bezczynny” wątek, który nie jest liczony (i który może robić takie rzeczy, jak umieszczenie procesora w stanie oczekiwania na przerwanie).

Na przykład średnia wartość obciążenia wynosząca 0,6 w ciągu 5 minut zazwyczaj oznacza, że ​​w ciągu tych 5 minut procesor był używany przez 3 minuty przez niektóre procesy (lub jądro) i łącznie przez 2 minuty był bezczynny. Ale, jak zauważa @UKMonkey, może to oznaczać, że po 4 i pół minuty nic nie robienia, 6 procesów rywalizowało o procesor przez ostatnie 30 sekund ...

Procesor jest bezczynny, ponieważ nie ma procesu, który chciałby go użyć do uruchomienia kodu, ponieważ wszystkie procesy albo czekają na zakończenie operacji wejścia lub wyjścia, albo śpią, czekając na przebudzenie w określonym czasie w przyszłości.

Łącza @ Panther zapewniają bardziej szczegółowe dyskusje na temat średnich obciążeń.

AlexP
źródło
1
Przeciętne obciążenie 0,6 przez 5 minut może również oznaczać, że nic nie robiło przez 4 i pół minuty - a następnie w ciągu ostatnich 30 sekund było wiele procesów oczekujących na czas procesora ... To nie jest wskazanie, ile pracy Procesor zrobił - ale ile procesów czekało na jego użycie.
UKMonkey,
@UKMonkey: Idealnie prawdziwe ... Średnie są średnimi i taką samą średnią można uzyskać na wiele sposobów. Zredagowałem odpowiedź, aby wyjaśnić, że umiarkowana średnia nie oznacza, że ​​szczyty są również uzasadnione.
AlexP,
13

Średnia obciążeń jest miarą obciążenia procesora rdzeniem pod względem liczby procesów, które chcą go jednocześnie wykorzystać.

Następujące zakładają procesor z jednym rdzeniem (jednym wątkiem):

  • 0,0

    Procesor nic nie robi. Gdyby proces zaczął używać procesora, byłby to jedyny, który go używa.

    Bezczynny procesor nie oznacza, że ​​nie działają żadne procesy. Na przykład usługi w tle i jądro nadal działają i nadal zajmują pamięć. Po prostu nie używają żadnego procesora, ponieważ nic nie robią.

  • 1.0

    Procesor jest w maksymalnym użyciu, ale między procesami o wykorzystanie procesora nie ma rywalizacji. Oznacza to, że działa tylko jeden proces, więc jest w stanie odzyskać 100% czasu procesora. Alternatywnie działa wiele procesów, ale żaden nie żąda 100% mocy procesora, a ich łączne użycie procesora stanowi 100%. Wszystkie nadal działają tak szybko, jak działałyby, nawet gdyby miały procesor dla siebie.

  • Większy niż 1,0

    Procesor jest w maksymalnym użyciu i istnieje wiele procesów, które chcą go używać jednocześnie, więc działają efektywniej wolniej niż w przeciwnym razie mogłyby działać na bezczynnym procesorze. Na przykład średnia wartość obciążenia 3,0 wskazuje, że procesy działają z jedną trzecią prędkości, którą chcą uruchomić. Średnia wartość obciążenia 50,0 wskazuje, że procesy działają z szybkością 1/50, którą chcą uruchomić, ze względu na wszystkie inne uruchomione procesy. Oznacza to, że liczby wyższe niż 1,0 wskazują, że dostępny procesor jest rozciągany między coraz większą liczbą procesów.

Posiadanie procesora wielordzeniowego nie zmienia znaczenia liczb, ale może zmienić ich interpretację. Na przykład, jeśli masz 4-rdzeniowy procesor, obciążenie 1,0 jest nadal równoważne jednemu procesowi wykorzystującemu 100% procesora na jednym rdzeniu, ale są jeszcze trzy inne rdzenie. Tak więc na czterordzeniowym procesorze punkt maksymalnej wydajności wynosi 4,0, a nie 1,0, a momentem, w którym wszystko działa z wydajnością 1/3, jest 12,0, a nie 3,0. Aby zwiększyć złożoność, pojedynczy proces może mieć więcej niż jeden wątek, z których każdy żąda własnego procesora. Tak więc pojedynczy proces może wykorzystywać 100% wszystkich 4 rdzeni, jeśli jest wielowątkowy.

Ważna uwaga

Użycie procesora to tylko jeden zasób, który może ograniczać wydajność procesu. I / O jest kolejnym i nie jest uwzględniane w obciążeniu procesora. Proces wykorzystujący pewną ilość procesora niekoniecznie będzie w stanie wykorzystać więcej na lżejszym komputerze, ponieważ może to spowodować inne wąskie gardła.

Jaka jest średnia średnia obciążenia

To naprawdę zależy od tego, co robisz i od tego, czy wolisz reagować, czy też, aby procesor pracował tak ciężko, jak to możliwe.

Dla czegoś, co wymaga jak największej ilości pracy, średnia wartość obciążenia powinna wynosić co najmniej nieco więcej niż liczba rdzeni. Coś znacznie większego niż to wskazuje, że możesz zrobić więcej, szybciej, jeśli rozdzielisz zadania na więcej komputerów / serwerów.

Dla czegoś, co musi być możliwie jak najszybciej reagujące (reagować szybko), średnia wartość obciążenia powinna wynosić wygodny margines mniejszy niż liczba rdzeni, na przykład połowa lub jedna trzecia, co pozwala na sporadyczną zmienność przed wystąpieniem spowolnienia.

Dla gościa wirtualizacji (np. KVM) im niższa średnia obciążenia, tym lepiej, ponieważ w rzeczywistości dzielisz procesor z innymi gośćmi na tym samym hoście.

thomasrutter
źródło
Byłem zaskoczony, widząc, że czasami wątki „czekające na I / O” są uwzględnione w średniej obciążeniu serverfault.com/a/524818/27813 wydaje się ...
rogerdpack
@rodgerpack Tak, Dprocesy stanu są zawsze uwzględniane w średniej obciążenia w systemie Linux. Tak, to mylące. Tak, powinniśmy przede wszystkim przyjrzeć się innym wskaźnikom niż średnia wartość obciążenia.
kubańczyk
2

Średnia wartość obciążenia 0,00 zasadniczo oznacza, że ​​system jest bezczynny i że nie ma opóźnień, stresu ani wąskiego gardła w procesorze w mierzonym czasie.

Nie oznacza to, że procesor jest nieaktywny, po prostu oznacza, że ​​jeśli proces potrzebuje czasu procesora, nie trzeba czekać.

Trudno powiedzieć więcej na podstawie tego, co niewiele opublikowałeś, ponieważ może to zależeć od tego, jak zmierzyłeś obciążenie (system, na użytkownika?) I przez jaki czas.

Po szczegóły i ciekawą lekturę patrz

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

Pantera
źródło