Opptreden

OProfile Tutorial

OProfile Tutorial

OProfile er en ytelsesprofil for Linux. I denne artikkelen vil vi utforske hva den gjør, hvordan du installerer og konfigurerer den, og hvordan du bruker dataene den samler til å bruke.

Du lurer kanskje på hvorfor du trenger et verktøy som dette, da det er mange gode ytelsesanalyseverktøy tilgjengelig som standard på de fleste Linux-distribusjoner. Hver installasjon inkluderer verktøy som topp og vmstat, og sporing av verktøy som strace er vanligvis bare en apt-get away. Hvor passer OProfile inn?

Verktøyene som er nevnt tidligere er utmerkede for å få et øyeblikksbilde av et Linux-system i sanntid. Verktøy som topp eller topp viser alle prosesser som kjører, deres nåværende minneforbruk og prosessorbruk. Men å vite hvilke prosesser og systemanrop som bruker mest ressurser, blir problematisk.

Det er der OProfile kommer inn. Denne verktøysuiten utfører ikke bare analysene på et dypere nivå, men lagrer også data og lar deg produsere ytelsesrapporter som tilbyr et vell av informasjon som kan hjelpe deg med å feilsøke selv det mest unnvikende ytelsesproblemet.

OProfile er ikke bare for utviklere. I et skrivebordsmiljø kan OProfile hjelpe deg med å spore CPU-intensive bakgrunnsoppgaver eller I / O-samtaler som bremser deg og som ikke er umiddelbart tydelige. På et travelt system med skiftende prosessprioriteter kan disse dataene være vanskelig å samle inn, enn si tolke. Flerprosess-karakteren til et servermiljø gjør denne oppgaven enda vanskeligere med tradisjonelle verktøy.

Når det er sagt, vil utviklere uten tvil få mest mulig utbytte av OProfile. Informasjonen jeg vil presentere vil dekke det grunnleggende i begge brukstilfellene, slik at du kan grave i ytelsesberegningene for ethvert Linux-program.

Installasjon

Det er et veldig viktig notat som må gjøres før du dykker dypt inn i OProfile - du kan ikke installere det i et virtualisert miljø. Hvis du kjører Linux i et VirtualBox-, VMWare- eller lignende VM-miljø, kan det hende at OProfile ikke får tilgang til de nødvendige ytelsestellere for å samle inn data. Videre, selv om du er i stand til å bruke den i et virtuelt miljø, kan presis timing være litt forvrengt basert på belastning på vertssystemet, så vær oppmerksom på dette hvis du ikke kjører på innebygd maskinvare.

Flere Linux-distribusjoner har OProfile i sine pakkehåndteringssystemer, noe som gjør installasjonen enkel:

Et enkelt eksempel

Når programmet er installert, la oss få føttene våte med et trivielt, men nyttig eksempel. Programmet “ls” er en kommando du sannsynligvis bruker hele tiden. Den viser ganske enkelt en liste over filer og mapper i gjeldende katalog. La oss spore utdataene:

sudo operf ls

Du ser noe som ligner på skjermbildet ovenfor. Når profilen er ferdig, vil den kunngjøre “Profiling done.”Den har lagret dataene i en mappe kalt oprofile_data som kan brukes til å generere en rapport.

Å kjøre kommandoen opreport (uten sudo i dette tilfellet) gir en rapport som ligner på denne:

I dette eksemplet viser standardrapporten antall prøver når CPU ikke var i HALT-tilstand (med andre ord aktivt gjorde noe). Kallsyms gir symboloppslag brukt av profilen, og ld.så og libc.så er en del av glibc-pakken, et felles bibliotek koblet til nesten alle Linux-kjørbare filer som gir grunnleggende funksjonalitet som utviklere kan bruke for å unngå å gjenoppfinne hjulet og gi et generelt nivå av kompatibilitet mellom forskjellige systemer. Du kan se at selve programmet ls hadde langt mindre tid enn HALT - hovedtyngden av tungløftingen ble utført av standardbibliotekene.

Når vi er ferdige med rapporten, er det lurt å enten fjerne datamappen eller lagre den for fremtidig analyse. I dette eksemplet vil vi bare fjerne det siden vi kjører prøveøvelser. Siden vi kjørte kommandoen med sudo, må vi fjerne mappen med sudo. Vær forsiktig!

sudo rm -Rf oprofile_data

Et mer komplekst eksempel

I dette neste eksemplet vil vi kjøre et program som faktisk gjør noe mer komplekst enn bare å liste filer i den gjeldende mappen. La oss laste ned WordPress med wget.

sudo operf wget http: // wordpress.org / siste.tjære.gz

Etter dette eksemplet kan vi generere en rapport med kommandoen “opreport”:

Du vil se mye mer aktivitet etter denne. Wget-kommandoen måtte gjøre mye arbeid bak kulissene for å skaffe den nyeste kopien av WordPress. Selv om det ikke er nødvendig å undersøke hvert element, er de interessante severdighetene:

Denne typen data kan gi en mengde informasjon for en utvikler. Men hvordan er dette viktig for en systemadministrator av en server eller en strømbruker på skrivebordet? Ved å vite hvilke deler av et program som tar mest CPU-tid, kan vi finne ut hva som trenger optimalisering eller hvor bremsen oppstår, slik at vi kan ta bedre beslutninger om hvordan vi skal optimalisere systemet vårt.

I dette eksemplet ble mest CPU-tid tatt av krypto / SSL-rutinene. Dette er forståelig fordi kryptografi er en tidkrevende oppgave. Hadde ordpressen.org-nettsted omdirigerte oss ikke til https: // dette biblioteket ville ikke ha blitt brukt, noe som sparer CPU-tid for oss. Nettverkslaget ville fortsatt ha blitt brukt, men å bruke en kablet tilkobling i stedet for en trådløs tilkobling ville sannsynligvis vært mindre beskattende. Deaktivering av fremdriftsindikatoren på wget-programmet (via -nv-bryteren) ville ha spart CPU-tid ved å vise nedlastingsfremdrift.

Grave inn symboler

Selv om standardrapporten gir verdifull og nyttig informasjon, kan vi grave videre. Ved å kjøre dette:

opreport --demangle = smart - symboler

Vi kan finne ut nøyaktig hvor mye CPU-tid som fungerer i bibliotekene som forbrukes:

I dette eksemplet brukte jeg wget-kommandoen ovenfor, men brukte en http: // URL (en som ikke omdirigerer til https: //), og du kan se fraværet av OpenSSL-biblioteker i sporet. Imidlertid, i stedet for bare biblioteksnavnet, har vi nå en fullstendig liste over funksjonene som er involvert. Som du kan se, tok nettverkslaget mesteparten av CPU-tiden som ikke var HALT.

Tar det til neste nivå

I de forrige eksemplene har vi brukt OProfile for å se på ett program om gangen. Du kan undersøke hele systemet ditt samtidig ved å bruke bryteren for hele systemet:

sudo operf - hele systemet

Ved hjelp av denne teknikken vil OProfile samle statistikk på samme måte og stoppe når du treffer CTRL + C. Etterpå kan du kjøre kommandoen opreport. Siden profilen sannsynligvis vil generere mye mer data (spesielt på en stasjonær eller opptatt server).

opreport & gt; rapportere.tekst

Rapporten kan nå vises i en fil som heter rapport.tekst

Lavt overhead

Det er viktig å merke seg at mens OProfile ikke skal forstyrre driften av programmene dine, vil det skape litt overhead og dermed redusere utførelsen. I våre enkle eksempler ovenfor skapte det ikke noe problem, men på et program med lang kjøring og omfattende funksjonsanrop vil du sannsynligvis merke en forskjell. På grunn av dette vil jeg ikke anbefale å bruke dette programmet i et produksjons-servermiljø med mindre de står overfor et kritisk ytelsesproblem som må løses med live bruk. Selv da ville jeg bruke det akkurat lenge nok til å finne problemet.

Konklusjon

OProfile er et kraftig ytelsesprofileringsverktøy. Det tappes inn på det laveste nivået som er tilgjengelig i Linux for å skaffe ytelsestellere og beregninger som gir deg verdifull informasjon om programmene dine.

Borte er dagene med gjetning i feilsøking av ytelse - du har nå makten til å vite nøyaktig hva systemet ditt gjør og hvordan du kan forbedre det. Ved å studere rapportene generert av OProfile, kan du ta informerte, datadrevne beslutninger om å optimalisere systemet ditt.

Mus WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
Hvis du vil forbedre standardfunksjonene til musepekeren, bruk freeware WinMouse. Det legger til flere funksjoner som hjelper deg å få mest mulig ut a...
Mus Mus venstreklikknapp fungerer ikke på Windows 10
Mus venstreklikknapp fungerer ikke på Windows 10
Hvis du bruker en dedikert mus med den bærbare eller stasjonære datamaskinen, men museklikk-knappen fungerer ikke på Windows 10/8/7 av en eller annen ...
Mus Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Hvis du finner ut at musemarkøren hopper eller beveger seg alene, automatisk, tilfeldig mens du skriver inn Windows-bærbar PC eller datamaskin, kan no...