Ydeevne

OProfile Tutorial

OProfile Tutorial

OProfile er en performance-profil til Linux. I denne artikel undersøger vi, hvad det gør, hvordan man installerer og konfigurerer det, og hvordan man bruger de data, det samler, til brug.

Du spekulerer måske på, hvorfor du har brug for et værktøj som dette, da der er masser af gode præstationsanalyseværktøjer tilgængelige som standard på de fleste Linux-distributioner. Hver installation inkluderer værktøjer som top og vmstat, og sporingsværktøjer som strace er normalt bare en apt-get away. Hvor passer OProfile ind?

De tidligere nævnte værktøjer er fremragende til at få et øjebliksbillede af et Linux-system i realtid. Værktøjer som top eller htop viser alle kørende processer, deres aktuelle hukommelsesforbrug og processorbrug. Men at vide, hvilke processer og systemopkald der bruger mest ressourcer, bliver problematisk.

Det er her OProfile kommer ind. Denne hjælpepakke udfører ikke kun sin analyse på et dybere niveau, men gemmer også data og giver dig mulighed for at producere præstationsrapporter, der tilbyder et væld af oplysninger, der kan hjælpe dig med at debugge selv det mest undvigende præstationsproblem.

OProfile er ikke kun for udviklere. I et skrivebordsmiljø kan OProfile hjælpe dig med at spore CPU-intensive baggrundsopgaver eller I / O-opkald, der bremser dig og ikke umiddelbart er tydelige. På et travlt system med skiftende procesprioriteter kan disse data være svære at indsamle, endsige fortolke. Servermiljøets multi-process karakter gør denne opgave endnu vanskeligere med traditionelle værktøjer.

Når det er sagt, vil udviklere uden tvivl få mest mulig ud af OProfile. De oplysninger, jeg præsenterer, dækker det grundlæggende i begge brugssager, så du kan grave i præstationsmålingerne for ethvert Linux-program.

Installation

Der er en meget vigtig note, der skal laves, før du dykker dybt ned i OProfile - du kan muligvis ikke installere den i et virtualiseret miljø. Hvis du kører Linux i et VirtualBox-, VMWare- eller lignende VM-miljø, kan OProfile muligvis ikke få adgang til de nødvendige præstationstællere til at indsamle data. Desuden, selvom du er i stand til at bruge det i et virtuelt miljø, kan den nøjagtige timing være noget forvrænget baseret på værtssystembelastningen, så husk dette, hvis du ikke kører på indbygget hardware.

Flere Linux-distributioner har OProfile i deres pakkehåndteringssystemer, hvilket gør installationen let:

Et simpelt eksempel

Når programmet er installeret, lad os få fødderne våde med et trivielt, men nyttigt eksempel. Programmet “ls” er en kommando, du sandsynligvis bruger hele tiden. Det viser simpelthen en liste over filer og mapper i det aktuelle bibliotek. Lad os spore dens output:

sudo operf ls

Du kan se noget svarende til ovenstående skærmbillede. Når profilen er færdig, vil den annoncere “Profilering udført.”Det har gemt sine data i en mappe kaldet oprofile_data, som kan bruges til at generere en rapport.

At køre kommandoen opreport (uden sudo i dette tilfælde) producerer en rapport svarende til denne:

I dette eksempel viser standardrapporten antallet af prøver, når CPU'en ikke var i HALT-tilstand (med andre ord aktivt gjorde noget). Kallsyms giver symbolopslag brugt af profilen og ld.så og libc.så er en del af glibc-pakken, et fælles bibliotek, der er knyttet til næsten alle Linux-eksekverbare filer, der giver grundlæggende funktionalitet, som udviklere kan bruge til at undgå at genopfinde hjulet og give et generelt niveau af kompatibilitet mellem forskellige systemer. Du kan se, at det faktiske program ls havde langt mindre ikke-HALT-tid - hovedparten af ​​det tunge løft blev udført af standardbibliotekerne.

Når vi er færdige med rapporten, er det en god ide at enten fjerne datamappen eller gemme den til fremtidig analyse. I dette eksempel fjerner vi det bare, da vi kører prøveøvelser. Da vi kørte kommandoen med sudo, skal vi fjerne mappen med sudo. Vær forsigtig!

sudo rm -Rf oprofile_data

Et mere komplekst eksempel

I dette næste eksempel kører vi et program, der faktisk gør noget mere komplekst end bare at liste filer i den aktuelle mappe. Lad os downloade WordPress med wget.

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

Efter dette eksempel kan vi generere en rapport med kommandoen “opreport”:

Du vil se meget mere aktivitet efter denne. Wget-kommandoen var nødt til at gøre en masse arbejde bag kulisserne for at få den nyeste kopi af WordPress. Selvom det ikke er nødvendigt at undersøge hvert emne, er de interessante seværdigheder:

Denne form for data kan give et væld af oplysninger til en udvikler. Men hvordan er dette vigtigt for en systemadministrator af en server eller en strømbruger på et skrivebord? Ved at vide, hvilke dele af et program der tager mest CPU-tid, kan vi finde ud af, hvad der skal optimeres, eller hvor afmatningen sker, så vi kan tage bedre beslutninger om, hvordan vi optimerer vores system.

I dette eksempel blev den mest CPU-tid taget af crypto / SSL-rutinerne. Dette er forståeligt, fordi kryptografi er en tidskrævende opgave. Havde wordpress.org-websted omdirigerede os ikke til https: // dette bibliotek ville ikke være brugt, hvilket sparer os CPU-tid. Netværkslaget ville stadig være blevet brugt, men brug af en kabelforbindelse i stedet for en trådløs forbindelse ville sandsynligvis have været mindre beskatning. Deaktivering af statusindikatoren på wget-programmet (via -nv-kontakten) ville have sparet CPU-tid ved visning af download-status.

Gravning i symboler

Selvom standardrapporten giver værdifulde og nyttige oplysninger, kan vi grave videre. Ved at køre dette:

opreport --demangle = smart - symboler

Vi kan finde ud af nøjagtigt, hvor meget CPU-tid der fungerer i de forbrugte biblioteker:

I dette eksempel brugte jeg wget-kommandoen ovenfor, men brugte en http: // URL (en, der ikke omdirigerer til https: //), og du kan se fraværet af OpenSSL-biblioteker i sporet. I stedet for kun biblioteksnavnet har vi nu en fuld liste over de involverede funktioner. Som du kan se, forbrugte netværkslaget det meste af CPU-tiden, der ikke var HALT.

At tage det til næste niveau

I de tidligere eksempler har vi brugt OProfile til at se på et program ad gangen. Du kan undersøge hele dit system på én gang ved hjælp af -system-wide switch:

sudo operf - hele systemet

Ved hjælp af denne teknik vil OProfile indsamle statistikker på samme måde og stoppe, når du rammer CTRL + C. Bagefter kan du køre kommandoen opreport. Da profilen sandsynligvis genererer meget flere data (især på en desktop eller optaget server).

oprapport & gt; rapport.txt

Rapporten kan nu ses i en fil kaldet rapport.txt

Lavt overhead

Det er vigtigt at bemærke, at mens OProfile ikke skal forstyrre driften af ​​dine programmer, vil det skabe lidt overhead og dermed bremse udførelsen. I vores enkle eksempler ovenfor skabte det ikke et problem, men på et program med lang udførelse og omfattende funktionsopkald vil du sandsynligvis bemærke en forskel. På grund af dette vil jeg ikke anbefale at bruge dette program i et produktionsservermiljø, medmindre man står over for et kritisk ydeevneproblem, der skal løses med live brug. Selv da ville jeg bruge det lige længe nok til at finde problemet.

Konklusion

OProfile er et effektivt værktøj til profilering af ydeevne. Det tappes ind på det laveste niveau, der er tilgængeligt i Linux, for at opnå ydeevnedeltællere og metrics, der giver dig værdifuld information om dine programmer.

Dage med gætterier i fejlfinding af ydeevne er forbi - du har nu beføjelsen til at vide præcist, hvad dit system laver, og hvordan du forbedrer det. Ved at studere rapporter genereret af OProfile kan du træffe informerede, datadrevne beslutninger om optimering af dit system.

Mus Midterste museknap fungerer ikke i Windows 10
Midterste museknap fungerer ikke i Windows 10
Det midterste museknap hjælper dig med at rulle gennem lange websider og skærme med en masse data. Hvis det stopper, vil du ende med at bruge tastatur...
Mus Sådan ændres venstre og højre museknap på Windows 10-pc
Sådan ændres venstre og højre museknap på Windows 10-pc
Det er en ganske normal, at alle computermusenheder er ergonomisk designet til højrehåndede brugere. Men der er musenheder til rådighed, der er specie...
Mus Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Brug af en mus eller et tastatur i den forkerte kropsholdning af overdreven brug kan resultere i mange sundhedsmæssige problemer, herunder stamme, kar...