Wyszukiwanie w witrynie

Cpustat - monitoruje wykorzystanie procesora poprzez uruchamianie procesów w systemie Linux


Cpustat to potężny program do pomiaru wydajności systemu dla systemu Linux, napisany przy użyciu języka programowania Go. Próbuje skutecznie ujawnić wykorzystanie i nasycenie procesora, korzystając z metody nasycenia i błędów wykorzystania (USE) (metodologia analizy wydajności dowolnego systemu).

Wyodrębnia próbki o wyższej częstotliwości z każdego procesu wykonywanego w systemie, a następnie podsumowuje te próbki z niższą częstotliwością. Na przykład może mierzyć każdy proces co 200 ms i podsumowywać te próbki co 5 sekundy, łącznie z wartościami minimalnymi, średnimi i maksymalnymi dla określonych wskaźników.

Sugerowana lektura: 20 narzędzi wiersza poleceń do monitorowania wydajności Linuksa

Cpustat generuje dane na dwa możliwe sposoby: czystą listę tekstową podsumowującego interwału i kolorowy, przewijany pulpit nawigacyjny każdej próbki.

Jak zainstalować Cpustat w systemie Linux

Aby używać cpustat, musisz mieć zainstalowany Go (GoLang) w swoim systemie Linux, kliknij poniższy link, aby wykonać kroki instalacji GoLang, czyli jeśli nie masz zainstalowało się:

  1. Zainstaluj GoLang (język programowania Go) w systemie Linux

Po zainstalowaniu Go wpisz poniżej polecenie go get, aby je zainstalować. To polecenie zainstaluje plik binarny cpustat w twoim GOBIN zmienna:

go get github.com/uber-common/cpustat

Jak korzystać z Cpustata w systemie Linux

Po zakończeniu procesu instalacji uruchom cpustat w następujący sposób z uprawnieniami roota, używając polecenia sudo, czyli jeśli kontrolujesz system jako użytkownik inny niż root, w przeciwnym razie pojawi się następujący błąd:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Uwaga: aby uruchomić cpustat, a także wszystkie inne programy Go, które zainstalowałeś w swoim systemie, podobnie jak inne polecenia, wpisz GOBIN w zmiennej środowiskowej PATH. Otwórz poniższy link, aby dowiedzieć się, jak ustawić zmienną PATH w systemie Linux.

  1. Dowiedz się, jak ustawić zmienne PATH na stałe w systemie Linux

Tak działa cpustat; do katalogu /proc wysyłane jest zapytanie w celu uzyskania aktualnej listy identyfikatorów procesów dla każdego interwału oraz:

  • dla każdego PID przeczytaj /proc/pid/stat, a następnie oblicz różnicę z poprzedniej próbki.
  • w przypadku nowego PID przeczytaj /proc/pid/cmdline.
  • dla każdego PID wyślij wiadomość netlink, aby pobrać statystyki zadań, oblicz różnicę w stosunku do poprzedniej próbki.
  • pobierz /proc/stat, aby uzyskać ogólne statystyki systemu.

Ponownie, każdy interwał snu jest dostosowywany w celu uwzględnienia ilości czasu poświęconego na pobieranie wszystkich tych statystyk. Co więcej, każda próbka rejestruje również czas potrzebny na przeskalowanie każdego pomiaru w oparciu o rzeczywisty czas, jaki upłynął pomiędzy próbkami. Próbuje to uwzględnić opóźnienia w samym cpustacie.

Po uruchomieniu bez żadnych argumentów, cpustat wyświetli domyślnie następujące informacje: interwał próbkowania: 200 ms, interwał sumaryczny: 2 s (10 próbek), wyświetlanie 10 najlepszych proców, filtr użytkownika: wszystkie, filtr pid: wszystko jako pokazane na zrzucie ekranu poniżej:

sudo $GOBIN/cpustat 

Z powyższych danych wynika, że poniżej znajdują się znaczenia ogólnosystemowych metryk podsumowujących wyświetlanych przed polami:

  • usr – min/średni/maks. czas działania trybu użytkownika jako procent procesora.
  • sys – min./średni/maks. czas pracy w trybie systemowym jako procent wykorzystania procesora.
  • niezły – min./średni/maks. czas pracy w trybie użytkownika o niskim priorytecie jako procent wykorzystania procesora.
  • bezczynność – min./średni/maks. czas działania trybu użytkownika jako procent wykorzystania procesora.
  • iowait – min/średni/maks czas opóźnienia oczekiwania na dyskowe wejście/wyjście.
  • prun – minimalna/średnia/maks. liczba procesów w stanie możliwym do uruchomienia (taka sama jak średnia obciążenia).
  • pblock – min/średnia/maks liczba procesów zablokowanych na dysku I/O.
  • pstart – liczba procesów/wątków uruchomionych w tym sumarycznym przedziale.

Z powyższych danych wynika, że dla danego procesu różne kolumny oznaczają:

  • nazwa – popularna nazwa procesu z /proc/pid/stat lub /proc/pid/cmdline.
  • pid – identyfikator procesu, zwany także „tgid”.
  • min – najniższa próbka czasu użytkownika+systemu dla pid, mierzona z /proc/pid/stat. Skala to procent procesora.
  • max – najwyższa próbka czasu użytkownika+systemu dla tego pid, również mierzona z /proc/pid/stat.
  • usr – średni czas użytkownika dla pid w okresie sumarycznym, mierzony z /proc/pid/stat.
  • sys – średni czas systemowy dla pid w okresie sumarycznym, mierzony z /proc/pid/stat.
  • nice – wskazuje aktualną wartość „niezłą” dla procesu, mierzoną z /proc/pid/stat. Wyższy oznacza „ładniejszy”.
  • runq – czas, w którym proces i wszystkie jego wątki mogą działać, ale oczekują na uruchomienie, mierzony na podstawie statystyk zadań poprzez netlink. Skala to procent procesora.
  • iow – czas zablokowania procesu i wszystkich jego wątków przez IO dysku, mierzony na podstawie statystyk zadań poprzez netlink. Skala to procent procesora, uśredniony w podsumowanym przedziale.
  • zamień – czas oczekiwania procesu i wszystkich jego wątków na zamianę, mierzony na podstawie statystyk zadań poprzez netlink. Skala to procent procesora, uśredniony w podsumowanym przedziale.
  • vcx i icx – całkowita liczba dobrowolnych przełączeń kontekstu przez proces i wszystkie jego wątki w sumarycznym przedziale czasu, mierzona na podstawie statystyk zadań poprzez netlink.
  • rss – bieżąca wartość RSS pobrana z /proc/pid/stat. Jest to ilość pamięci wykorzystywanej przez ten proces.
  • ctime – suma czasu procesora użytkownika+sys zużytego przez elementy oczekujące na dzieci, które zakończyły działanie w tym interwale sumarycznym, mierzona z /proc/pid/stat.

Należy pamiętać, że długo działające procesy potomne często mogą mylić ten pomiar, ponieważ czas jest raportowany tylko w momencie zakończenia procesu potomnego. Jest to jednak przydatne do pomiaru wpływu częstych zadań cron i kontroli stanu, gdy czas procesora jest często zużywany przez wiele procesów potomnych.

  • trzeci – liczba wątków na końcu interwału sumarycznego, mierzona od /proc/pid/stat.
  • sam – liczba próbek dla tego procesu zawarta w przedziale sumarycznym. Procesy, które niedawno się rozpoczęły lub zakończyły, mogły być widoczne dla mniejszej liczby próbek niż interwał sumaryczny.

Poniższe polecenie wyświetla 10 najczęściej działających procesów użytkowników root w systemie:

sudo $GOBIN/cpustat -u root

Aby wyświetlić dane wyjściowe w fantazyjnym trybie terminala, użyj flagi -t w następujący sposób:

sudo $GOBIN/cpustat -u roo -t

Aby wyświetlić x najwyższą liczbę procesów (domyślnie jest to 10), możesz użyć flagi -n, poniższe polecenie pokazuje 20 najważniejszych procesów Linuksa uruchomionych w systemie:

sudo $GOBIN/cpustat -n 20 

Możesz także zapisać profil procesora do pliku, używając opcji -cpuprofile w następujący sposób, a następnie użyć polecenia cat, aby wyświetlić plik:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Aby wyświetlić informacje pomocy, użyj flagi -h w następujący sposób:

sudo $GOBIN/cpustat -h

Znajdź dodatkowe informacje w repozytorium cpustat Github: https://github.com/uber-common/cpustat

To wszystko! W tym artykule pokazaliśmy, jak zainstalować i używać cpustat, przydatnego narzędzia do pomiaru wydajności systemu w systemie Linux. Podziel się z nami swoimi przemyśleniami w sekcji komentarzy poniżej.