Perf- Abojuto Iṣe-iṣe ati Irinṣẹ Itupalẹ fun Lainos


Nigbati a ba sọrọ ti iṣẹ ṣiṣe ni iširo, a tọka si ibasepọ laarin awọn orisun wa ati awọn iṣẹ ṣiṣe ti wọn gba wa laaye lati pari ni akoko ti a fifun.

Ni ọjọ ti idije ti ko ni ibinu laarin awọn ile-iṣẹ, o ṣe pataki ki a kọ bi a ṣe le lo ohun ti a ni ni agbara ti o dara julọ. Egbin ti ohun elo tabi awọn ohun elo sọfitiwia, tabi aini agbara lati mọ bi a ṣe le lo wọn diẹ sii daradara, pari ni pipadanu ti a kan ko le ni agbara ti a ba fẹ lati wa ni oke ere wa.

Ni igbakanna, a gbọdọ ṣọra lati maṣe gbe awọn ohun elo wa si opin ibiti lilo lilo ti yoo mu ibajẹ ti ko ṣee ṣe mu.

Ninu nkan yii a yoo ṣe agbekalẹ ọ si ọpa onínọmbà iṣẹ tuntun tuntun ati pese awọn imọran ti o le lo lati ṣe atẹle awọn eto Linux rẹ, pẹlu ohun elo ati ohun elo. Eyi yoo ṣe iranlọwọ fun ọ lati rii daju pe wọn ṣiṣẹ ki o lagbara lati ṣe awọn abajade ti o fẹ laisi jafara awọn orisun tabi agbara tirẹ.

Ifihan ati fifi sori ẹrọ Perf ni Linux

Laarin awọn miiran, Lainos n pese ibojuwo iṣẹ ati irinṣẹ onínọmbà ti a pe ni irọrun ni turari. Nitorinaa kini iyatọ perf lati awọn irinṣẹ miiran ti o mọ daradara pẹlu eyiti o ti mọ tẹlẹ?

Idahun ni pe perf n pese iraye si Ẹrọ Abojuto Iṣe ni Sipiyu, ati nitorinaa gba wa laaye lati ni isunmọ pẹkipẹki si ihuwasi ti hardware ati awọn iṣẹlẹ ti o jọmọ.

Ni afikun, o tun le ṣe atẹle awọn iṣẹlẹ sọfitiwia, ati ṣẹda awọn iroyin lati inu data ti a gba.

O le fi perf sinu awọn pinpin kaakiri RPM pẹlu:

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

Ni Debian ati awọn itọsẹ:

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

Ti uname -r ninu aṣẹ loke ba pada awọn okun afikun ni afikun ẹya gangan (3.2.0-23-generic in my case), o le ni lati tẹ awọn ohun elo Linux-3.2.0-23 linux ti lilo iṣujade ti uname.

O tun ṣe pataki lati ṣe akiyesi pe perf ṣe awọn abajade ti ko pe nigbati o ba n ṣiṣẹ ni alejo kan lori XEN) ṣe.

Ni afikun, ranti pe diẹ ninu awọn aṣẹ perf le ni ihamọ si gbongbo nipasẹ aiyipada, eyiti o le jẹ alaabo (titi ti eto yoo fi tun pada) nipa ṣiṣe:

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

Ti o ba nilo lati mu ipo paranoid patapata, ṣe imudojuiwọn eto atẹle ni faili /etc/sysctl.conf.

kernel.perf_event_paranoid = 0

Lọgan ti o ba fi sii perf, o le tọka si oju-iwe eniyan rẹ fun atokọ ti awọn aṣẹ-aṣẹ ti o wa (o le ronu ti awọn aṣẹ-aṣẹ bi awọn aṣayan pataki ti o ṣii window kan pato sinu eto). Fun awọn abajade to dara julọ ati siwaju sii, lo perf boya bi gbongbo tabi nipasẹ sudo.

akojọ perf (laisi awọn aṣayan) pada gbogbo awọn iru iṣẹlẹ aami apẹẹrẹ (atokọ gigun). Ti o ba fẹ lati wo atokọ ti awọn iṣẹlẹ ti o wa ni ẹka kan pato, lo atokọ perf ti o tẹle pẹlu orukọ ẹka ([hw | sw | cache | tracepoint | pmu | event_glob]), gẹgẹbi:

Àpapọ atokọ ti awọn iṣẹlẹ asọye asọye sọfitiwia ni Linux:

# perf list sw 

stat stat ṣiṣẹ aṣẹ kan ati gba awọn iṣiro iṣiro Linux lakoko ipaniyan iru aṣẹ bẹ. Kini o ṣẹlẹ ninu eto wa nigbati a ba n ṣiṣe dd?

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

Awọn iṣiro ti o han loke fihan, laarin awọn ohun miiran:

    Ifiranṣẹ ti aṣẹ dd mu awọn milliseconds 21.812281 ti Sipiyu. Ti a ba pin nọmba yii pẹlu iye\"iṣẹju-aaya ti kọja" iye ti o wa ni isalẹ (awọn milliseconds 23.914596), o ma pese 0.912 (Sipiyu lo).
  1. Lakoko ti a ti pa aṣẹ naa, awọn iyipada 15 ti o tọ (ti a tun mọ bi awọn iyipada ilana) fihan pe awọn Sipiyu ti yipada ni awọn akoko 15 lati ilana kan (tabi okun) si omiiran.
  2. 2 Awọn ijira Sipiyu jẹ abajade ti a reti nigbati ninu Sipiyu 2-mojuto a pin pinpin iṣẹ ni deede laarin nọmba awọn ohun kohun.
    Lakoko yẹn (21.812281 milliseconds), apapọ nọmba awọn iyipo Sipiyu ti o run jẹ 62,025,623, eyiti o pin nipasẹ 0.021812281 awọn aaya n fun 2.843 GHz.
  3. Ti a ba pin nọmba awọn iyipo nipasẹ kika awọn ilana lapapọ a gba 4.9 Awọn iyipo Fun Ilana kan, eyiti o tumọ si itọnisọna kọọkan mu o fẹrẹ to awọn iyipo Sipiyu 5 lati pari (ni apapọ). A le ṣe ibawi eyi (o kere ju apakan) lori nọmba awọn ẹka ati awọn aṣiṣe ti eka (wo isalẹ), eyiti o pari jiju tabi ilokulo awọn iyipo CPU.
  4. Bi a ṣe pa aṣẹ naa, apapọ awọn ẹka 3,552,630 ni o pade. Eyi ni aṣoju ipele Sipiyu ti awọn aaye ipinnu ati awọn losiwajulosehin ninu koodu naa. Awọn ẹka diẹ sii, isalẹ iṣẹ naa. Lati ṣe isanpada fun eyi, gbogbo awọn Sipiyu ode oni gbiyanju lati ṣe asọtẹlẹ sisan ti koodu yoo gba. Awọn aṣiṣe-ẹka 51,348 fihan pe ẹya asọtẹlẹ naa jẹ aṣiṣe 1.45% ti akoko naa.

Ilana kanna ni o kan si awọn iṣiro apejọ (tabi ni awọn ọrọ miiran, profaili) lakoko ti ohun elo kan nṣiṣẹ. Nìkan ṣe ifilọlẹ ohun elo ti o fẹ ati lẹhin akoko asiko (eyiti o jẹ tirẹ) pa a, ati pe perf yoo ṣe afihan awọn iṣiro inu iboju naa. Nipa itupalẹ awọn iṣiro wọnyẹn o le ṣe idanimọ awọn iṣoro ti o ṣeeṣe.

oke oke jẹ iru si aṣẹ oke, ni pe o ṣe afihan profaili eto gidi-akoko (ti a tun mọ ni igbekale laaye).

Pẹlu aṣayan -a iwọ yoo ṣe afihan gbogbo awọn iru iṣẹlẹ ti o mọ, lakoko ti aṣayan -e yoo gba ọ laaye lati yan ẹka iṣẹlẹ kan pato (bi a ṣe pada nipasẹ atokọ perf) :

Yoo han gbogbo iṣẹlẹ waye.

perf top -a 

Yoo ṣe afihan gbogbo awọn iṣẹlẹ ti o jọmọ kọnputa-aago.

perf top -e cpu-clock 

Ọwọn akọkọ ninu iṣẹjade loke duro fun ipin ogorun awọn ayẹwo ti o ya lati ibẹrẹ ti ṣiṣe, ni akojọpọ nipasẹ Ami iṣẹ ati Nkan Pinpin. Awọn aṣayan diẹ sii wa ni eniyan perf-oke.

igbasilẹ perf ṣiṣe aṣẹ kan ati fipamọ data iṣiro sinu faili kan ti a npè ni perf.data inu ilana iṣẹ lọwọlọwọ. O n ṣiṣẹ bakanna si perf stat.

Tẹ iru igbasilẹ perf nipa atẹle kan:

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

awọn ọna kika ijabọ perf awọn data ti a gba ni perf.data loke sinu ijabọ iṣe:

# sudo perf report

Gbogbo awọn aṣẹ-aṣẹ ti o wa loke ni oju-iwe ifiṣootọ eniyan ti o le pe ni:

# man perf-subcommand

nibiti aṣẹ-aṣẹ jẹ boya atokọ, iṣiro, oke, igbasilẹ, tabi ijabọ. Iwọnyi ni awọn aṣẹ-aṣẹ ti a nlo nigbagbogbo; awọn miiran ti wa ni atokọ ninu iwe-ipamọ (tọka si apakan Lakotan fun ọna asopọ).

Akopọ

Ninu itọsọna yii a ti ṣafihan rẹ si perf, ibojuwo iṣẹ ati irinṣẹ onínọmbà fun Lainos. A gba ọ niyanju ni gíga lati faramọ pẹlu awọn iwe rẹ eyiti o tọju ni https://perf.wiki.kernel.org.

Ti o ba wa awọn ohun elo ti n gba ipin giga ti awọn orisun, o le ronu iyipada koodu orisun, tabi lo awọn omiiran miiran.

Ti o ba ni awọn ibeere nipa nkan yii tabi awọn didaba lati ni ilọsiwaju, gbogbo wa ni eti. Ni idaniloju lati de ọdọ wa nipa lilo fọọmu asọye ni isalẹ.