Perf- Usa ka Himan sa Pag-monitor ug Pagtuki sa Pagganap para sa Linux


Kung maghisgot kami bahin sa pasundayag sa pag-compute, among gipunting ang relasyon tali sa among mga kahinguhaan ug ang mga buluhaton nga gitugotan kami nga makompleto sa usa ka gihatag nga yugto sa panahon.

Sa usa ka adlaw sa grabe nga kompetisyon tali sa mga kompanya, hinungdanon nga makat-on kita kung giunsa ang paggamit sa kung unsa ang naa sa labing kaayo nga kapasidad niini. Ang pag-usik sa mga kahinguhaan sa hardware o software, o ang kakulang sa abilidad nga mahibal-an kung giunsa ang paggamit niini nga labi ka episyente, natapos nga usa ka kapildihan nga dili gyud naton makaya kung gusto namon nga naa sa tumoy sa among dula.

Sa samang higayon, kinahanglan kitang mag-amping nga dili madala ang atong mga kahinguhaan ngadto sa usa ka limitasyon diin ang padayon nga paggamit mohatag og dili mamaayo nga kadaot.

Niini nga artikulo ipaila namo kanimo ang usa ka bag-o nga himan sa pagtuki sa pasundayag ug paghatag og mga tip nga imong magamit sa pagmonitor sa imong mga sistema sa Linux, lakip ang hardware ug mga aplikasyon. Makatabang kini kanimo sa pagsiguro nga sila molihok aron makahimo ka sa gitinguha nga mga sangputanan nga wala mag-usik sa mga kapanguhaan o imong kaugalingon nga kusog.

Pagpaila ug pag-instalar sa Perf sa Linux

Lakip sa uban, ang Linux naghatag usa ka himan sa pag-monitor ug pag-analisar sa pasundayag nga gitawag nga dali nga perf. Busa unsa ang nagpalahi sa perf gikan sa uban pang mga ilado nga mga himan nga pamilyar ka na?

Ang tubag mao nga ang perf naghatag og access sa Performance Monitoring Unit sa CPU, ug sa ingon nagtugot kanato sa usa ka suod nga pagtan-aw sa kinaiya sa hardware ug sa iyang kaubang mga panghitabo.

Dugang pa, mahimo usab nga bantayan ang mga panghitabo sa software, ug maghimo mga taho gikan sa datos nga nakolekta.

Mahimo nimong i-install ang perf sa mga distribusyon nga nakabase sa RPM nga adunay:

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

Sa Debian ug derivatives:

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

Kung ang uname -r sa sugo sa ibabaw nagbalik ug dugang nga mga kuwerdas gawas sa aktuwal nga bersyon (3.2.0-23-generic sa akong kaso), mahimo nimong i-type ang linux-tools-3.2.0-23 imbes sa paggamit sa output sa uname.

Importante usab nga timan-an nga ang perf mohatag og dili kompleto nga mga resulta kon modagan sa usa ka bisita sa ibabaw sa XEN) do.

Dugang pa, hinumdomi nga ang pipila ka mga perf nga mga sugo mahimong limitado sa pag-ugat pinaagi sa default, nga mahimong ma-disable (hangtud nga ang sistema ma-reboot) pinaagi sa pagbuhat:

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

Kung kinahanglan nimo nga i-disable ang paranoid mode nga permanente, i-update ang mosunod nga setting sa /etc/sysctl.conf file.

kernel.perf_event_paranoid = 0

Kung na-install na nimo ang perf, mahimo nimong i-refer ang man page niini alang sa usa ka lista sa magamit nga mga subcommand (mahimo nimong hunahunaon ang mga subcommand ingon espesyal nga kapilian nga nagbukas sa usa ka piho nga bintana sa sistema). Alang sa labing maayo ug mas kompleto nga mga resulta, gamita ang perf bisan ingon nga gamut o pinaagi sa sudo.

perf list (walay kapilian) mibalik sa tanang simbolo nga matang sa panghitabo (taas nga lista). Kung gusto nimo tan-awon ang lista sa mga panghitabo nga magamit sa usa ka piho nga kategorya, gamita ang lista sa perf nga gisundan sa ngalan sa kategorya ([hw|sw|cache|tracepoint|pmu|event_glob]), sama sa:

Ipakita ang lista sa software pre-defined nga mga panghitabo sa Linux:

# perf list sw 

perf stat nagpadagan ug command ug nagkolekta sa Linux performance statistics atol sa pagpatuman sa maong command. Unsa ang mahitabo sa atong sistema sa diha nga kita modagan dd?

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

Ang mga estadistika nga gipakita sa ibabaw nagpakita, taliwala sa ubang mga butang:

  1. Ang pagpatuman sa dd command mikuha ug 21.812281 milliseconds sa CPU. Kung atong bahinon kini nga numero sa \segundo nga oras nga milabay nga kantidad sa ubos (23.914596 milliseconds), kini mohatag og 0.912 (CPU gigamit).
  2. Samtang ang command gipatuman, 15 ka context-switch (nailhan usab nga process switch) nagpakita nga ang mga CPU gibalhin 15 ka beses gikan sa usa ka proseso (o thread) ngadto sa lain.
  3. 2 nga paglalin sa CPU mao ang gipaabot nga resulta kung sa usa ka 2-core nga CPU ang workload giapod-apod nga parehas tali sa gidaghanon sa mga cores.
    Nianang panahona (21.812281 milliseconds), ang kinatibuk-ang gidaghanon sa mga cycle sa CPU nga nahurot kay 62,025,623, nga gibahin sa 0.021812281 segundos naghatag ug 2.843 GHz.
  4. Kon atong bahinon ang gidaghanon sa mga cycle sa kinatibuk-ang ihap sa mga instruksyon makadawat kita og 4.9 Cycles Per Instruction, nga nagpasabot nga ang matag instruksiyon nagkinahanglan og halos 5 ka CPU cycle aron makompleto (sa aberids). Mahimo natong mabasol kini (labing menos sa bahin) sa gidaghanon sa mga sanga ug mga misses sa sanga (tan-awa sa ubos), nga mosangko sa pag-usik o paggamit sa mga siklo sa CPU.
  5. Sa dihang gipatuman ang sugo, 3,552,630 ka sanga ang nasugatan. Kini ang lebel sa CPU nga representasyon sa mga punto sa desisyon ug mga loop sa code. Ang mas daghang mga sanga, mas ubos ang performance. Aron mabayran kini, ang tanan nga modernong mga CPU misulay sa pagtagna sa dagan nga makuha sa code. Ang 51,348 nga mga branch-miss nagpakita nga ang feature sa prediksyon sayop 1.45% sa panahon.

Ang sama nga prinsipyo magamit sa pagkolekta sa mga istatistika (o sa laing pagkasulti, profiling) samtang ang usa ka aplikasyon nagdagan. Ilunsad lang ang gusto nga aplikasyon ug pagkahuman sa usa ka makatarunganon nga yugto sa panahon (nga naa kanimo) isira kini, ug ang perf magpakita sa mga istatistika sa screen. Pinaagi sa pag-analisar sa mga estadistika mahibal-an nimo ang mga potensyal nga problema.

Ang perf top susama sa top command, tungod kay kini nagpakita sa halos real-time nga profile sa sistema (nailhan usab nga live analysis).

Uban sa -a nga opsyon imong ipakita ang tanan nga nailhan nga matang sa panghitabo, samtang ang -e nga opsyon motugot kanimo sa pagpili sa usa ka piho nga kategoriya sa panghitabo (ingon nga gibalik sa perf list) :

Ipakita ang tanang cycle nga panghitabo.

perf top -a 

Ipakita ang tanan nga mga panghitabo nga may kalabotan sa cpu-clock.

perf top -e cpu-clock 

Ang unang kolum sa output sa ibabaw nagrepresentar sa porsyento sa mga sample nga gikuha sukad sa pagsugod sa run, gigrupo sa function Symbol ug Shared Object. Dugang nga mga kapilian ang anaa sa man perf-top.

perf record nagpadagan ug command ug nagtipig sa statistical data ngadto sa file nga ginganlag perf.data sulod sa kasamtangang working directory. Nagdagan kini parehas sa perf stat.

I-type ang perf record nga gisundan sa usa ka sugo:

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

perf report nag-format sa datos nga nakolekta sa perf.data sa ibabaw ngadto sa performance report:

# sudo perf report

Ang tanan nga mga subcommand sa ibabaw adunay usa ka dedikado nga panid sa tawo nga mahimong magamit ingon:

# man perf-subcommand

diin ang subcommand kay lista, stat, taas, record, o report. Kini ang labing kanunay nga gigamit nga mga subcommand; ang uban gilista sa dokumentasyon (tan-awa ang Summary section para sa link).

Summary

Niini nga giya gipaila-ila ka namo sa perf, usa ka himan sa pagmonitor ug pagtuki sa pasundayag alang sa Linux. Giawhag ka namo nga mahimong pamilyar sa dokumentasyon niini nga gipadayon sa https://perf.wiki.kernel.org.

Kung makit-an nimo ang mga aplikasyon nga nagkonsumo sa usa ka taas nga porsyento sa mga kapanguhaan, mahimo nimong hunahunaon ang pagbag-o sa gigikanan nga code, o paggamit sa ubang mga alternatibo.

Kung naa kay mga pangutana bahin sa kini nga artikulo o mga sugyot aron mapauswag, kami tanan nakadungog. Mobati nga gawasnon nga maabot kami gamit ang porma sa komento sa ubos.