Perf- Ngwá ọrụ nlekota oru na nyocha maka Linux


Mgbe anyị na-ekwu maka ịrụ ọrụ na kọmpụta, anyị na-ezo aka na mmekọrịta dị n'etiti ihe onwunwe anyị na ọrụ ndị ha na-enye anyị ohere imecha n'ime oge enyere.

N'ụbọchị asọmpi na-enweghị isi n'etiti ụlọ ọrụ, ọ dị mkpa ka anyị mụta otu esi eji ihe anyị nwere mee ihe na ike ya. Ngwufu ngwaike ma ọ bụ akụrụngwa ngwanrọ, ma ọ bụ enweghị ikike ịma ka esi eji ha rụọ ọrụ nke ọma, na-emecha bụrụ mfu nke anyị enweghị ike imeli ma ọ bụrụ na anyị chọrọ ịnọ n'isi egwuregwu anyị.

N'otu oge ahụ, anyị ga-akpachara anya ka anyị ghara iwere ihe onwunwe anyị ruo n'ókè ebe iji nọgide na-eme ihe ga-eweta mmebi na-enweghị atụ.

N'isiokwu a, anyị ga-ewebata gị ngwá ọrụ nyocha arụmọrụ ọhụrụ dị ọhụrụ ma nye ndụmọdụ ị nwere ike iji nyochaa usoro Linux gị, gụnyere ngwaike na ngwa. Nke a ga-enyere gị aka ịhụ na ha na-arụ ọrụ ka i wee nwee ike ịrụpụta ihe a chọrọ na-emefusịghị ihe onwunwe ma ọ bụ ike nke gị.

Ewebata na ịwụnye Perf na Linux

N'ime ndị ọzọ, Linux na-enye ngwa nleba anya na nyocha arụmọrụ akpọrọ perf. Yabụ kedu ihe dị iche perf na ngwaọrụ ndị ọzọ ama ama nke ị maaralarị?

Azịza ya bụ na perf na-enye ohere ịnweta Unit Monitoring Performance na CPU, ma si otú a na-enye anyị ohere ileba anya na omume nke ngwaike na ihe ndị metụtara ya.

Na mgbakwunye, ọ nwekwara ike nyochaa mmemme ngwanrọ, wee mepụta akụkọ sitere na data anakọtara.

Ị nwere ike iwunye perf na nkesa RPM nwere:

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

Na Debian na usoro:

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

Ọ bụrụ na uname -r n'iwu dị n'elu weghachiri ụdọ ndị ọzọ ma e wezụga ụdị nke ahụ (3.2.0-23-generic na nke m), ị nwere ike pịnye linux-tools-3.2.0-23 kama. nke iji mmepụta nke uname.

Ọ dịkwa mkpa iburu n'obi na perf na-enye nsonaazụ na-ezughị ezu mgbe ọ na-agba ọsọ na ọbịa n'elu XEN) mee.

Na mgbakwunye, buru n'uche na ụfọdụ iwu perf nwere ike igbochi mgbọrọgwụ na ndabara, nke enwere ike ịnwe nkwarụ (ruo mgbe emegharịrị sistemụ ahụ) site na ime:

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

Ọ bụrụ na ịchọrọ gbanyụọ ọnọdụ paranoid kpamkpam, melite ntọala ndị a na faịlụ /etc/sysctl.conf.

kernel.perf_event_paranoid = 0

Ozugbo ị wụnye perf, ị nwere ike na-ezo aka na ibe nwoke ya maka ndepụta nke subcommands dị (ị nwere ike iche maka subcommands dị ka nhọrọ pụrụ iche nke na-emeghe otu windo n'ime usoro). Maka nsonaazụ kacha mma na nke zuru oke, jiri perf dị ka mgbọrọgwụ ma ọ bụ site na sudo.

ndepụta perf (na-enweghị nhọrọ) na-eweghachi ụdị omume ihe atụ niile (ndepụta ogologo). Ọ bụrụ na ịchọrọ ilele ndepụta mmemme dị n'otu ụdị, jiri listi perf na-esote aha ngalaba ([hw|sw|cache|tracepoint|pmu|event_glob]), dị ka:

Gosipụta ndepụta mmemme akọwara nke ọma na Linux:

# perf list sw 

perf stat na-agba iwu ma na-anakọta ọnụ ọgụgụ arụmọrụ Linux n'oge mmezu nke iwu dị otú ahụ. Kedu ihe na-eme na sistemụ anyị mgbe anyị na-agba ọsọ dd?

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

Ihe ndekọ egosiri n'elu na-egosi, n'etiti ihe ndị ọzọ:

  1. Mmezu nke iwu dd were 21.812281 milliseconds nke CPU. Ọ bụrụ na anyị kewaa nọmba a site na uru \sekọnd gafeworo n'okpuru (23.914596 milliseconds), ọ na-ewepụta 0.912 (ejiri CPU).
  2. Mgbe e mere iwu ahụ, 15 context-switch (nke a makwaara dị ka usoro switches) na-egosi na agbanwere CPU ugboro 15 site na otu usoro (ma ọ bụ eri) gaa na nke ọzọ.
  3. 2 Mbugharị CPU bụ ihe a na-atụ anya ya mgbe na 2-core CPU arụ ọrụ na-ekesa nke ọma n'etiti ọnụ ọgụgụ cores.
    N'oge ahụ (21.812281 milliseconds), ngụkọta ọnụ ọgụgụ nke CPU cycles e riri bụ 62,025,623, nke kewara na 0.021812281 sekọnd nyere 2.843 GHz.
  4. Ọ bụrụ na anyị kewaa ọnụ ọgụgụ nke cycles site na ngụkọta ntuziaka ọnụ anyị na-enweta 4.9 Cycles Per Instruction, nke pụtara na ntụziaka ọ bụla were ihe fọrọ nke nta ka ọ bụrụ 5 CPU cycles iji wuchaa (na nkezi). Anyị nwere ike ịta ụta nke a (opekata mpe n'akụkụ) na ọnụ ọgụgụ alaka na ndị na-atụfu alaka (lee n'okpuru), nke na-emecha mebie ma ọ bụ na-eji usoro CPU eme ihe n'ụzọ na-ezighị ezi.
  5. Dị ka e mere iwu ahụ, e zutere ngụkọta nke alaka 3,552,630. Nke a bụ ihe nnọchianya nke ọkwa CPU nke isi mkpebi na loops na koodu. Ka alaka ndị ọzọ, na-ebelata arụmọrụ. Iji kwụọ ụgwọ maka nke a, CPUs ọgbara ọhụrụ niile na-anwa ịkọ usoro koodu ahụ ga-ewe. 51,348 agbaghara alaka na-egosi na njirimara amụma ezighi ezi 1.45% nke oge.

Otu ụkpụrụ ahụ na-emetụta mkpokọta stats (ma ọ bụ na okwu ọzọ, profaịlụ) mgbe ngwa na-agba ọsọ. Naanị malite ngwa ịchọrọ ma mgbe oge kwesịrị ekwesị (nke dịịrị gị) mechie ya, perf ga-egosipụta stats na ihuenyo ahụ. Site n'ịtụle ọnụ ọgụgụ ndị ahụ ị nwere ike ịchọpụta nsogbu ndị nwere ike ime.

perf top yiri n'elu iwu, n'ihi na ọ na-egosiputa ihe fọrọ nke nta ka ezigbo oge usoro profaịlụ (a makwaara dị ka ndụ analysis).

Site na nhọrọ -a ị ga-egosipụta ụdị mmemme niile amaara, ebe nhọrọ -e ga-enye gị ohere ịhọrọ otu mmemme (dị ka listi perf weghachiri). :

Ga-egosipụta mmemme cycles niile.

perf top -a 

Ga-egosiputa mmemme metụtara elekere niile.

perf top -e cpu-clock 

Kọlụm mbụ dị na mmepụta dị n'elu na-anọchite anya pasentị nke nlele ndị ewepụtara kemgbe mmalite nke ọsọ ahụ, nke ejiri ọrụ Symbol na Ihe Ekekọrịtara chịkọta. Nhọrọ ndị ọzọ dị na man perf-top.

ndekọ perf na-enye iwu ma chekwaa data ndekọ aha n'ime faịlụ aha ya bụ perf.data n'ime akwụkwọ ndekọ aha ugbu a. Ọ na-agba ọsọ n'otu aka ahụ na perf stat.

Pịnye ndekọ perf wee soro iwu:

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

akụkọ perf na-ahazi data anakọtara na perf.data dị n'elu ka ọ bụrụ mkpesa arụmọrụ:

# sudo perf report

Iwu subcommand niile dị n'elu nwere ibe nwoke raara onwe ya nye nke enwere ike ịkpọku dịka:

# man perf-subcommand

ebe subcommand bụ ma ndepụta, stat, n'elu, ndekọ, ma ọ bụ akụkọ. Ndị a bụ iwu subcommand ndị a na-ejikarị eme ihe; Edepụtara ndị ọzọ n'akwụkwọ (tụ aka na ngalaba nchịkọta maka njikọ ahụ).

Nchịkọta

N'ime ntuziaka a, anyị ewebatala gị na perf, ngwa nleba anya na nyocha maka Linux. Anyị na-agba gị ume ka ị mara akwụkwọ ya nke edobere na https://perf.wiki.kernel.org.

Ọ bụrụ na ịchọta ngwa ndị na-eri oke pasenti akụrụngwa, ị nwere ike ịtụle ịgbanwe koodu isi mmalite, ma ọ bụ jiri ụzọ ndị ọzọ.

Ọ bụrụ na ị nwere ajụjụ gbasara akụkọ a ma ọ bụ aro iji meziwanye, anyị niile bụ ntị. Enwere onwe gị ịbịakwute anyị site na iji ụdị nkọwa n'okpuru.