Udostępnij za pośrednictwem


Zbieranie metryk wydajności dla maszyny wirtualnej z systemem Linux

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

W tym artykule opisano sposób pobierania metryk wydajności z maszyny wirtualnej z systemem Linux na platformie Microsoft Azure przy użyciu narzędzi Sysstat (narzędzi do monitorowania wydajności). Zawiera przykłady używania tych narzędzi i odczytywania ich danych wyjściowych.

Do zbierania liczników wydajności w systemie Linux jest dostępnych kilka poleceń. Polecenia takie jak vmstat i uptime udostępniają podstawowe metryki systemowe, takie jak użycie procesora CPU, pamięć systemowa i obciążenie systemu. Większość z tych poleceń jest domyślnie wstępnie instalowana, a inne mogą być łatwo dostępne z domyślnych repozytoriów.

Na podstawie typu metryk te polecenia można podzielić na kategorie:

Instalowanie narzędzi Sysstat dla systemu Linux

Narzędzia Sysstat można zainstalować na maszynie wirtualnej z systemem Linux przy użyciu polecenia Bash lub funkcji Uruchom polecenie za pośrednictwem interfejsu wiersza polecenia platformy Azure. Jeśli używasz poleceń interfejsu wiersza polecenia platformy Azure podanych w tym artykule, upewnij się, że ustawiono następujące dwie zmienne środowiskowe. Musisz zastąpić nazwę grupy zasobów i nazwę maszyny wirtualnej rzeczywistymi wartościami.

export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"

Uwaga 16.

Niektóre z poniższych poleceń wymagają uprawnień głównych.

Aby zainstalować sysstat pakiet na maszynie wirtualnej z systemem Linux, użyj następującego polecenia:

Ubuntu:

sudo apt install sysstat -y

Red Hat:

sudo dnf install sysstat -y

SUSE:

sudo zypper install sysstat --non-interactive

Procesor CPU

mpstat

Polecenie mpstat jest częścią sysstat pakietu. Wyświetla on wykorzystanie procesora CPU i średnią poszczególnych procesorów, co jest pomocne w identyfikowaniu użycia procesora CPU. Polecenie mpstat zawiera omówienie wykorzystania procesora CPU dostępnych procesorów CPU, pomagając zidentyfikować saldo użycia i jeśli pojedynczy procesor CPU jest przeciążony.

Oto przykład uruchamiania polecenia mpstat:

mpstat -P ALL 1 2
  • -P: wskazuje procesor do wyświetlania statystyk, a ALL argument wskazuje, że powinny być wyświetlane statystyki wszystkich procesorów online w systemie.
  • 1: Pierwszy argument liczbowy określa interwał (w sekundach), w którym mpstat należy odświeżyć i wyświetlić nowe statystyki.
  • 2: Drugi argument liczbowy określa liczbę wyświetleń mpstat statystyk. W tym przypadku drukuje dwie statystyki w jednosekundowym interwale.

Możesz zwiększyć liczbę argumentów, aby pomieścić dłuższe czasy zbierania danych. Ogólnie rzecz biorąc, wystarczy trzy lub pięć sekund. W przypadku systemów o większej liczbie rdzeni zmniejszenie liczby rdzeni do dwóch sekund może pomóc w zarządzaniu ilością wyświetlanych danych.

Jak odczytać dane wyjściowe mpstat

Oto przykładowe dane wyjściowe polecenia mpstat:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

16:55:50     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16:55:51     all   69.09    0.00   30.16    0.00    0.38    0.38    0.00    0.00    0.00    0.00
16:55:51       0   77.23    0.00   21.78    0.00    0.99    0.00    0.00    0.00    0.00    0.00
16:55:51       1   97.03    0.00    0.99    0.00    0.99    0.99    0.00    0.00    0.00    0.00
16:55:51       2   11.11    0.00   88.89    0.00    0.00    0.00    0.00    0.00    0.00    0.00
16:55:51       3   11.00    0.00   88.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00
16:55:51       4   83.84    0.00   16.16    0.00    0.00    0.00    0.00    0.00    0.00    0.00
16:55:51       5   76.00    0.00   23.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00
16:55:51       6   96.00    0.00    3.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00
16:55:51       7  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
[...]

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all   74.02    0.00   25.52    0.00    0.25    0.21    0.00    0.00    0.00    0.00
Average:       0   63.00    0.00   36.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       1   97.33    0.00    1.67    0.00    0.33    0.67    0.00    0.00    0.00    0.00
Average:       2   42.33    0.00   57.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       3   34.33    0.00   65.00    0.00    0.33    0.33    0.00    0.00    0.00    0.00
Average:       4   88.63    0.00   11.04    0.00    0.00    0.33    0.00    0.00    0.00    0.00
Average:       5   71.33    0.00   28.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       6   95.65    0.00    4.01    0.00    0.00    0.33    0.00    0.00    0.00    0.00
Average:       7   99.67    0.00    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00

Należy pamiętać o kilku ważnych kwestiach. Pierwszy wiersz zawiera przydatne informacje:

  • Jądro i wydanie: 5.14.0-362.8.1.el9_3.x86_64
  • Nazwa hosta: alma9
  • Data: 02/21/24
  • Architektura: _x86_64_
  • Całkowita liczba procesorów CPU (te informacje są przydatne do interpretowania danych wyjściowych innych poleceń): (8 CPU)

Następnie zostaną wyświetlone metryki dla procesorów CPU. Oto wyjaśnienie każdej kolumny:

  • Time: sygnatura czasowa wskazująca, kiedy próbka została zebrana.
  • CPU: identyfikator liczbowy procesora CPU. Identyfikator all reprezentuje średnią dla wszystkich procesorów CPU.
  • %usr: Procent wykorzystania procesora CPU przez procesy przestrzeni użytkownika, zazwyczaj aplikacje użytkowników.
  • %nice: Procent wykorzystania procesora CPU przez procesy obszaru użytkownika z ładną (priorytetową) wartością.
  • %sys: procent wykorzystania procesora CPU przez procesy obszaru jądra.
  • %iowait: procent czasu bezczynności procesora CPU oczekujących na zaległe operacje we/wy.
  • %irq: procent czasu procesora CPU spędził na przerwaniach obsługi sprzętu.
  • %soft: procent czasu poświęcanego na przerwy w obsłudze oprogramowania.
  • %steal: Procent czasu procesora CPU, który maszyna wirtualna spędziła na obsłudze innych maszyn wirtualnych (nie dotyczy platformy Azure z powodu braku nadmiernej aprowizacji procesora CPU).
  • %guest: wartość procentowa czasu procesora CPU przez wirtualny procesor cpu poświęcana na obsługę maszyn wirtualnych (nie dotyczy platformy Azure; dotyczy tylko systemów bez systemu operacyjnego z uruchomionymi maszynami wirtualnymi).
  • %gnice: Procent czasu procesora CPU wirtualnego procesora CPU z ładną wartością poświęcaną na obsługę maszyn wirtualnych (nie dotyczy platformy Azure; dotyczy tylko systemów bez systemu operacyjnego z uruchomionymi maszynami wirtualnymi).
  • %idle: procent czasu procesora CPU, który był bezczynny i nie czekał na żądania we/wy.

Najważniejsze zagadnienia

Kluczowe zagadnienia dotyczące przeglądania danych wyjściowych polecenia mpstat:

  • Sprawdź, czy wszystkie procesory CPU są prawidłowo załadowane, a nie jeden procesor obsługuje wszystkie obciążenia. Te informacje mogą wskazywać na jednowątkową aplikację.
  • Poszukaj równowagi w dobrej kondycji między %usr i %sys, ponieważ odwrotnie oznaczałoby więcej czasu poświęcanego na rzeczywiste obciążenie niż obsługa procesów jądra.
  • %iowait Poszukaj wartości procentowych, ponieważ wysokie wartości mogą wskazywać system, który stale czeka na żądania we/wy.
  • Wysokie %soft użycie może wskazywać na duży ruch sieciowy.

vmstat

Narzędzie vmstat jest powszechnie dostępne w większości dystrybucji systemu Linux. Zawiera ogólne omówienie wykorzystania operacji we/wy procesora CPU, pamięci i dysku w jednym okienku.

Oto przykład uruchamiania polecenia vmstat:

vmstat -w 1 5
  • -w: Użyj szerokiego drukowania, aby zachować spójne kolumny.
  • 1: Pierwszy argument liczbowy określa interwał w sekundach między poszczególnymi raportami. W takim przypadku funkcja vmstat wyświetli raport co sekundę.
  • 5: Drugi argument liczbowy określa liczbę raportów, które powinny zostać wygenerowane przez vmstat. Po 5 określeniu tutaj parametr vmstat wygeneruje łącznie pięć raportów.

Jak odczytać dane wyjściowe vmstat

Oto przykładowe dane wyjściowe polecenia vmstat:

--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
   r    b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
  14    0            0     26059408          164       137468    0    0    89  3228   56  122   3   1  95   1   0
  14    1            0     24388660          164       145468    0    0     0  7811 3264 13870  76  24   0   0   0
  18    1            0     23060116          164       155272    0    0    44  8075 3704 15129  78  22   0   0   0
  18    1            0     21078640          164       165108    0    0   295  8837 3742 15529  73  27   0   0   0
  15    2            0     19015276          164       175960    0    0     9  8561 3639 15177  73  27   0   0   0

Dane wyjściowe są podzielone na następujące sześć grup. Dane wyjściowe przedstawiają ogólne statystyki dla całego systemu (czyli wszystkie procesory CPU i urządzenia blokowe zagregowane).

  • procs: Statystyki dotyczące procesów.
  • memory: Statystyka pamięci systemowej.
  • swap: Statystyka zamiany.
  • io: Statystyki operacji we/wy dysku.
  • system: Statystyka przełączników kontekstowych i przerwań.
  • cpu: Statystyki użycia procesora CPU.

procs

Sekcja procs zawiera dwie kolumny:

  • r: liczba procesów możliwych do uruchomienia w kolejce uruchamiania.
  • b: liczba zablokowanych procesów oczekujących na we/wy.

Ta sekcja natychmiast pokazuje, czy w systemie występuje jakiekolwiek wąskie gardło. Duże liczby w obu kolumnach wskazują procesy kolejkowania w kolejce i oczekujące na zasoby.

Kolumna r wskazuje liczbę procesów oczekujących na uruchomienie procesora CPU. Prosty sposób interpretowania tej liczby jest następujący: jeśli liczba procesów w r kolejce jest wyższa niż całkowita liczba procesorów CPU, można wywnioskować, że procesor CPU systemu jest zbyt mocno załadowany, aby przydzielić czas procesora CPU dla wszystkich procesów oczekujących na uruchomienie.

Kolumna b wskazuje liczbę procesów oczekujących na uruchomienie i zablokowanych przez żądania we/wy. Duża liczba w tej kolumnie wskazuje system, w którym występują wysokie we/wy, a procesy nie mogą być uruchamiane z powodu innych procesów oczekujących na ukończenie żądań we/wy. Może to również wskazywać na duże opóźnienie dysku.

pamięć

Sekcja pamięci zawiera cztery kolumny. Wartości są wyświetlane w bajtach. Ta sekcja zawiera ogólne omówienie użycia pamięci.

  • swpd: ilość używanej pamięci wymiany.
  • free: ilość wolnej pamięci.
  • buff: ilość pamięci używanej dla.
  • cache: ilość pamięci używanej do buforowania.

zamiana

Sekcja zamiany zawiera dwie kolumny:

  • si: ilość pamięci zamienionej (przeniesiona z pamięci systemowej na zamianę) na sekundę.
  • so: ilość pamięci zamienionej (przeniesiona z zamiany na pamięć systemowa) na sekundę.

Jeśli zaobserwowano wysoki si poziom, może to reprezentować system, który kończy się pamięci systemowej i przenosi strony do zamiany (zamiana).

Io

Sekcja io zawiera dwie kolumny. Te wartości znajdują się w blokach na sekundę.

  • bi: liczba bloków odebranych z urządzenia blokowego (bloki odczytu na sekundę) na sekundę.
  • bo: liczba bloków wysyłanych do urządzenia blokowego (zapisy na sekundę) na sekundę.

sterowana

Sekcja systemowa ma dwie kolumny:

  • in: liczba przerwań na sekundę.
  • cs: liczba przełączników kontekstowych na sekundę.

Duża liczba przerwań na sekundę może wskazywać na system zajęty urządzeniami sprzętowymi (na przykład operacje sieciowe).

Duża liczba przełączników kontekstowych może wskazywać na zajęty system z wieloma krótkotrwałymi procesami. Nie ma tu dobrej ani złej liczby.

procesor

Sekcja cpu zawiera pięć kolumn:

  • us: Procent wykorzystania miejsca użytkownika.
  • sy: Procent wykorzystania systemu (miejsca w jądrze).
  • id: Procent wykorzystania czasu bezczynności procesora CPU.
  • wa: Procent wykorzystania czasu bezczynności procesora CPU oczekujących na procesy z we/wy.
  • st: Procent wykorzystania czasu procesora CPU poświęcanego na obsługę innych procesorów wirtualnych (nie dotyczy platformy Azure).

Wartości są prezentowane w procentach. Te wartości są takie same jak te przedstawione przez mpstat narzędzie i służą do zapewnienia wysokiego poziomu przeglądu użycia procesora CPU. Postępuj zgodnie z procesem podobnym do mpstat podczas przeglądania tych wartości.

Uptime

Narzędzie uptime zawiera szeroki przegląd obciążenia systemu ze średnimi wartościami obciążenia.

uptime

Jak odczytać dane wyjściowe czasu pracy

Oto przykładowe dane wyjściowe polecenia uptime:

16:55:53 up 9 min,  2 users,  load average: 9.26, 2.91, 1.18

Zostaną load average wyświetlone trzy liczby. Te liczby odpowiadają obciążeniu systemu w 1interwałach , 5i 15 minut.

Aby zinterpretować te wartości, ważne jest, aby poznać liczbę procesorów dostępnych w systemie, która jest uzyskiwana z poprzednich mpstat danych wyjściowych. Wartość zależy od całkowitej liczby procesorów CPU, więc użycie mpstat danych wyjściowych jako przykładu oznacza, że system ma osiem procesorów CPU, a średnia 8 obciążenia oznacza, że wszystkie rdzenie są ładowane na 100%.

Wartość oznaczałaby, że połowa procesorów 4 CPU jest ładowana na 100% (lub całkowite obciążenie 50% dla wszystkich procesorów CPU). W poprzednich danych wyjściowych średnia obciążenia wynosi 9.26, co oznacza, że procesor CPU jest ładowany na około 115%.

Interwały 1m, i 15m pomagają określić, 5mczy obciążenie rośnie lub zmniejsza się wraz z upływem czasu.

nproc Ponadto polecenie może służyć do pobierania liczby procesorów CPU.

Pamięć

W przypadku pamięci dwa polecenia mogą pobierać szczegóły użycia pamięci.

free

Polecenie free pokazuje wykorzystanie pamięci systemowej.

Oto przykład uruchamiania polecenia free:

free -h
  • -h: Ta opcja określa format danych wyjściowych, który ma być czytelny dla człowieka. Konwertuje rozmiary pamięci z bajtów na bardziej czytelny format (kilobajty, megabajty i gigabajty) oraz dołącza odpowiednie etykiety jednostek (KB, MB i GB).

Jak odczytać bezpłatne dane wyjściowe

Oto przykładowe dane wyjściowe polecenia free:

               total        used        free      shared  buff/cache   available
Mem:            31Gi        19Gi        12Gi        23Mi        87Mi        11Gi
Swap:           23Gi          0B        23Gi

Z danych wyjściowych obserwuj pamięć systemowa total w porównaniu z pamięcią available i zamianę used total . Dostępna pamięć uwzględnia pamięć przydzieloną do pamięci podręcznej, która może zostać zwrócona do aplikacji użytkownika. Niektóre użycie zamiany jest normalne w nowoczesnych jądrach, ponieważ niektóre rzadko używane strony pamięci można przenosić do zamiany.

swapon

Polecenie swapon wyświetla lokalizację, w której jest skonfigurowana zamiana, oraz odpowiednie priorytety urządzeń lub plików wymiany.

Oto przykład uruchamiania polecenia swapon:

swapon -s

Oto przykładowe dane wyjściowe polecenia swapon:

Filename      Type          Size          Used   Priority
/dev/zram0    partition     16G           0B      100
/mnt/swapfile file          8G            0B      -2

Te informacje są ważne, aby sprawdzić, czy zamiana jest skonfigurowana w lokalizacji nieidealnej, na przykład na danych lub dysku systemu operacyjnego. W ramce referencyjnej platformy Azure zamiana powinna być skonfigurowana na dysku efemerycznym, ponieważ zapewnia najlepszą wydajność.

Najważniejsze zagadnienia

  • Pamiętaj, że pamięć jest zasobem skończonym. Gdy pamięć systemowa (RAM) i wymiana zostaną wyczerpane, zabójca z pamięci (OOM killer) zabije procesy.
  • Sprawdź, czy zamiana nie jest skonfigurowana na dysku danych lub dysku systemu operacyjnego, ponieważ może to powodować problemy z we/wy z powodu różnic opóźnienia. Zamiana powinna być skonfigurowana na dysku efemerycznym.
  • Należy również pamiętać, że często w danych wyjściowych free -h są widoczne wolne wartości zbliżone do zera. To zachowanie jest spowodowane pamięcią podręczną strony; jądro zwalnia te strony zgodnie z potrzebami.

WE/WY

We/Wy dysku jest jednym z obszarów, w których platforma Azure najbardziej cierpi w przypadku ograniczania przepustowości, ponieważ opóźnienia w dyskach mogą osiągać wartość 100ms+. Poniższe polecenia mogą pomóc w zidentyfikowaniu tych scenariuszy.

iostat

Narzędzie iostat jest częścią sysstat pakietu. Wyświetla statystyki użycia dla każdego urządzenia blokowego i pomaga zidentyfikować problemy z wydajnością związane z blokiem. Zawiera szczegółowe informacje na temat metryk, takich jak przepływność, opóźnienie i rozmiar kolejki. Te metryki pomagają zrozumieć, czy we/wy dysku stają się czynnikiem ograniczającym.

Oto przykład uruchamiania polecenia iostat:

iostat -dxtm 1 5
  • -d: raport użycia dla każdego urządzenia.
  • -x: Rozszerzone statystyki.
  • -t: wyświetla znacznik czasu dla każdego raportu.
  • -m: Wyświetla w MB/s.
  • 1: pierwszy argument liczbowy wskazuje, jak często odświeżać ekran w sekundach.
  • 2: drugi argument liczbowy wskazuje, ile razy dane są odświeżane.

Jak odczytać dane wyjściowe iostat

Oto przykładowe dane wyjściowe polecenia iostat:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

02/21/24 16:55:50
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
sda              1.07      0.02     0.00   0.00    1.95    20.40   23.25     24.55     3.30  12.42  113.75  1081.06    0.26    537.75     0.26  49.83    0.03 2083250.04    0.00    0.00    2.65   2.42
sdb             16.99      0.67     0.36   2.05    2.00    40.47   65.26      0.44     1.55   2.32    1.32     6.92    0.00      0.00     0.00   0.00    0.00     0.00   30.56    1.30    0.16   7.16
zram0            0.51      0.00     0.00   0.00    0.00     4.00    0.00      0.00     0.00   0.00    0.00     4.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00

Dane wyjściowe zawierają kilka kolumn, które nie są ważne (dodatkowe kolumny ze względu na -x opcję). Oto niektóre z ważnych:

  • r/s: Operacje odczytu na sekundę (IOPS).
  • rMB/s: Odczytaj megabajty na sekundę.
  • r_await: Opóźnienie odczytu w milisekundach.
  • rareq-sz: średni rozmiar żądania odczytu w kilobajtach.
  • w/s: Operacje zapisu na sekundę (IOPS).
  • wMB/s: Zapisuj megabajty na sekundę.
  • w_await: Opóźnienie zapisu w milisekundach.
  • wareq-size: średni rozmiar żądania zapisu w kilobajtach.
  • aqu-sz: Średni rozmiar kolejki.

Najważniejsze zagadnienia

  • r/sPoszukaj wartości , w/s (IOPS), rMB/si wMB/si i sprawdź, czy te wartości znajdują się w granicach danego dysku. Jeśli wartości są bliskie lub wyższe niż limity, dysk będzie ograniczany, co prowadzi do dużego opóźnienia. Te informacje można również potwierdzić za %iowait pomocą metryki z .mpstat
  • Opóźnienie to doskonała metryka do sprawdzenia, czy dysk działa zgodnie z oczekiwaniami. Zwykle mniejsze niż 9ms oczekiwane opóźnienie dla warstwy PremiumSSD. Inne oferty mają różne cele opóźnienia.
  • Rozmiar kolejki jest doskonałym wskaźnikiem nasycenia. Zwykle żądania są obsługiwane niemal w czasie rzeczywistym, a liczba pozostaje blisko jednej (ponieważ kolejka nigdy się nie zwiększa). Większa liczba może wskazywać na nasycenie dysku (czyli żądania kolejkowania). Nie ma dobrej ani złej liczby dla tej metryki. Zrozumienie, że dowolna liczba wyższa niż jedna oznacza, że żądania są kolejkowane, pomaga określić, czy istnieje nasycenie dysku.

lsblk

Narzędzie lsblk pokazuje urządzenia blokowe dołączone do systemu. Chociaż nie udostępnia ona metryk wydajności, umożliwia szybkie omówienie sposobu konfigurowania tych urządzeń i używanych punktów instalacji.

Oto przykład uruchamiania polecenia lsblk:

lsblk

Jak odczytać dane wyjściowe lsblk

Oto przykładowe dane wyjściowe polecenia lsblk:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  300G  0 disk
└─sda1   8:1    0  300G  0 part /mnt
sdb      8:16   0   30G  0 disk
├─sdb1   8:17   0    1M  0 part
├─sdb2   8:18   0  200M  0 part /boot/efi
├─sdb3   8:19   0    1G  0 part /boot
└─sdb4   8:20   0 28.8G  0 part /
zram0  252:0    0   16G  0 disk [SWAP]

Najważniejsze zagadnienia

  • Poszukaj miejsca, w którym są zainstalowane urządzenia.
  • Sprawdź, czy zamiana nie jest skonfigurowana wewnątrz dysku danych lub dysku systemu operacyjnego, jeśli jest włączona.
  • Łatwym sposobem skorelowania urządzenia blokowego z numerem LUN na platformie Azure jest uruchomienie polecenia ls -lr /dev/disk/azure.

Przetwarzaj

Zbieranie szczegółów na podstawie poszczególnych procesów pomaga zrozumieć, skąd pochodzi obciążenie systemu. Głównym narzędziem do zbierania statystyk procesów jest pidstat, ponieważ zawiera szczegółowe informacje na temat procesora CPU, pamięci i operacji we/wy dla każdego procesu. Na koniec prosty ps sposób sortowania procesu według najwyższego użycia procesora CPU i pamięci kończy metryki.

Uwaga 16.

Te polecenia wymagają uprawnień administratora przy użyciu polecenia sudo , aby wyświetlić szczegóły wszystkich uruchomionych procesów, a nie tylko tych bieżącego użytkownika.

pidstat

Narzędzie pidstat jest również częścią sysstat pakietu. Jest to podobne mpstat do lub iostat w nim, że wyświetla metryki dla danego zakresu czasu. Domyślnie pidstat wyświetla metryki tylko dla procesów z działaniem.

Argumenty dla pidstat elementu są takie same jak w przypadku innych sysstat narzędzi:

  • 1: pierwszy argument liczbowy wskazuje, jak często odświeżać ekran w sekundach.
  • 2: drugi argument liczbowy wskazuje, ile razy dane są odświeżane.

Uwaga 16.

Dane wyjściowe mogą znacznie rosnąć, jeśli istnieje wiele procesów z działaniem.

Przetwarzanie statystyk procesora CPU

Aby zebrać statystyki procesora CPU, uruchom polecenie pidstat bez żadnych opcji:

pidstat 1 2
Jak odczytywać dane wyjściowe statystyk procesora CPU

Oto przykładowe dane wyjściowe polecenia pidstat:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

# Time        UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
16:55:48        0        66    0.0%    1.0%    0.0%    0.0%    1.0%     0  kworker/u16:2-xfs-cil/sdb4
16:55:48        0        70    0.0%    1.0%    0.0%    0.0%    1.0%     0  kworker/u16:6-xfs-cil/sdb4
16:55:48        0        92    0.0%    1.0%    0.0%    0.0%    1.0%     3  kworker/3:1H-kblockd
16:55:48        0       308    0.0%    1.0%    0.0%    0.0%    1.0%     1  kworker/1:1H-kblockd
16:55:48        0      2068    0.0%    1.0%    0.0%    0.0%    1.0%     1  kworker/1:3-xfs-conv/sdb4
16:55:48        0      2181   63.1%    1.0%    0.0%   35.9%   64.1%     5  stress-ng-cpu
16:55:48        0      2182   28.2%    0.0%    0.0%   70.9%   28.2%     6  stress-ng-cpu
16:55:48        0      2183   28.2%    0.0%    0.0%   69.9%   28.2%     7  stress-ng-cpu
16:55:48        0      2184   62.1%    0.0%    0.0%   36.9%   62.1%     0  stress-ng-cpu
16:55:48        0      2185   43.7%    0.0%    0.0%   54.4%   43.7%     2  stress-ng-cpu
16:55:48        0      2186   30.1%    0.0%    0.0%   68.0%   30.1%     7  stress-ng-cpu
16:55:48        0      2187   64.1%    0.0%    0.0%   34.0%   64.1%     3  stress-ng-cpu

Polecenie wyświetla użycie wartości , ( %system%guest nie dotyczy platformy %usrAzure) %waiti całkowitego %CPU użycia dla każdego procesu.

Najważniejsze zagadnienia
  • Poszukaj procesów o wysokich %wait wartościach procentowych (iowait), ponieważ może to wskazywać na procesy, które są blokowane oczekujące na operacje we/wy, co może również wskazywać na nasycenie dysku.
  • Sprawdź, czy żaden pojedynczy proces nie zużywa 100% procesora CPU, ponieważ może wskazywać na jednowątkową aplikację.

Przetwarzanie statystyk pamięci

Aby zebrać statystyki pamięci procesu, użyj -r opcji:

pidstat -r 1 2
Jak odczytywać dane wyjściowe statystyk pamięci

Oto przykładowe dane wyjściowe polecenia pidstat:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

# Time        UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
16:55:49        0      2199 119244.12      0.00   13.6G    7.4G  23.5%  stress-ng-vm
16:55:49        0      2200 392911.76      0.00   13.6G    9.3G  29.7%  stress-ng-vm
16:55:49        0      2211   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2220      0.98      0.00   71.8M    2.4M   0.0%  stress-ng-iomix
16:55:49        0      2239   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2240   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2256      0.98      0.00   71.8M    2.4M   0.0%  stress-ng-iomix
16:55:49        0      2265   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix

Zebrane metryki to:

  • minflt/s: Drobne błędy na sekundę. Ta metryka wskazuje liczbę stron załadowanych z pamięci systemowej (RAM).
  • mjflt/s: Główne błędy na sekundę. Ta metryka wskazuje liczbę stron załadowanych z dysku (SWAP).
  • VSZ: pamięć wirtualna używana w bajtach.
  • RSS: pamięć rezydentna używana (rzeczywista przydzielona pamięć) w bajtach.
  • %MEM: procent całkowitej używanej pamięci.
  • Command: nazwa procesu.
Najważniejsze zagadnienia
  • Poszukaj głównych błędów na sekundę, ponieważ ta wartość wskazuje proces wymiany stron na dysk lub z dysku. To zachowanie może wskazywać na wyczerpanie pamięci i prowadzić do OOM zdarzeń lub obniżenia wydajności z powodu wolniejszej wymiany.
  • Sprawdź, czy pojedynczy proces nie zużywa 100% dostępnej pamięci. To zachowanie może wskazywać na wyciek pamięci.

Napiwek

Za --human pomocą opcji można wyświetlać liczby w formacie czytelnym dla człowieka (czyli KB, MB i GB).

Statystyka operacji we/wy procesu

Aby zebrać statystyki operacji we/wy procesu, użyj -d opcji:

pidstat -d 1 2

Oto przykładowe dane wyjściowe polecenia pidstat:


# Time        UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
16:55:50        0        86     55.4k      0.0B      0.0B       0  kworker/1:1-xfs-conv/sdb4
16:55:50        0      2201      4.0k    194.1k      0.0B       0  stress-ng-iomix
16:55:50        0      2202      0.0B     99.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2203      0.0B     23.8k      0.0B       0  stress-ng-iomix
16:55:50        0      2204      0.0B     15.8k      0.0B       0  stress-ng-iomix
16:55:50        0      2212      0.0B    103.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2213      4.0k     99.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2215      0.0B    178.2k      0.0B       0  stress-ng-iomix
16:55:50        0      2216      7.9k    237.6k      0.0B       0  stress-ng-iomix
16:55:50        0      2218      0.0B     95.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2221      0.0B     15.8k      0.0B       0  stress-ng-iomix

Zebrane metryki to:

  • kB_rd/s: Odczyt kilobajtów na sekundę.
  • kB_wr/s: Zapisuj kilobajty na sekundę.
  • Command: nazwa procesu.
Najważniejsze zagadnienia
  • Poszukaj pojedynczych procesów o wysokich szybkościach odczytu/zapisu na sekundę. Te informacje są wskazówkami dotyczącymi procesów z we/wy więcej niż identyfikowaniem problemów.

Napiwek

Za --human pomocą opcji można wyświetlać liczby w formacie czytelnym dla człowieka (czyli KB, MB i GB).

PS

Na koniec ps polecenie wyświetla procesy systemowe i może być sortowane według procesora CPU lub pamięci.

Aby posortować według %CPU i uzyskać 10 najważniejszych procesów:

ps aux --sort=-%cpu | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2190 94.8  0.0  73524  5588 pts/1    R+   16:55   0:14 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2200 56.8 43.1 14248092 14175632 pts/1 R+ 16:55   0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2192 50.6  0.0  73524  5836 pts/1    R+   16:55   0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2184 50.4  0.0  73524  5836 pts/1    R+   16:55   0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2182 44.3  0.0  73524  5808 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2187 43.4  0.0  73524  5708 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2199 42.9 33.0 14248092 10845272 pts/1 R+ 16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2186 42.0  0.0  73524  5836 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2191 41.2  0.0  73524  5592 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240

Aby posortować według %MEM i uzyskać 10 najważniejszych procesów:

ps aux --sort=-%mem| head -10
       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2200 57.0 43.1 14248092 14175632 pts/1 R+ 16:55   0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2199 43.0 33.0 14248092 10871144 pts/1 R+ 16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        1231  0.2  0.1 336308 33764 ?        Sl   16:46   0:01 /usr/bin/python3 -u bin/WALinuxAgent-2.9.1.1-py3.8.egg -run-exthandlers
root         835  0.0  0.0 127076 24860 ?        Ssl  16:46   0:00 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
root        1199  0.0  0.0  30164 15600 ?        Ss   16:46   0:00 /usr/bin/python3 -u /usr/sbin/waagent -daemon
root           1  0.2  0.0 173208 12356 ?        Ss   16:46   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
root         966  0.0  0.0 3102460 10936 ?       Sl   16:46   0:00 /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-1.26.60/GCAgent/GC/gc_linux_service
panzer      1803  0.0  0.0  22360  8220 ?        Ss   16:49   0:00 /usr/lib/systemd/systemd --user
root        2180  0.0  0.0  73524  6968 pts/1    SL+  16:55   0:00 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240

Konsolidacja raportów

Poniższy skrypt powłoki Bash może zebrać wszystkie szczegóły w jednym wykonaniu i dołączyć dane wyjściowe do pliku w celu uzyskania informacji w przyszłości:

mpstat -P ALL 1 2 && vmstat -w 1 5 && uptime && free -h && swapon && iostat -dxtm 1 1 && lsblk && ls -l /dev/disk/azure && pidstat 1 1 -h --human && pidstat -r 1 1 -h --human && pidstat -d 1 1 -h --human && ps aux --sort=-%cpu | head -20 && ps aux --sort=-%mem | head -20

Aby uruchomić polecenie , utwórz plik z poprzednią zawartością, dodaj execute uprawnienia, uruchamiając chmod +x gather.shpolecenie , a następnie uruchom polecenie za pomocą polecenia sudo ./gather.sh.

Ten skrypt zapisuje dane wyjściowe poleceń w pliku znajdującym się w tym samym katalogu, w którym został wywołany skrypt.

Ponadto wszystkie polecenia w kodach blokowych powłoki Bash omówione w tym dokumencie mogą być uruchamiane za pośrednictwem interfejsu wiersza polecenia platformy Azure przy użyciu rozszerzenia i analizowania danych wyjściowych za pomocą run-command polecenia jq w celu uzyskania danych wyjściowych podobnych do uruchamiania poleceń lokalnie.

az vm run-command invoke -g $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --command-id RunShellScript --scripts "ls -l /dev/disk/azure" | jq -r '.value[0].message'

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.