Perf- Afkastaeftirlits- og greiningartól fyrir Linux


Þegar við tölum um frammistöðu í tölvumálum er átt við sambandið milli auðlinda okkar og þeirra verkefna sem þau gera okkur kleift að klára á tilteknu tímabili.

Á dögum harðrar samkeppni milli fyrirtækja er mikilvægt að við lærum að nýta það sem við höfum eftir bestu getu. Sóun á vélbúnaðar- eða hugbúnaðarauðlindum, eða skortur á getu til að vita hvernig á að nota þau á skilvirkari hátt, endar með því að vera tap sem við höfum einfaldlega ekki efni á ef við viljum vera á toppnum í leiknum.

Jafnframt verðum við að gæta þess að færa auðlindir okkar ekki að mörkum þar sem viðvarandi nýting mun valda óbætanlegu tjóni.

Í þessari grein munum við kynna þér tiltölulega nýtt frammistöðugreiningartæki og veita ráð sem þú getur notað til að fylgjast með Linux kerfum þínum, þar á meðal vélbúnaði og forritum. Þetta mun hjálpa þér að tryggja að þeir starfi þannig að þú sért fær um að skila tilætluðum árangri án þess að sóa auðlindum eða eigin orku.

Kynning og uppsetning Perf í Linux

Meðal annarra býður Linux upp á frammistöðueftirlits- og greiningartæki sem kallast þægilegur perf. Svo hvað aðgreinir perf frá öðrum vel þekktum verkfærum sem þú þekkir nú þegar?

Svarið er að perf veitir aðgang að árangurseftirlitseiningunni í örgjörvanum og gerir okkur þannig kleift að skoða hegðun vélbúnaðarins og tengda atburði þess.

Að auki getur það einnig fylgst með hugbúnaðarviðburðum og búið til skýrslur úr þeim gögnum sem safnað er.

Þú getur sett upp perf í dreifingum sem byggja á RPM með:

# yum update && yum install perf     [CentOS / RHEL / Fedora]
# dnf update && dnf install perf     [Fedora 23+ releases]

Í Debian og afleiðum:

# sudo aptitude update && sudo aptitude install linux-tools-$(uname -r) linux-tools-generic

Ef uname -r í skipuninni hér að ofan skilar aukastrengjum fyrir utan raunverulegu útgáfuna (3.2.0-23-almennt í mínu tilfelli), gætirðu þurft að slá inn linux-tools-3.2.0-23 í staðinn að nota úttakið á uname.

Það er líka mikilvægt að hafa í huga að perf gefur ófullnægjandi niðurstöður þegar keyrt er í gest ofan á XEN) do.

Að auki, hafðu í huga að sumar perf skipanir kunna að vera takmarkaðar við rót sjálfgefið, sem hægt er að slökkva á (þar til kerfið er endurræst) með því að gera:

# echo 0 > /proc/sys/kernel/perf_event_paranoid

Ef þú þarft að slökkva á ofsóknarham varanlega, uppfærðu eftirfarandi stillingu í /etc/sysctl.conf skránni.

kernel.perf_event_paranoid = 0

Þegar þú hefur sett upp perf geturðu vísað á mansíðu þess til að fá lista yfir tiltækar undirskipanir (þú getur hugsað um undirskipanir sem sérstaka valkosti sem opna tiltekinn glugga inn í kerfið). Fyrir bestu og fullkomnari niðurstöður, notaðu perf annað hvort sem rót eða í gegnum sudo.

perf listi (án valkosta) skilar öllum táknrænum atburðategundum (langur listi). Ef þú vilt skoða listann yfir atburði sem eru tiltækir í tilteknum flokki, notaðu perf lista og síðan flokksheiti ([hw|sw|cache|tracepoint|pmu|event_glob]), eins og:

Sýna lista yfir fyrirfram skilgreinda atburði hugbúnaðar í Linux:

# perf list sw 

perf stat keyrir skipun og safnar Linux frammistöðutölfræði meðan á framkvæmd slíkrar skipunar stendur. Hvað gerist í kerfinu okkar þegar við keyrum dd?

# perf stat dd if=/dev/zero of=test.iso bs=10M count=1

Tölfræðin hér að ofan gefur meðal annars til kynna:

  1. Framkvæmd dd skipunarinnar tók 21,812281 millisekúndur af örgjörva. Ef við deilum þessari tölu með „sekúndna tími liðinn“ gildið fyrir neðan (23,914596 millisekúndur), gefur það 0,912 (CPU notaður).
  2. Á meðan skipunin var keyrð gefa 15 samhengisrofar (einnig þekktir sem ferlirofar) til kynna að örgjörvunum hafi verið skipt 15 sinnum úr einu ferli (eða þræði) yfir í annað.
  3. Tvær örgjörvaflutningar eru væntanleg niðurstaða þegar vinnuálagið er dreift jafnt á milli fjölda kjarna í tveggja kjarna örgjörva.
    Á þeim tíma (21,812281 millisekúndur) var heildarfjöldi örgjörvalota sem notaðir voru 62,025,623, sem deilt með 0,021812281 sekúndum gefur 2,843 GHz.
  4. Ef við deilum fjölda lota með heildarfjölda leiðbeininga fáum við 4,9 lotur á hverja kennslu, sem þýðir að hver kennsla tók næstum 5 örgjörvalotur (að meðaltali). Við getum kennt þetta (að minnsta kosti að hluta til) um fjölda útibúa og útibúamissa (sjá hér að neðan), sem endar með því að sóa eða misnota örgjörvalotur.
  5. Þegar skipunin var framkvæmd, fundust alls 3.552.630 útibú. Þetta er framsetning á CPU-stigi ákvörðunarpunkta og lykkja í kóðanum. Því fleiri greinar, því minni árangur. Til að vega upp á móti þessu reyna allir nútíma örgjörvar að spá fyrir um flæðið sem kóðinn mun taka. 51.348 útibúsmissir benda til þess að spáaðgerðin hafi verið röng 1,45% tilvika.

Sama regla gildir um að safna tölfræði (eða með öðrum orðum, prófílgreiningu) á meðan forrit er í gangi. Ræstu einfaldlega forritið sem þú vilt og lokaðu því eftir hæfilegan tíma (sem er undir þér komið) og perf mun birta tölfræðina á skjánum. Með því að greina þessa tölfræði geturðu greint hugsanleg vandamál.

perf top er svipað og toppskipun að því leyti að það sýnir nánast rauntíma kerfissnið (einnig þekkt sem lifandi greining).

Með -a valmöguleikanum muntu birta allar þekktar viðburðagerðir, en -e valkosturinn gerir þér kleift að velja ákveðinn viðburðaflokk (eins og skilað er af perf list) :

Sýnir allar lotur atburði.

perf top -a 

Sýnir alla CPU-klukku tengda atburði.

perf top -e cpu-clock 

Fyrsti dálkurinn í úttakinu hér að ofan táknar hlutfall sýna sem tekin hafa verið frá upphafi keyrslu, flokkuð eftir aðgerðartákn og sameiginlegum hlut. Fleiri valkostir eru fáanlegir í man perf-top.

perf record keyrir skipun og vistar tölfræðileg gögn í skrá sem heitir perf.data inni í núverandi vinnuskrá. Það keyrir svipað og perf stat.

Sláðu inn perf record og síðan skipun:

# perf record dd if=/dev/null of=test.iso bs=10M count=1

perf skýrsla sniði gögnin sem safnað er í perf.data hér að ofan í árangursskýrslu:

# sudo perf report

Allar ofangreindar undirskipanir eru með sérstaka mansíðu sem hægt er að kalla fram sem:

# man perf-subcommand

þar sem undirskipun er annað hvort listi, tölfræði, toppur, skráning eða skýrsla. Þetta eru þær undirskipanir sem oftast eru notaðar; önnur eru skráð í skjölunum (sjá yfirlitshlutann fyrir hlekkinn).

Samantekt

Í þessari handbók höfum við kynnt þér perf, frammistöðueftirlits- og greiningartæki fyrir Linux. Við hvetjum þig eindregið til að kynna þér skjöl þess sem er viðhaldið á https://perf.wiki.kernel.org.

Ef þú finnur forrit sem eyða háu hlutfalli af auðlindum gætirðu íhugað að breyta frumkóðanum eða nota aðra valkosti.

Ef þú hefur spurningar um þessa grein eða uppástungur til að bæta, erum við öll eyru. Ekki hika við að hafa samband við okkur með því að nota athugasemdareyðublaðið hér að neðan.