Perf (Linux) - Perf (Linux)
Úložiště | https://github.com/torvalds/linux/tree/master/tools/perf |
---|---|
Napsáno | C |
Operační systém | Linuxové jádro |
Typ | Monitorování výkonu a testování |
Licence | GNU GPL |
webová stránka | výkon |
výkon (někdy nazývané perf_events[1] nebo nástroje perf, původně Čítače výkonu pro Linux, PCL)[2] je analýza výkonu nástroj dovnitř Linux, dostupný z Linuxové jádro verze 2.6.31 v roce 2009.[3] Uživatelský prostor ovládací nástroj, pojmenovaný výkon
, je přístupný z příkazový řádek a poskytuje řadu dílčí příkazy; je schopen statistického profilování celého systému (jak jádra, tak kódu uživatele).
Podporuje to čítače výkonu hardwaru, sledovací body, čítače výkonu softwaru (např. hrtimer) a dynamické sondy (například kprobes nebo uprobes).[4] V roce 2012 dva IBM inženýři uznali perf (spolu s OProfil ) jako jeden ze dvou nejčastěji používaných počítadlo výkonu profilovací nástroje na Linuxu.[5]
Implementace
Rozhraní mezi nástrojem perf a jádrem se skládá pouze z jednoho Syscall a provádí se pomocí a deskriptor souboru a oblast mapované paměti.[6] Na rozdíl od LTTng nebo starší verze oprofil, žádná služba démoni jsou potřebné, protože většina funkcí je integrována do jádra. Obslužný program perf vypíše nezpracovaná data z mapované vyrovnávací paměti na disk, jakmile se vyrovnávací paměť zaplní. Podle R. Vitilla (LBNL ), profilování prováděné perf zahrnuje velmi nízkou režii.[6]
Od roku 2010[Aktualizace]zahrnují architektury, které poskytují podporu pro hardwarové čítače x86, PowerPC 64, UltraSPARC (III a IV ), PAŽE (v5, v6, v7, Cortex-A8 a -A9 ), Alfa EV56 a SuperH.[4] Využití záznamů o poslední větvi,[7] A trasování větví implementace k dispozici v Intel CPU od té doby Pentium 4, je k dispozici jako oprava.[6] Od verze 3.14 Hlavní linka linuxového jádra, vydaný 31. března 2014, perf také podporuje provozní průměrný limit výkonu (RAPL) pro měření spotřeby energie, která je k dispozici jako funkce určitých procesorů Intel.[8][9][10]
Perf je nativně podporován v mnoha populárních linuxových distribucích, včetně Red Hat Enterprise Linux (od verze 6 vydané v roce 2010)[11] a Debian v linux-tools-common balíčku (od jeho Sevření verze vydaná v roce 2011).[12]
Dílčí příkazy
perf se používá s několika dílčími příkazy:
- stat: měřit celkový počet událostí pro jeden program nebo pro systém na nějakou dobu
- horní: horní -jako dynamický pohled na nejžhavější funkce
- záznam: změřit a uložit vzorkovací data pro jeden program[13]
- zpráva: analyzovat soubor generovaný záznamem perf; může generovat plochý nebo grafový profil.[13]
- opatřit poznámkami: anotovat zdroje nebo sestavu
- plán: sledování / měření akcí a latencí plánovače[14]
- seznam: seznam dostupných událostí
Kritika
Dokumentace perf není příliš podrobná (od roku 2014); například nezdokumentuje většinu událostí ani nevysvětluje jejich aliasy (k získání názvů a kódů událostí se často používají externí nástroje[15]).[16] Perf tools také nemohou profilovat na základě skutečného času nástěnných hodin.[16]
Bezpečnostní
Subsystém perf linuxových jader od 2.6.37 do 3.8.8 a jádra RHEL6 2.6.32 obsahoval chybu zabezpečení (CVE -2013-2094 ), který byl zneužit k získání oprávnění root místním uživatelem.[17][18] Problém byl způsoben používáním nesprávného typu (32bitový int místo 64bitový) v cestě ověřovacího kódu event_id.[19]
Viz také
- Seznam nástrojů pro analýzu výkonu
- OProfil
- Výkonové aplikační programovací rozhraní
- Profilování (počítačové programování)
Reference
- ^ Vince Weaver, Neoficiální web Linux Perf Events
- ^ Vlastnosti a režie události Linux perf // 2013 FastPath Workshop, Vince Weaver
- ^ Jake Edge, Perfcounters přidán do hlavní řady, LWN 1. července 2009, „začleňování čítačů do hlavní řady během nedávno dokončeného sloučeného okna 2.6.31“
- ^ A b Arnaldo Carvalho de Melo, Nové Linuxové nástroje, prezentace z Linux Kongress, září 2010
- ^ A. Zanella, R. Arnold. Vyhodnoťte výkon systému Linux v systému POWER. Analyzujte výkon pomocí nástrojů Linux, 12. června 2012 // IBM DeveloperWorks Technical library
- ^ A b C Roberto A. Vitillo (LBNL ). VÝVOJ NÁSTROJŮ VÝKONU, 16. června 2011, prezentace z konference „Budoucí výpočty ve fyzice částic“
- ^ Příručka pro vývojáře softwaru Intel® 64 a IA-32, svazek 3B: Průvodce programováním systému, část 2. Intel. Června 2009. str. 19-2 obj. 3.
- ^ Jake Edge (04.04.2014). „Spousta nových funkcí dokonalosti“. LWN.net. Citováno 2014-04-22.
- ^ Jacob Pan (2013-04-02). „Ovladač RAPL (Running Average Power Limit)“. LWN.net. Citováno 2014-04-22.
- ^ „kernel / git / torvalds / linux.git - zdrojový strom jádra Linuxu“. Git.kernel.org. 2014-01-20. Citováno 2014-03-31.
- ^ 6.4. Čítače výkonu pro Linux (PCL) Nástroje a výkon // Příručka pro vývojáře RHEL
- ^ "Debian - Podrobnosti balíčku linux-tools-2.6.32 v squeeze". Packages.debian.org. Citováno 2014-03-31.
- ^ A b Urs Fässlerformát souboru perf Archivováno 2012-12-14 na Wayback Machine, CERN OpenLab, 2011
- ^ Ingo Molnár, 'perf sched': Nástroj pro zachycení, měření a analýzu latencí a chování plánovače, 17. září 2009
- ^ Jak sledovat celou škálu událostí výkonu CPU // Bojan Nikolic, 2012
- ^ A b Robert Haas (PostgreSQL), perf: dobrý, špatný, ošklivý // 6. června 2012
- ^ Michael Larabel (2013-05-15). „Byla zneužita nová chyba jádra Linuxu“. Phoronix.
- ^ corbet (2013-05-15). "Zranitelnost lokálního root v jádře". LWN.
- ^ Joe Damato (2013-05-20). „Bližší pohled na nedávnou chybu eskalace oprávnění v systému Linux (CVE-2013-2094)“.
externí odkazy
- perfova wiki na kernel.org
- Arnaldo Carvalho de Melo, Nové Linuxové nástroje, prezentace z Linux Kongress, září 2010
- Profilování linuxových jader s dokonalostí tutorial
- Grafy podpory hardwarového PMU - zkontrolujte sloupec perf_event
- příklady perf Brendan Gregg