GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak analyzovat data profilu z `perf Record –a` (systémová kolekce)?

Používám perf z linux-2.6.36-gentoo-r4. Soubor /proc/sys/kernel/perf_event_paranoid je nastavena na 0, takže by odtud neměly být žádné problémy.

Protože dlouhodobě běžící aplikace, kterou profiluji, někdy z nějakého neznámého důvodu spadne (nenašel jsem žádné informace o důvodu, proč přestala fungovat), obrátil jsem se na celosystémové profilování s událostmi výkonu.

Dotyčná aplikace provádí paralelní numerické výpočty pomocí MPI (Message Passing Interface) pro komunikaci. Před spuštěním aplikace (pomocí mpirun ) Začal jsem zaznamenávat data profilu celého systému na jednu z uzlů se spouští:

$ perf record -o perf.all.cycles,graph.data -g -e cycles -a &

Poté, co jsem si uvědomil, že aplikace spadla, zabil jsem perf úkol.

Odešlo

$ du -sh perf.all.cycles,graph.data 
14G     perf.all.cycles,graph.data

14 GB dat. Bohužel perf report nepodporuje -a přepínač.

Jak mohu analyzovat data profilování celého systému z perf nástroja ?

Stačí spustit perf report neprodukuje užitečný výstup:

$ perf report -i perf.all.cycles,graph.data
#
# (For a higher level overview, try: perf report --sort comm,dso)
#

To je celý výstup z 14GB profilových dat…

Přijatá odpověď:

Pokud distribuujete výpočty pomocí MPI, pak použití nástroje s podporou MPI by vám poskytlo rozumnější výsledky:s distribuovanou aplikací můžete mít problémy s nerovnováhou zatížení, kdy jeden proces MPI nečinně čeká na data z jiných procesů. . Pokud náhodou profilujete přesně tento proces MPI, váš výkonnostní profil bude úplně špatný.

Prvním krokem je tedy obvykle zjistit způsob komunikace a vyvažování zátěže vašeho programu a identifikovat vzorový vstup, který vám poskytne požadované pracovní zatížení (např. náročné na CPU na úrovni 0) Například mpiP je MPI profilovací nástroj, který dokáže vytvořit velmi kompletní zprávu o komunikačním vzoru, o tom, jak dlouho trvalo každé volání MPI atd.

Poté můžete spustit nástroj pro profilování kódu na jedné nebo více vybraných úrovních MPI. Každopádně pomocí perf na jedné úrovni MPI pravděpodobně není dobrý nápad, protože její měření budou obsahovat také výkon kódu knihovny MPI, což pravděpodobně není to, co hledáte.


Linux
  1. Linux – Jak spustit bootloader z Linuxu?

  2. Jak nahrávat zvuk pomocí ffmpeg na linuxu?

  3. Jak generovat data netflow v linuxu

  1. Jak zabránit náhodnému smazání souboru a zotavit se z něj v Linuxu

  2. Jak používat journalctl k analýze protokolů v Linuxu

  3. Jak migrovat z CentOS 8 na Rocky Linux 8

  1. Jak na SSH na Linuxu z Androidu

  2. Jak získat název hostitele z IP (Linux)?

  3. Jak získat masku sítě z bash?