Izvođenje

Vodič za OProfile

Vodič za OProfile

OProfile je profiler performansi za Linux. U ovom ćemo članku istražiti što radi, kako ga instalirati i konfigurirati te kako podatke okupljene staviti na upotrebu.

Možda se pitate zašto bi vam trebao ovakav alat jer na većini Linux distribucija prema zadanim postavkama postoji mnoštvo dobrih alata za analizu performansi. Svaka instalacija uključuje alate kao što su top i vmstat, a uslužni programi za praćenje poput strace obično su samo prikladni koraci. Gdje se uklapa OProfile?

Prethodno spomenuti alati izvrsni su u dobivanju snimke Linux sustava u stvarnom vremenu. Alati poput top ili htop prikazuju sve pokrenute procese, trenutnu potrošnju memorije i upotrebu procesora. Ali znati koji procesi i sistemski pozivi troše najviše resursa postaje problematično.

Tu dolazi OProfile. Ovaj uslužni paket ne samo da svoju analizu izvodi na dubljoj razini, već također štedi podatke i omogućuje vam izradu izvješća o izvedbi koja nude mnoštvo informacija koje vam mogu pomoći u otklanjanju pogrešaka i kod najneuhvatljivijih problema s izvedbom.

OProfile nije namijenjen samo programerima. U radnom okruženju, OProfile vam može pomoći u pronalaženju pozadinskih zadataka koji zahtevaju CPU ili I / O poziva koji vas usporavaju i nisu odmah vidljivi. U prometnom sustavu s promjenjivim prioritetima procesa, ove podatke može biti teško prikupiti, a kamoli protumačiti. Višeprocesna priroda poslužiteljskog okruženja čini ovaj zadatak još težim s tradicionalnim alatima.

Uprkos tome, programeri će bez sumnje najviše iskoristiti OProfile. Podaci koje ću iznijeti pokrivat će osnove oba slučaja korištenja, tako da možete istražiti mjerne podatke izvedbe bilo kojeg Linux programa.

Montaža

Postoji vrlo važna napomena koju morate imati prije dubokog zaranjanja u OProfile - možda ga nećete moći instalirati u virtualiziranom okruženju. Ako koristite Linux unutar VirtualBox-a, VMWare-a ili sličnog VM okruženja, OProfile možda neće moći pristupiti potrebnim brojačima performansi za prikupljanje podataka. Nadalje, čak i ako ste u mogućnosti da ga koristite u virtualnom okruženju, precizno određivanje vremena može biti donekle iskrivljeno na temelju opterećenja sustava hosta, pa imajte to na umu ako ne radite na izvornom hardveru.

Nekoliko Linux distribucija ima OProfile u svojim sustavima za upravljanje paketima, što olakšava instalaciju:

Jednostavan primjer

Jednom kad se program instalira, namočimo noge trivijalnim, a korisnim primjerom. Program "ls" naredba je koju vjerojatno stalno upotrebljavate. Jednostavno prikazuje popis datoteka i mapa u trenutnom direktoriju. Pratimo njegov izlaz:

sudo operf ls

Vidjet ćete nešto slično gornjoj snimci zaslona. Nakon što je profiler završen, objavit će „Profiliranje završeno.”Spremio je svoje podatke u mapu zvanu oprofile_data koja se može koristiti za generiranje izvješća.

Pokretanjem naredbe opreport (u ovom slučaju bez sudo) stvara se izvješće slično ovome:

U ovom primjeru, zadano izvješće prikazuje broj uzoraka kada CPU nije bio u stanju HALT (drugim riječima, aktivno je nešto radio). Kallsyms pruža traženje simbola koji koristi profiler i ld.tako i libc.tako su dio paketa glibc, zajedničke biblioteke povezane u gotovo sve izvršne datoteke Linuxa koja pruža osnovne funkcionalnosti koje programeri mogu koristiti da ne bi izumili kotačić i pružili generičku razinu kompatibilnosti između različitih sustava. Možete vidjeti da je stvarni program ls imali daleko manje vremena bez HALT-a - glavninu dizanja teških tereta izvele su standardne knjižnice.

Kad završimo s izvješćem, bilo bi dobro ukloniti mapu s podacima ili je spremiti za buduću analizu. U ovom ćemo ga primjeru samo ukloniti budući da izvodimo uzorke vježbi. Budući da smo naredbu izvršili sa sudo, moramo ukloniti mapu sa sudo. Budi oprezan!

sudo rm -Rf podaci_profila

Složeniji primjer

U sljedećem ćemo primjeru pokrenuti program koji zapravo radi nešto složenije od samog popisa datoteka u trenutnoj mapi. Preuzmimo WordPress s wgetom.

sudo operf wget http: // wordpress.org / najnovije.katran.gz

Nakon ovog primjera možemo generirati izvješće naredbom “opreport”:

Vidjet ćete puno više aktivnosti nakon ove. Naredba wget morala je napraviti puno posla iza kulisa da bi dobila najnoviju kopiju WordPressa. Iako nije potrebno ispitivati ​​svaku stavku, zanimljive točke interesa su:

Ova vrsta podataka programeru može pružiti mnoštvo informacija. Ali kako je to važno za administratora sustava poslužitelja ili naprednog korisnika na radnoj površini? Znajući koji dijelovi programa uzimaju najviše procesorskog vremena, možemo saznati što treba optimizirati ili gdje dolazi do usporavanja, omogućavajući nam da donosimo bolje odluke o tome kako optimizirati naš sustav.

U ovom primjeru najviše CPU-a oduzele su kripto / SSL rutine. To je razumljivo jer je kriptografija dugotrajan zadatak. Imao sam wordpress.web mjesto org nije nas preusmjerilo na https: // ova knjižnica ne bi bila korištena, štedi nam CPU vrijeme. Mrežni sloj i dalje bi se koristio, ali korištenje žičane veze umjesto bežične veze vjerojatno bi bilo manje porezno. Onemogućavanje indikatora napretka na wget programu (putem prekidača -nv) uštedjelo bi CPU vrijeme u prikazivanju napretka preuzimanja.

Kopanje u simbole

Iako zadano izvješće pruža vrijedne i korisne informacije, možemo kopati dalje. Pokretanjem ovog:

opreport --demangle = pametni --simboli

Možemo točno saznati koliko procesorskog vremena funkcionira u utrošenim knjižnicama:

U ovom primjeru upotrijebio sam gornju naredbu wget, ali koristio sam http: // URL (onaj koji ne preusmjerava na https: //) i u tragu možete vidjeti odsustvo OpenSSL knjižnica. Međutim, umjesto samo naziva knjižnice, sada imamo cjelovit popis uključenih funkcija. Kao što vidite, mrežni sloj je trošio veći dio CPU-a ne-HALT vremena.

Prelazak na sljedeću razinu

U prethodnim primjerima koristili smo OProfile kako bismo pogledali jedan po jedan program. Možete pregledati cijeli svoj sustav odjednom pomoću preklopke za cijeli sustav:

sudo operf - širok sustav

Koristeći ovu tehniku, OProfile će na isti način prikupiti statistiku i zaustaviti se kad pritisnete CTRL + C. Nakon toga možete pokrenuti naredbu opreport. Budući da će profiler vjerojatno generirati mnogo više podataka (posebno na radnoj površini ili zauzetom poslužitelju).

opreport & gt; izvješće.txt

Izvješće je sada moguće vidjeti u datoteci koja se naziva izvještaj.txt

Nisko iznad glave

Važno je napomenuti da, iako OProfile ne bi trebao ometati rad vaših programa, stvorit će malo troškova i na taj način usporiti izvršavanje. U našim jednostavnim primjerima gore nije stvorio problem, ali na programu s dugim izvršavanjem i opsežnim pozivima funkcija vjerojatno ćete primijetiti razliku. Zbog toga ne bih preporučio upotrebu ovog programa u okruženju produkcijskog poslužitelja, osim ako se ne suočite s kritičnim problemom izvedbe koji se mora riješiti upotrebom uživo. Čak i tada, koristio bih ga dovoljno dugo da pronađem problem.

Zaključak

OProfile je moćan alat za profiliranje performansi. Dolazi do najniže razine dostupne u Linuxu kako bi dobio brojače performansi i mjerne podatke koji vam daju vrijedne informacije o vašim programima.

Prošlo je vrijeme pogađanja u otklanjanju pogrešaka u izvedbi - sada imate moć preciznog saznanja što vaš sustav radi i kako ga poboljšati. Proučavajući izvješća koja generira OProfile, možete donijeti informirane odluke na temelju podataka o optimizaciji vašeg sustava.

Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...
Kako prikazati OSD prekrivač u aplikacijama i igrama na cijelom zaslonu za Linux
Igranje igara preko cijelog zaslona ili upotreba aplikacija u režimu preko cijelog zaslona bez ometanja može vas odsjeći od relevantnih informacija o ...
Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...