Czym jest Load Average w Linuksie?

W artykule tym postaram się przybliżyć czym jest, często źle interpretowany i tajemniczy parametr „load average” który możemy sprawdzić np. przy pomocy komendy top w Linuksie.

Najbardziej trafna definicja tego parametru to średnia ilość procesów w kolejce, oczekująca na wykonanie w okresie, odpowiednio 1, 5 i 15 minut.

Jaka jest prawidłowa wartość tego parametru?

Nie istnieje tutaj jedna słuszna liczba powyżej której powinniśmy zacząć się martwić. Wszystko zależy od tego ile posiadamy procesorów i ile rdzeni mają te procesory. Dla przykładu – posiadając 2 procesory, każdy po 4 rdzenie – serwer może jednocześnie przetwarzać 8 procesów. W takim przypadku load average dochodzący do 8 nie będzie żadnym problemem. Jeśli ilość procesów oczekujących na wykonanie przekroczy łączną ilość rdzeni procesora które posiadamy – możemy odczuć spowolnienie, gdyż system będzie musiał przełączać uruchomione procesy, tak aby każdy z nich mógł być chociaż na chwilę uruchomiony.

Należy zwrócić uwagę na jeszcze jeden fakt – samo monitorowanie parametru load average w oderwaniu od reszty parametrów obciążenia procesora – nie pozwoli na wyciągnięcie poprawnych wniosków. Załóżmy, że mamy serwer posiadający 8 rdzeni, patrzymy na load average, które wynosi 100. Moglibyśmy pomyśleć, że nie mamy wystarczającej mocy procesora, podczas gdy zerkamy na aktualne użycie procesora, które wynosi.. 40%. Należy więc uzupełnić wiedzę na temat load average o fakt, że w Linuksie, procesy oczekujące na zakończenie operacji dyskowych – również wliczane są do statystyk kolejki procesów oczekujących na uruchomienie.

Podsumowując

– wysokie wartości LA + wysokie użycie procesora (mały udział iowait w statystykach) – brakuje nam mocy procesora,
– wysokie wartości LA + małe / średnie użycie procesora (duży udział iowait w statystykach) – niewystarczająca wydajność systemu dysków.