Perf- Linux üçin öndürijilik gözegçiligi we derňew guraly


Hasaplaýyşdaky öndürijilik hakda aýdanymyzda, çeşmelerimiz bilen belli bir wagtyň içinde ýerine ýetirmäge mümkinçilik berýän meseleleriň arasyndaky baglanyşyga ýüzlenýäris.

Kompaniýalaryň arasyndaky çekeleşikli bäsdeşlik gününde, bar bolan zatlary mümkin boldugyça ulanmagy öwrenmegimiz möhümdir. Apparat ýa-da programma üpjünçiligi çeşmeleriniň ýitirilmegi, ýa-da olary has netijeli ulanmagy bilmek ukybynyň ýoklugy, oýnumyzyň başynda bolmak islesek, töläp bilmejek ýitgimiz bilen gutarýar.

Şol bir wagtyň özünde, dowamly peýdalanmak düzedip bolmajak zyýan berjek çeşmelerimizi çäklendirmezlik üçin seresap bolmalydyrys.

Bu makalada sizi has täze öndürijilik derňew guraly bilen tanyşdyrarys we Linux ulgamlaryňyza, şol sanda apparat we amaly programmalara gözegçilik etmek üçin ulanyp boljak maslahatlary hödürläris. Bu, serişdeleri ýa-da güýjüňizi ýitirmän islenýän netijeleri çykaryp biljekdigiňiz üçin işlemegine kömek eder.

Linux-da Perf bilen tanyşdyrmak we gurmak

Beýlekileriň arasynda Linux amatly perf diýilýän öndürijilik gözegçiligi we derňew guralyny üpjün edýär. Şeýlelik bilen, parfy eýýäm tanyş bolan beýleki belli gurallardan näme tapawutlandyrýar?

Jogap, perf CPU-da öndürijilik gözegçilik bölümine girişi üpjün edýär we şeýlelik bilen enjamyň özüni alyp barşyna we oňa bagly wakalara ýakyndan synlamaga mümkinçilik berýär.

Mundan başga-da, programma üpjünçiliginiň wakalaryna gözegçilik edip, ýygnalan maglumatlardan hasabat döredip biler.

Perf-i RPM esasly paýlamalarda gurup bilersiňiz:

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

Debian we öndürijilerde:

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

Aboveokardaky buýrukdaky uname -r hakyky wersiýadan başga-da goşmaça setirleri yzyna gaýtarsa (meniň ýagdaýymda 3.2.0-23-umumy), ýerine linux-tools-3.2.0-23 ýazmaly bolarsyňyz. uname çykyşyny ulanmak.

Şeýle hem, parfyň XEN-iň üstünde bir myhmanda işledilende doly däl netije berýändigini bellemelidiris.

Mundan başga-da, käbir perf buýruklarynyň başlangyç bilen kök bilen çäklendirilip bilinjekdigini ýadyňyzdan çykarmaň (ulgam täzeden açylýança):

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

Paranoid re modeimini hemişelik öçürmek zerur bolsa, /etc/sysctl.conf faýlynda aşakdaky sazlamany täzeläň.

kernel.perf_event_paranoid = 0

Parf guranyňyzdan soň, elýeterli kiçi komandalaryň sanawy üçin onuň adam sahypasyna ýüz tutup bilersiňiz (kiçi komandalary ulgama belli bir penjire açýan aýratyn wariantlar diýip pikir edip bilersiňiz). Iň oňat we has doly netijeler üçin perf-i kök ýa-da sudo arkaly ulanyň.

perf sanawy (opsiýalar bolmazdan) ähli simwoliki hadysalaryň görnüşlerini (uzyn sanaw) gaýtaryp berýär. Belli bir kategoriýada bar bolan wakalaryň sanawyny görmek isleseňiz, kategoriýanyň ady ([hw | sw | cache | tracepoint | pmu | event_glob]) ýaly perf sanawyny ulanyň:

Linux-da öňünden kesgitlenen programma üpjünçiliginiň sanawyny görkeziň:

# perf list sw 

perf stat buýrugy ýerine ýetirýär we şeýle buýrugyň ýerine ýetirilişinde Linux öndürijilik statistikasyny ýygnaýar. Dd işledenimizde ulgamymyzda näme bolýar?

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

Aboveokarda görkezilen statistika beýleki zatlar bilen birlikde:

  1. dd buýrugynyň ýerine ýetirilmegi 21.812281 millisekunt CPU aldy. Bu sany aşakdaky 23.914596 millisekunt bahasyna bölsek, 0.912 berýär (CPU ulanylýar).
  2. Buýruk ýerine ýetirilende, 15 kontekst wyklýuçatel (prosess wyklýuçatelleri hem diýilýär) CPU-laryň bir prosessden (ýa-da sapakdan) beýlekisine 15 gezek geçirilendigini görkezýär.
  3. 2 ýadroly CPU-da iş ýüki ýadro sanynyň arasynda deň paýlananda 2 CPU göçürmesi garaşylýan netijedir.
    Şol döwürde (21.812281 millisekunt) sarp edilen CPU siklleriniň umumy sany 62,025,623 boldy, 0.021812281 sekuntda bölünen bolsa 2,843 GGs berýär.
  4. Siklleriň sanyny umumy görkezmeleriň sanyna bölsek, her görkezme üçin 4.9 sikl alarys, bu bolsa her görkezmäniň tamamlanmagy üçin ortaça 5 CPU siklini aldy (ortaça). CPU aýlawlaryny ýitirmek ýa-da nädogry ulanmak bilen gutarýan şahalaryň we şahalaryň sanyna (iň bolmanda bölekleýin) günäkär bolup bileris.
  5. Buýruk ýerine ýetirilende jemi 3,552,630 şaha duş geldi. Bu koddaky karar nokatlarynyň we aýlawlarynyň CPU derejesindäki şekillendirişidir. Şahalary näçe köp bolsa, öndürijiligi şonça pes bolar. Munuň öwezini dolmak üçin häzirki zaman CPU-laryň hemmesi koduň akymyny çaklamaga synanyşýarlar. 51,348 şahanyň sypdyrmagy, çaklama aýratynlygynyň wagtyň 1,45% nädogrydygyny görkezýär.

Şol bir prinsip, bir programma işleýän wagtynda statistiki maglumatlary ýygnamakda (ýa-da başgaça aýdylanda profil ýazmakda) ulanylýar. Desiredönekeý islenýän programmany işe giriziň we belli bir wagtdan soň (size bagly) ony ýapyň we perf statistikany ekranda görkezer. Şol statistikalary seljermek bilen, ýüze çykyp biljek kynçylyklary kesgitläp bilersiňiz.

perf top, ýokary wagtlaýyn buýruga meňzeýär, sebäbi hakyky wagtda ulgam profilini görkezýär (janly derňew hem diýilýär).

-a opsiýasy bilen belli bolan waka görnüşleriniň hemmesini görkezersiňiz, şol bir wagtyň özünde -e opsiýasy belli bir waka kategoriýasyny saýlamaga mümkinçilik berer (perf sanawy boýunça yzyna gaýtarylýar) :

Cyhli sikl hadysasyny görkezer.

perf top -a 

Cpu-sagat bilen baglanyşykly wakalaryň hemmesini görkezer.

perf top -e cpu-clock 

Aboveokardaky çykyşyň birinji sütüni, “Symbol” we “Shared Object” funksiýalary boýunça toparlanan işiň başyndan bäri alnan nusgalaryň göterimini görkezýär. “Man perf-top” -da has köp mümkinçilik bar.

perf ýazgy buýrugy ýerine ýetirýär we statistiki maglumatlary häzirki iş bukjasynyň içinde perf.data atly faýla ýazdyrýar. Perf stat-a meňzeýär.

Perf ýazgysyny buýruk bilen ýazyň:

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

perf hasabaty ýokardaky perf.data-da toplanan maglumatlary öndürijilik hasabatyna formatlaýar:

# sudo perf report

Aboveokardaky kiçi komandalaryň hemmesiniň özüne mahsus adam sahypasy bar:

# man perf-subcommand

bu ýerde kiçi komanda ýa sanaw, stat, ýokarky, ýazgy ýa-da hasabat. Bular iň köp ulanylýan kiçi komandalar; beýlekiler resminamalarda görkezilýär (baglanyşyk üçin Gysgaça mazmun bölümine serediň).

Gysgaça mazmun

Bu gollanmada sizi Linux üçin öndürijilik gözegçiligi we derňew guraly bolan perf bilen tanyşdyrdyk. Https://perf.wiki.kernel.org sahypasynda saklanýan resminamalary bilen tanyşmagyňyzy maslahat berýäris.

Resurslaryň köp bölegini sarp edýän programmalary tapsaňyz, deslapky kody üýtgetmegi ýa-da başga alternatiwalary ulanyp bilersiňiz.

Bu makala hakda soraglaryňyz ýa-da gowulaşdyrmak üçin teklipleriňiz bar bolsa, hemmämiz gulak. Aşakdaky düşündiriş formuny ulanyp, bize ýüz tutup bilersiňiz.