wprowadzenie runqstat – nowego linuksowego narzędzia do ustawiania kolejki uruchamiania i ładowania

uzyskiwanie średniej obciążenia procesora w Linuksie

średnia ładowania Linuksa jest tak stara jak wzgórza i mniej więcej tak myląca, jak niewielu inżynierów może nawet powiedzieć, co to tak naprawdę jest lub jak jest obliczana.,
na szczęście, Brendon Gregg ma świetne podsumowanie, w tym jego historii, w Linux Load average: rozwiązywanie zagadki, gdzie można zobaczyć podstawowy problem:

Linux Load Average includes I/O

To takie proste. W przeciwieństwie do wszystkich innych systemów uniksopodobnych (Solaris, AIX, itp.), Linux liczy zarówno uruchomione / uruchamialne procesy, jak i zablokowane (bezprzerwowe) procesy, które zwykle czekają na I / O. Jest to zła rzecz i datuje się na archaiczną 24-letnią łatkę, którą znalazł Brendon.

Dlaczego nas to obchodzi?,

zależy nam na tym, ponieważ w każdym systemie mieszanym (używającym zarówno procesora, jak i I/O) średnia obciążenia jest bardzo zmienna i często bezużyteczna. Może to być szczególnie złe w przypadku wysoce gwintowanych systemów, które mogą powodować wejścia / wyjścia, więc łatwo jest zablokować dziesiątki lub setki z nich na wolnych dyskach.

to, czego większość z nas naprawdę chce, to tradycyjna Uniksowa miara średniej obciążenia, czyli średnia liczba uruchomionych procesów uśredniona w czasie. Mówi nam to, jak załadowany jest nasz system i możemy spojrzeć na kolejkę jako Na Miarę nasycenia, tzn., ciągła Kolejka procesora oznacza, że jesteśmy przeciążeni.

więc jak możemy to zdobyć?

zależy nam na długości kolejki uruchamiania procesora, która staje się> 0, gdy procesy muszą czekać na procesor. Ale trudno to dokładnie uzyskać, a jądro Linuksa nie jest zbyt przyjazne w tej dziedzinie.

Po pierwsze, to, co ludzie z Linuksa nazywają kolejką run zawiera uruchomione zadania, więc tak naprawdę nie jest to kolejka, ale Kolejka plus to, co działa. To jest mylące, a więc trzeba odjąć liczbę procesorów, aby uzyskać poczucie prawdziwej kolejki.,

kilka narzędzi może uzyskać bieżący rozmiar chwilowej kolejki uruchamiania. To pokazuje kolumna vmstat „r” i „SAR-q”; obie te wartości pochodzą z metryki procs_running /proc / stat.

problem polega na tym, że jest to liczba chwilowa, więc jest bardzo hałaśliwa i musi być uśredniona, aby uzyskać przydatne dane, ale jądro nie zrobi tego za Ciebie. Najlepiej byĹ 'oby wyjĹ” Cie kernela w /proc tylko dla CPU i Ĺ „rednich Ĺ' adunkăłw We/Wy, ale nikt jeszcze tego nie stworzyĹ'.,

potrzebujemy więc narzędzia, które spróbuje emulować działanie średniej obciążenia, szybko pobierając ten natychmiastowy rozmiar kolejki uruchamiania i uśredniając go w czasie.

przedstawiamy runqstat

runqstat robi to — jest to proste narzędzie wiersza poleceń napisane w Go, które domyślnie pobiera ten rozmiar kolejki co 10 ms i średnio wynosi ponad sekundę. Celem jest stabilna i dokładna miara tego, jak zajęty jest system.,
zawiera opcje zmiany częstotliwości próbkowania i uśredniania czasu, a także odjęcia liczby procesorów, dzięki czemu możesz zobaczyć rzeczywisty rozmiar kolejki, jeśli chcesz.

ma również możliwość obliczenia średniej liczby zablokowanych, którą teoretycznie można odjąć od średniej obciążenia, aby uzyskać inny widok nasycenia procesora (i zobaczyć, ile problemów powoduje Średnia obciążenia).

dzięki temu narzędziu zespoły ops mają wreszcie dobry sposób na monitorowanie nasycenia serwerów Linuksowych.

znajdź go na Github-runqstat

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *