Jak wysokie może być obciążenie systemu?

12

Za każdym razem, gdy loguję się na moje serwery za pośrednictwem SSH, miga mi trochę informacji o serwerze. Adres IP IE, zamiana użycia, użycie pamięci itp. Jedną z rzeczy, które mi miga, jest ładowanie systemu. Teraz przez większość czasu numer obciążenia systemu wynosi <0,10, ale innym razem widziałem, że wzrasta do 0,89 (zwykle w pobliżu rozruchu).

To rodzi pytanie, jak wysokie może być obciążenie systemu? Na przykład, czy może wzrosnąć do 2,00, a nawet 100,00?

Hunter Dolan
źródło
Część ułamkowa wskazuje użycie procesora, część dziesiętna liczbę oczekujących procesów. Coś w tym rodzaju 100.89byłoby bardziej prawdopodobne niż100.00
Lekensteyn
możliwy duplikat dopuszczalnej średniej obciążenia
Caleb
@Caleb, nie zgadzam się, że to duplikat. Możliwe, że OP zamierzał zapytać o coś podobnego, na przykład „jak wysokie może być obciążenie systemu (i nadal działać akceptowalnie)?”. Ale jak to powiedziano, to nie to samo pytanie.
Cyclops
@Cyclops: Gdyby OP nie zamierzał pytać o akceptowalne poziomy na serwerach i zadawał czysto teoretyczne pytanie o to, jak działają systemy * nix, czy nie byłoby to wykluczone i kandydat do migracji do unix.SE?
Caleb

Odpowiedzi:

17

To rodzi pytanie, jak wysokie może być obciążenie systemu? Na przykład, czy może wzrosnąć do 2,00, a nawet 100,00?

Absolutnie. Patrząc na uptimestronę man:

   System load averages is the average number of processes that are either
   in a runnable or uninterruptable state.  A process in a runnable  state
   is  either  using the CPU or waiting to use the CPU. A process in unin‐
   terruptable state is waiting for some I/O access, eg waiting for  disk.
   The  averages  are  taken over the three time intervals.  Load averages
   are not normalized for the number of CPUs in a system, so a load  aver‐
   age  of 1 means a single CPU system is loaded all the time while on a 4
   CPU system it means it was idle 75% of the time.

Więc jeśli masz wiele procesów oczekujących na uruchomienie (lub wiele procesów zablokowanych oczekujących na operacje we / wy), będziesz mieć wysoką średnią obciążenia. Ten artykuł mówi o tym bardziej szczegółowo i zawiera przydatne linki do innych zasobów.

W nieobciążonym systemie średnia obciążeń będzie zwykle zawierać się w przedziale 0 <= średnia_obciążenie <= n , gdzie n jest liczbą rdzeni w systemie.

Larsks
źródło
1
Tak, oczekiwanie na operacje we / wy to łatwy sposób na stworzenie dużego obciążenia: zamontuj udział nfs, włącz serwer nfs, uruchom 10.000 procesów, które próbują dotknąć czegoś w udziale nfs: boom, obciążenie 10.000
Jens Timmerman
5

Widziałem żywe systemy uderzające tysiące. Obciążenie średnie względna miara oparta na procesach oczekiwania, ile konkurencji jest w celu zwrócenia uwagi na jądra i zapewnienia CPU czasu. Jeśli maszyna jest zalana zadaniami lub ulega awarii, może to zająć dużo czasu.

Poziom, który jest akceptowalny, zależy od maszyny, liczby rdzeni, rodzaju używanego harmonogramu zadań jądra i zadań, których się spodziewasz. Mam kilka maszyn, które są całkiem zadowolone w zakresie ~ 10, ale spadają, jeśli trafią ~ 40-50. Inne stają się zauważalnie opóźnione w wieku 2 lat i nie będą nadawać się do użytku w wieku 10 lat.

Nie jest niczym niezwykłym, że ładunek jest wysoki podczas rozruchu, ponieważ wiele rzeczy jest wykonywanych jednocześnie, a maszyna się kończy. Uważam, że ~ 1 jest normalnym obciążeniem podczas uruchamiania systemu Linux na komputerze stacjonarnym, a następnie ustala się na ~ 0,1, nie robiąc nic.

Caleb
źródło
3
Drobna korekta: średnia obciążenia nie jest miarą czasu. To średnia liczba oczekujących procesów. Nie ma sposobu, aby odróżnić 1) jeden proces prowadzący do zatrzymania procesora od drugiego, który nigdy go nie otrzymuje, a 2) dwa procesy ciągle się kompromitują. Oba miałyby ładunki 1,0.
Plutor
1
Widziałem ponad 1500 na poważnie fubarowanym pudełku z linuksem. Potem umarło.
Tom O'Connor,
3

W systemie Linux średnie wartości obciążenia systemu składają się z procesów w jednym z trzech różnych stanów. Ogólnie można powiedzieć, że średnia obciążalność to ilość procesów oczekujących na czas procesora lub zużywających czas procesora. Trzy wartości w zestawieniu średniej obciążenia to średnia obciążenia w ciągu ostatniej minuty, ostatnich 5 minut i ostatnich 15 minut.

Trzy różne stany procesów liczone do średniej obciążenia to: (1) procesy działające na CPU, (2) procesy oczekujące na czas procesora i (3) procesy w nieprzerwanym śnie. Ostatnia kategoria, nie generując obciążenia procesora, może znacznie zwiększyć średnie obciążenie systemu.

Na przykład tuzin procesów oczekujących na odczyty z dysku, który jest bardzo zajęty lub niedostępny, generuje średnio obciążenie 12 jako procesy w nieprzerwanym trybie uśpienia, ale w międzyczasie procesor może być całkowicie bezczynny.

Tak, tak, średnia obciążenia może łatwo wzrosnąć do podwójnych cyfr. To, jak źle jest, zależy raczej od twojego sprzętu. Jeśli masz 16 rdzeni, posiadanie 16 procesów oczekujących na czas procesora nie jest takie złe. Na maszynie z jednym rdzeniem posiadanie 3 procesów oczekujących na czas procesora może być bardzo złe.

wzzrd
źródło
Myślę, że jest źle tylko wtedy, gdy są to procesy związane z procesorem, co jest rzadkie. Większość dużych procesów jest związana z IO lub / i RAM.
Peter - Przywróć Monikę
3

Wykonaj prosty proces C, uruchamiając nieskończone pętle w 10000 wątkach. Nadaj mu bardzo niski priorytet (+20). Twoje obciążenie wyniesie 10000, podczas gdy twój system będzie nadal użyteczny. Zużyje tylko bardzo mało pamięci RAM (najwyżej kilka megabajtów).

Chociaż jest to dość rzadka konfiguracja, w prawdziwych systemach tego nie znajdziesz.

Obciążenie systemu oznacza tylko średnią liczbę procesów oczekujących na przedział czasowy procesora, nie mniej i nie więcej. Oto kolejna odpowiedź na temat właściwego sposobu interpretowania obciążenia systemu .

W codziennym doświadczeniu obciążenie powyżej 30+ oznacza głównie pewien problem.

peterh - Przywróć Monikę
źródło
2

Kilka sekund po zabiciu procesu, który zjadał starą jednostkę centralną o częstotliwości 450 MHz:

wprowadź opis zdjęcia tutaj

petrus
źródło
1

Po wielokrotnym uruchomieniu procesów, które blokują natychmiast, obciążenie będzie tak wysokie, jak liczba procesów, które uda się uruchomić. Zakładając, że masz wystarczającą ilość pamięci RAM, aby system nie zamieniał się, system pozostanie nawet responsywny, ponieważ obciążenie z powodu procesów blokowania nie jest tak naprawdę szkodliwe.

Peter G.
źródło
1

Widziałem serwer działający z obciążeniem> 200.

Przeprowadziłbym test warunków skrajnych i zobaczyłem.

Kedare
źródło