Perf- Zana ya Ufuatiliaji na Uchambuzi wa Utendaji kwa Linux


Tunapozungumza kuhusu utendakazi katika kompyuta, tunarejelea uhusiano kati ya rasilimali zetu na kazi ambazo huturuhusu kukamilisha kwa muda fulani.

Katika siku ya ushindani mkali kati ya makampuni, ni muhimu kwamba tujifunze jinsi ya kutumia kile tulicho nacho kwa uwezo wake wote. Upotevu wa rasilimali za maunzi au programu, au ukosefu wa uwezo wa kujua jinsi ya kuzitumia kwa ufanisi zaidi, huishia kuwa hasara ambayo hatuwezi kumudu ikiwa tunataka kuwa kileleni mwa mchezo wetu.

Wakati huo huo, lazima tuwe waangalifu ili tusichukue rasilimali zetu hadi kikomo ambapo matumizi endelevu yataleta uharibifu usioweza kurekebishwa.

Katika makala haya tutakuletea zana mpya ya kuchanganua utendakazi na kukupa vidokezo ambavyo unaweza kutumia kufuatilia mifumo yako ya Linux, ikijumuisha maunzi na programu. Hii itakusaidia kuhakikisha kuwa zinafanya kazi ili uweze kutoa matokeo unayotaka bila kupoteza rasilimali au nishati yako mwenyewe.

Kuanzisha na kusakinisha Perf katika Linux

Miongoni mwa zingine, Linux hutoa ufuatiliaji wa utendaji na zana ya uchambuzi inayoitwa kwa urahisi perf. Kwa hivyo ni nini kinachotofautisha perf kutoka kwa zana zingine zinazojulikana ambazo tayari unazifahamu?

Jibu ni kwamba perf hutoa ufikiaji wa Kitengo cha Ufuatiliaji wa Utendaji katika CPU, na kwa hivyo huturuhusu kuangalia kwa karibu tabia ya vifaa na matukio yake yanayohusiana.

Kwa kuongeza, inaweza pia kufuatilia matukio ya programu, na kuunda ripoti kutoka kwa data inayokusanywa.

Unaweza kusakinisha perf katika ugawaji wa msingi wa RPM na:

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

Katika Debian na derivatives:

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

Ikiwa uname -r katika amri iliyo hapo juu itarudisha kamba za ziada kando na toleo halisi (3.2.0-23-generic katika kesi yangu), unaweza kulazimika kuandika linux-tools-3.2.0-23 badala yake. ya kutumia pato la uname.

Pia ni muhimu kutambua kwamba perf hutoa matokeo yasiyo kamili wakati inaendeshwa kwa mgeni juu ya XEN) kufanya.

Kwa kuongeza, kumbuka kuwa amri zingine za ukamilifu zinaweza kuzuiwa kwa mizizi kwa chaguo-msingi, ambayo inaweza kulemazwa (hadi mfumo utakapowashwa tena) kwa kufanya:

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

Ikiwa unahitaji kuzima hali ya paranoid kabisa, sasisha mpangilio ufuatao katika faili /etc/sysctl.conf.

kernel.perf_event_paranoid = 0

Mara tu unaposakinisha perf, unaweza kurejelea ukurasa wake wa mtu kwa orodha ya amri ndogo zinazopatikana (unaweza kufikiria amri ndogo kama chaguzi maalum zinazofungua dirisha maalum kwenye mfumo). Kwa matokeo bora na kamili zaidi, tumia perf ama kama mzizi au kupitia sudo.

perf list (bila chaguzi) inarudisha aina zote za tukio la mfano (orodha ndefu). Iwapo ungependa kuona orodha ya matukio yanayopatikana katika kategoria mahususi, tumia orodha ya mapendeleo ikifuatiwa na jina la kategoria ([hw|sw|cache|tracepoint|pmu|event_glob]), kama vile:

Onyesha orodha ya matukio ya programu yaliyobainishwa mapema katika Linux:

# perf list sw 

perf stat huendesha amri na kukusanya takwimu za utendaji wa Linux wakati wa utekelezaji wa amri kama hiyo. Nini kinatokea katika mfumo wetu tunapoendesha dd?

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

Takwimu zilizoonyeshwa hapo juu zinaonyesha, kati ya mambo mengine:

  1. Utekelezaji wa amri ya dd ulichukua milisekunde 21.812281 za CPU. Tukigawanya nambari hii kwa thamani ya \sekunde zilizopita iliyo hapa chini (millisekunde 23.914596), itatoa 0.912 (CPU itatumika).
  2. Wakati amri ilitekelezwa, swichi 15 za muktadha (pia hujulikana kama swichi za mchakato) zinaonyesha kuwa CPU zilibadilishwa mara 15 kutoka mchakato mmoja (au uzi) hadi mwingine.
  3. Uhamishaji wa CPU 2 ndio tokeo linalotarajiwa wakati katika CPU-2-msingi mzigo wa kazi unasambazwa kwa usawa kati ya idadi ya core.
    Wakati huo (milliseconds 21.812281), jumla ya mizunguko ya CPU iliyotumiwa ilikuwa 62,025,623, ambayo iligawanywa kwa sekunde 0.021812281 inatoa GHz 2.843.
  4. Tukigawanya idadi ya mizunguko kwa hesabu ya jumla ya maagizo tunapata Mizunguko 4.9 kwa Kila Maagizo, kumaanisha kuwa kila maagizo yalichukua takriban mizunguko 5 ya CPU kukamilisha (kwa wastani). Tunaweza kulaumu hili (angalau kwa sehemu) kwa idadi ya matawi na matawi yaliyokosa (tazama hapa chini), ambayo hatimaye yanapoteza au kutumia vibaya mizunguko ya CPU.
  5. Wakati amri hiyo ilipotekelezwa, jumla ya matawi 3,552,630 yalipatikana. Huu ni uwakilishi wa kiwango cha CPU wa pointi za maamuzi na mizunguko katika msimbo. Matawi mengi, utendaji wa chini. Ili kufidia hili, CPU zote za kisasa hujaribu kutabiri mtiririko ambao msimbo utachukua. Makosa 51,348 ya tawi yanaonyesha kipengele cha utabiri hakikuwa sahihi 1.45% ya wakati huo.

Kanuni hiyo hiyo inatumika kwa kukusanya takwimu (au kwa maneno mengine, kuorodhesha) wakati programu inaendeshwa. Zindua tu programu unayotaka na baada ya muda ufaao (ambayo ni juu yako) ifunge, na mapendeleo yataonyesha takwimu kwenye skrini. Kwa kuchambua takwimu hizo unaweza kutambua matatizo yanayoweza kutokea.

perf top ni sawa na amri ya juu, kwa kuwa inaonyesha wasifu wa mfumo wa wakati halisi (pia unajulikana kama uchanganuzi wa moja kwa moja).

Ukiwa na chaguo la -a utaonyesha aina zote za matukio zinazojulikana, ilhali chaguo la -e litakuruhusu kuchagua kategoria mahususi ya tukio (kama inavyorejeshwa na orodha ya utendakazi) :

Itaonyesha tukio la mizunguko yote.

perf top -a 

Itaonyesha matukio yote yanayohusiana na saa-cpu.

perf top -e cpu-clock 

Safu wima ya kwanza katika pato hapo juu inawakilisha asilimia ya sampuli zilizochukuliwa tangu mwanzo wa utekelezaji, zikiwa zimepangwa kwa Alama ya kukokotoa na Kitu Kilichoshirikiwa. Chaguo zaidi zinapatikana katika man perf-top.

perf record huendesha amri na huhifadhi data ya takwimu kwenye faili iitwayo perf.data ndani ya saraka ya kazi ya sasa. Inaendesha sawa na perf stat.

Andika rekodi kamili ikifuatiwa na amri:

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

ripoti ya perf huunda data iliyokusanywa katika perf.data hapo juu kuwa ripoti ya utendaji:

# sudo perf report

Amri ndogo zote zilizo hapo juu zina ukurasa wa mtu aliyejitolea ambao unaweza kualikwa kama:

# man perf-subcommand

ambapo amri ndogo ni orodha, takwimu, juu, rekodi au ripoti. Hizi ndizo amri ndogo zinazotumiwa mara kwa mara; nyingine zimeorodheshwa katika hati (rejelea sehemu ya Muhtasari kwa kiungo).

Muhtasari

Katika mwongozo huu tumekuletea perf, zana ya ufuatiliaji wa utendaji na uchanganuzi wa Linux. Tunakuhimiza sana ufahamu hati zake ambazo hudumishwa katika https://perf.wiki.kernel.org.

Ukipata programu zinazotumia asilimia kubwa ya rasilimali, unaweza kufikiria kurekebisha msimbo wa chanzo, au utumie njia zingine mbadala.

Ikiwa una maswali kuhusu makala hii au mapendekezo ya kuboresha, sisi sote ni masikio. Jisikie huru kuwasiliana nasi kwa kutumia fomu ya maoni hapa chini.