Úvod
Linux perf tool je lehký nástroj příkazového řádku pro profilování a monitorování výkonu CPU v systémech Linux. Přestože je nástroj jednoduchý, poskytuje podrobné informace, které pomáhají při analýze CPU.
Příkaz obsahuje mnoho dílčích příkazů pro shromažďování, sledování a analýzu dat událostí CPU.
Tento průvodce demonstruje nástroj pro výkon pomocí příkladů.

Předpoklady
- Přístup k terminálu.
- Přístup k rootovi nebo uživateli s právy sudo.
- Textový editor, jako je nano nebo Vi/Vim.
Jak nainstalovat perf
Program perf není v systémech Linux předinstalovaný. Instalace se liší podle distribuce Linuxu:
- Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
- RHEL/CentOS
sudo yum install perf
- Fedora
sudo dnf install perf
Ověřte instalaci pomocí:
perf --version

Na výstupu se vytiskne číslo verze, což znamená, že instalace byla úspěšná.
Povolit běžným uživatelům používat výkon
perf
příkaz ve výchozím nastavení vyžaduje sudo
privilegia. Aby běžní uživatelé mohli používat perf
, proveďte následující:
1. Přepněte na uživatele root:
sudo su -
2. Zadejte následující příkaz:
echo 0 > /proc/sys/kernel/perf_event_paranoid
Příkaz umožňuje běžným uživatelům používat nástroj perf v aktuální relaci.
3. Přepněte zpět na běžného uživatele pomocí:
exit

Chcete-li změny zachovat, proveďte následující:
1. Upravte sysctl konfigurační soubor:
sudo nano /etc/sysctl.conf
2. Přidejte do souboru následující:
kernel.perf_event_paranoid = 0
3. Uložte změny a ukončete nano.
Syntaxe příkazu Linux perf
perf
syntaxe příkazu je:
perf <options> subcommand <options/arguments>
Nástroj perf funguje jako git. Funguje jako rozhraní pro různé dílčí příkazy a různé činnosti. Spuštění příkazu bez jakýchkoli voleb nebo argumentů zobrazí seznam dostupných dílčích příkazů.
Dílčí příkazy výkonu Linux
Níže je uvedena tabulka s běžně používaným perf
dílčí příkazy:
Dílčí příkaz | Popis |
---|---|
annotate | Čte perf.data a zobrazí anotovaný kód. |
list | Uvádí seznam všech měřitelných událostí. |
stat | Shromažďuje statistiky výkonu. |
record | Zaznamenává vzorky do perf.data . |
report | Čte perf.data a zobrazí profil. |
script | Čte perf.data a zobrazí výstup trasování. |
top | Nástroj pro profilování. |
Dílčí příkazy mají další možnosti. Chcete-li zobrazit volby pro jednotlivé dílčí příkazy, spusťte:
perf <subcommand> -h

Výstup zobrazí stručné okno nápovědy pro konkrétní dílčí příkaz.
Příklady příkazů Linux perf
Chcete-li otestovat perf
používáme malou instanci BMC s0.d1 phoenixNAP se systémem Ubuntu 18.04.
Poznámka: Pro další případy použití malé instance BMC se podívejte na některé z našich průvodců:
- Nastavení brány firewall na instanci BMC s0.d1.small
- Jak nastavit Load Balancer na serveru s0.d1.small BMC
- Nastavení prostředí Sandbox na instanci S.0 BMC
Při profilování CPU pomocí perf
Typickým pracovním postupem je použití:
1. perf list
najít události.
2. perf stat
k počítání událostí.
3. perf record
k zápisu událostí do souboru.
4. perf report
pro procházení nahraného souboru.
5. perf script
k výpisu událostí po zpracování.
Výstupy se liší podle systému a místně dostupných zdrojů.
1. Seznam dostupných událostí
Seznam všech měřitelných událostí pomocí perf s list
dílčí příkaz:
sudo perf list

Výstup obsahuje seznam všech podporovaných událostí bez ohledu na typ. Bez sudo
, příkaz zobrazí kratší seznam. Při odkazování na události v jiných dílčích příkazech použijte -e
následuje název události z prvního sloupce.
Přidejte parametr filtru za příkaz pro omezení seznamu podle názvu události (první sloupec) nebo typu události (druhý sloupec). Například zobrazit pouze hardwarové události pomocí:
sudo perf list hardware
Nebo alternativně:
sudo perf list hw

Výstup zobrazuje filtrovaný výsledek na základě poskytnutého parametru nebo parametrů.
2. Zobrazit profil systému CPU v reálném čase
Chcete-li zobrazit profil CPU v reálném čase, použijte top
dílčí příkaz:
sudo perf top

Příkaz zobrazuje vzorkované funkce v reálném čase, podobně jako příkaz Linux top. Výstup vytiskne následující tři sloupce v pořadí zleva doprava:
1. Využití CPU vázané na funkci vyjádřenou v procentech.
2. Knihovna nebo program, který funkci používá.
3. Symbol a název funkce, kde [k]
je prostor jádra a [.]
je uživatelský prostor.
Ve výchozím nastavení perf top
monitoruje všechny online CPU. Další možnosti umožňují:
- Monitorování všech CPU (včetně nečinných) (
-a
). - Monitorování konkrétních procesorů (
-C
). - Ovládání vzorkovací frekvence (
-F
).
Chcete-li během režimu prohlížení zobrazit další možnosti, stiskněte h .

Chcete-li profiler ukončit a vrátit se k terminálu, stiskněte q .
3. Zobrazit statistiky výkonu CPU pomocí perf
Chcete-li zobrazit statistiku výkonu CPU pro všechny standardní hardwarové a softwarové události celého CPU, spusťte:
sudo perf stat -a sleep 5

Výstup zobrazuje podrobnou zprávu pro celý systém shromážděnou během pěti sekund. Bez sleep 5
, systém měří až do ukončení pomocí CTRL +C .
4. Zobrazit výkon procesoru pro příkaz
Chcete-li zkontrolovat statistiku výkonu CPU pro konkrétní příkaz, spusťte:
sudo perf stat <command>
Zkontrolujte například ls
příkaz s:
sudo perf stat ls

Celková doba trvání příkazu se zobrazuje jako uplynulý čas na konci výstupu.
5. Zobrazit výkon procesoru pro proces
Připojte statistiky výkonu CPU ke konkrétnímu běžícímu procesu pomocí -p
tag a poskytnutí ID procesu (PID):
sudo perf -p <PID> sleep 5

Výstup shromažďuje a zobrazuje statistiky výkonu pro daný proces.
6. Počítat systémová volání událostí podle typu
Chcete-li počítat systémová volání jádra Linuxu podle typu, spusťte:
sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5
Po pěti sekundách výstup zobrazí všechna celosystémová volání a jejich počet.
7. Zaznamenejte cykly CPU
Cykly CPU jsou hardwarovou událostí. Chcete-li zaznamenávat cykly CPU, použijte record
dílčí příkaz a zadejte název události s -e
tag:
sudo perf record -e cycles sleep 10

Záznam uloží data do perf.data soubor. Výstup vytiskne velikost souboru a počet vzorků dat, který obsahuje.
8. Zobrazit výsledky výkonu
Chcete-li zobrazit výsledky výkonu z perf.data soubor, spusťte:
sudo perf report

Příkaz pomáhá číst perf.data soubor, zobrazující všechny shromážděné události a statistiky. Chcete-li prohlížeč opustit, stiskněte CTRL +C .
9. Upravit výstupní formát vzorku
Chcete-li zobrazit ukázkový výstup ve standardním výstupním formátu, spusťte:
sudo perf report --stdio

Mezi další úpravy patří zobrazení čísla vzorku pro každou událost (-n
) a zobrazení konkrétních sloupců (--sort <column name>
). Například:
sudo perf report -n --sort comm,symbol --stdio

Výstup přidá sloupec pro číslo vzorku a informace o příkazu a symbolu.
10. Zobrazit výstup trasování
Použijte script
dílčí příkaz pro výpis všech událostí z perf.dat A. Například:
sudo perf script

Výstup vytiskne perf.data podrobnosti v časovém pořadí. Použijte script
dílčí příkaz jako data po zpracování.
11. Zobrazit záhlaví trasování
Chcete-li zobrazit všechny události z perf.data s dalšími informacemi v záhlaví trasování spusťte:
sudo perf script --header

Výstup zobrazuje informace o záhlaví souboru, například kdy začalo trasování, jak dlouho trvalo, informace o CPU a příkaz, který načetl data. Seznam událostí je za informací v záhlaví.
12. Vypsat nezpracovaná data
Vypsat nezpracovaná data jako hexadecimální z perf.data použijte -D
možnost:
sudo perf script -D

Výsledkem jsou nezpracované informace o trasování událostí ve formátu ASCII. Tato možnost je užitečná pro ladění událostí.
13. Anotace dat
Chcete-li data anotovat a dále je rozebírat, použijte annotate
dílčí příkaz:
sudo perf annotate --stdio -v

-v
možnost poskytuje podrobný výstup. Výsledek ukazuje zdrojový kód a rozebrání událostí.
Závěr
Poté, co si projdete příklady v této příručce, znáte základy používání Linuxu perf
příkaz a některé hlavní dílčí příkazy. Pomocí příkazu man zobrazíte úplnou dokumentaci nástroje pro analýzu výkonu a dílčích příkazů.