Narzędzie do monitorowania i analizy wydajności dla Linux

Narzędzie do monitorowania i analizy wydajności dla Linux

Kiedy mówimy o wydajności w obliczeniach, odnosimy się do relacji między naszymi zasobami a zadaniami, które pozwala nam wykonać w danym okresie.

Narzędzie do monitorowania i analizy wydajności dla Linux

W dniu zaciekłej konkurencji między firmami ważne jest, abyśmy nauczyli się korzystać z tego, co mamy w najlepszym stanie. Marnotrawstwo zasobów sprzętowych lub oprogramowania lub brak zdolności wiedzy, jak je bardziej efektywnie wykorzystywać, kończy się stratą, której po prostu nie możemy sobie pozwolić, jeśli chcemy być na szczycie naszej gry.

Jednocześnie musimy uważać, aby nie przenieść naszych zasobów do limitu, w którym trwałe użytkowanie da nieodwracalne szkody.

W tym artykule wprowadzimy Cię do stosunkowo nowego narzędzia do analizy wydajności i zapewniamy wskazówki, których można użyć do monitorowania systemów Linux, w tym sprzętu i aplikacji. Pomoże ci to upewnić się, że działają, abyś był w stanie uzyskać pożądane wyniki bez marnowania zasobów lub własnej energii.

Wprowadzenie i instalowanie Perf w Linux

Między innymi Linux zapewnia wygodne narzędzie do monitorowania wydajności i analizy perf. Więc co wyróżnia perf z innych znanych narzędzi, z którymi już się znasz?

Odpowiedź jest taka perf zapewnia dostęp do jednostki monitorowania wydajności w procesorze, a tym samym pozwala nam przyjrzeć się zachowaniu sprzętu i powiązanych zdarzeń.

Ponadto może również monitorować zdarzenia oprogramowania i tworzyć raporty z gromadzonych danych.

Możesz zainstalować perf w dystrybucjach opartych na RPM z:

# Aktualizacja Yum && Yum Instal Perf [Centos / Rhel / Fedora] # DNF UPDATE && DNF instaluj perf [Fedora 23+ wydania] 

W Debian i pochodne:

# Sudo Applitude Aktualizacja && sudo Aptitude instaluj narzędzia Linux-$ (uname -r) Linux-tools-Generic 

Jeśli Uname -r W powyższym poleceniu zwraca dodatkowe ciągi oprócz faktycznej wersji (3.2.0-23-generalny w moim przypadku) być może będziesz musiał wpisać Linux-tools-3.2.0-23 zamiast używać wyjścia niezmienny.

Należy również zauważyć perf daje niepełne wyniki, gdy uruchomi się w gościa na VirtualBox lub VMware, ponieważ nie umożliwiają one dostępu do liczników sprzętowych jako innych technologii wirtualizacji (takich jak KVM lub XEN).

Dodatkowo pamiętaj, że niektórzy perf Polecenia mogą być domyślnie ograniczone do root, które można wyłączyć (do momentu ponownego uruchomienia systemu), wykonując:

# echo 0>/proc/sys/jądro/perf_event_paranoid 

Jeśli chcesz wyłączyć paranoidalny tryb na stałe, zaktualizuj następujące ustawienie w /etc/sysctl.conf plik.

jądro.perf_event_paranoid = 0 

Podkomendy

Po zainstalowaniu perf, Możesz zapoznać się z jego stroną Man, aby uzyskać listę dostępnych podkomenda. Aby uzyskać najlepsze i pełniejsze wyniki, użyj perf albo jak źródło lub przez sudo.

Lista perf

Lista perf (bez opcji) Zwraca wszystkie symboliczne typy zdarzeń (długa lista). Jeśli chcesz wyświetlić listę zdarzeń dostępnych w określonej kategorii, użyj perf Lista, a następnie nazwa kategorii ([HW | SW | pamięć podręczna | TracePoint | PMU | Event_Glob]), Jak na przykład:

Wyświetl listę zdarzeń wstępnie zdefiniowanych oprogramowania w Linux:

# lista perf SW 
Listowe oprogramowanie wstępnie zdefiniowane w Linux

Perf Stat

perf Stat uruchamia polecenie i zbiera statystyki wydajności Linux podczas wykonywania takiego polecenia. Co dzieje się w naszym systemie, kiedy biegamy Dd?

# Perf Stat dd if =/dev/zero = test.ISO BS = 10 m crowin = 1 
Zbiera statystyki wydajności polecenia Linux

Statystyki pokazane powyżej wskazują między innymi:

  1. Wykonanie Dd Dowództwo wzięło 21.812281 milisekundy procesora. Jeśli podzielimy ten numer przez wartość „Seconds Time, która upłynęła” (23.914596 milisekund), daje 0.912 (Używany procesor).
  2. Podczas wykonania polecenia, 15 Przełączniki kontekstowe (znane również jako przełączniki procesowe) wskazują, że procesory zostały przełączone 15 razy z jednego procesu (lub wątku) na inny.
  3. 2 Migracje procesorów są oczekiwanym rezultatem, gdy w 2-rdzeniowym procesorze obciążenie pracą jest równomiernie rozmieszczone między liczbą rdzeni.
    W tym czasie (21.812281 milisekund), całkowita liczba spożywanych cykli procesora była 62 025 623, które podzielone przez 0.021812281 sekundy daje 2.843 GHZ.
  4. Jeśli podzielimy liczbę cykli według całkowitej liczby instrukcji, które otrzymujemy 4.9 Cykle na instrukcję, co oznacza, że ​​każda instrukcja zajęła prawie 5 cykli procesora, aby zakończyć (średnio). Możemy winić to (przynajmniej częściowo) o liczbie gałęzi i gałęzi (patrz poniżej), które kończą się marnotrawstwem lub niewłaściwym użyciem cykli procesora.
  5. Gdy polecenie zostało wykonane, w sumie 3552,630 Gałęzie napotkano. To jest reprezentacja punktów decyzyjnych i pętli w kodzie. Im więcej gałęzi, tym niższa wydajność. Aby to zrekompensować, wszystkie nowoczesne procesory próbują przewidzieć przepływ, jaki przyjmie kod. 51 348 gałęzie wskazują, że funkcja prognozowania była błędna 1.45% czasów.

Ta sama zasada dotyczy gromadzenia statystyk (lub innymi słowy, profilowanie) podczas uruchomienia aplikacji. Wystarczy uruchom żądaną aplikację i po rozsądnym okresie (co zależy od Ciebie) Zamknij ją i perf wyświetli statystyki na ekranie. Analizując te statystyki, możesz zidentyfikować potencjalne problemy.

Perf

Perf jest podobny do Top Command, ponieważ wyświetla profil systemu prawie w czasie rzeczywistym (znany również jako analiza na żywo).

Z -A opcja wyświetlisz wszystkie znane typy zdarzeń, podczas gdy -mi Opcja pozwoli Ci wybrać określoną kategorię zdarzeń (jak zwrócono przez Lista perf):

Wyświetli wydarzenie wszystkich cykli.

Perf Top -a 

Wyświetli wszystkie zdarzenia związane ze zegarem procesora.

Perf Top -e CPU -CLOCK 
Analiza na żywo wydajności Linuksa

Pierwsza kolumna z powyższego wyjścia reprezentuje procent próbek pobranych od początku uruchomienia, zgrupowany według symbolu funkcji i wspólnego obiektu. Więcej opcji jest dostępnych w Man perf-top.

Record perf

perf rekord uruchamia polecenie i zapisuje dane statystyczne w pliku o nazwie perf.dane wewnątrz obecnego katalogu roboczego. Działa podobnie jak Perf Stat.

Typ Record perf a następnie polecenie:

# perf record dd if =/dev/null of = test.ISO BS = 10 m crowin = 1 
Zapisz dane statystyczne

Raport perf

Raport perf formaty dane zebrane w perf.dane Powyżej w raporcie o wydajności:

# Sudo Perf Report 
Raport o wydajności perf Linux

Wszystkie powyższe Podkomendy mieć stronę dedykowanego mężczyzny, którą można wywołać jako:

# Man perf-subcommand 

Gdzie Podkomenda jest albo lista, Stat, szczyt, nagrywać, Lub raport. Są to najczęściej używane podkomendy; inne są wymienione w dokumentacji (link patrz link).

Streszczenie

W tym przewodniku przedstawiliśmy Cię perf, Narzędzie do monitorowania wydajności i analizy dla Linux. Gorąco zachęcamy do zapoznania się z dokumentacją prowadzoną w https: // perf.Wiki.jądro.org.

Jeśli znajdziesz aplikacje zużywające wysoki odsetek zasobów, możesz rozważyć modyfikację kodu źródłowego lub użyć innych alternatyw.

Jeśli masz pytania dotyczące tego artykułu lub sugestie do poprawy, wszyscy jesteśmy uszy. Nie krępuj się do nas, używając poniższego formularza komentarza.

Zostań certyfikowanym administratorem systemu