Występuje dziwne zachowanie, w którym widzimy wysokie wykorzystanie procesora, ale dość niskie średnie obciążenie.
Zachowanie najlepiej ilustrują następujące wykresy z naszego systemu monitorowania.
Około 11:57 wykorzystanie procesora wzrasta z 25% do 75%. Średnia obciążenia nie ulega znaczącej zmianie.
Obsługujemy serwery z 12 rdzeniami z 2 hiperwątkami każdy. System operacyjny postrzega to jako 24 procesory.
Dane o wykorzystaniu procesora są gromadzone przez uruchamianie /usr/bin/mpstat 60 1
każdej minuty. Dane dla all
wiersza i %usr
kolumny pokazano na powyższym wykresie. Jestem pewien, że to pokazuje średnią na dane procesora, a nie wykorzystanie w stosie. Podczas gdy widzimy 75% wykorzystania na wykresie, widzimy proces pokazujący użycie około 2000% „skumulowanego” procesora top
.
Średnia wartość obciążenia jest pobierana z /proc/loadavg
każdej minuty.
uname -a
daje:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Linux dist jest Red Hat Enterprise Linux Server release 6.3 (Santiago)
Pracujemy na kilku aplikacjach internetowych Java pod dość dużym obciążeniem na komputerach, pomyślmy 100 żądań / s na maszynę.
Jeśli poprawnie interpretuję dane o wykorzystaniu procesora, gdy mamy 75% wykorzystania procesora, oznacza to, że nasze procesory wykonują proces średnio w 75% przypadków. Jeśli jednak nasze procesory są zajęte w 75% przypadków, czy nie powinniśmy widzieć wyższej średniej obciążenia? Jak procesory mogą być zajęte w 75%, podczas gdy mamy tylko 2-4 zadania w kolejce uruchomień?
Czy interpretujemy nasze dane poprawnie? Co może powodować takie zachowanie?