Weboldal keresés

Perf – Teljesítményfigyelő és -elemző eszköz Linuxhoz


Amikor a számítástechnika teljesítményéről beszélünk, akkor az erőforrásaink és az általuk adott időn belül elvégzendő feladatok közötti kapcsolatra utalunk.

A vállalatok közötti kiélezett verseny napján fontos, hogy megtanuljuk, hogyan használjuk fel azt, amink van, a lehető legjobban. A hardver- vagy szoftvererőforrások pazarlása, vagy az, hogy nem tudjuk, hogyan lehet ezeket hatékonyabban használni, olyan veszteség lesz, amelyet egyszerűen nem engedhetünk meg magunknak, ha a játékunk csúcsán akarunk lenni.

Ugyanakkor ügyelnünk kell arra, hogy erőforrásainkat ne vigyük olyan határra, ahol a tartós használat helyrehozhatatlan károkat okoz.

Ebben a cikkben egy viszonylag új teljesítményelemző eszközt mutatunk be, és tippeket adunk a Linux-rendszerek, köztük a hardver és az alkalmazások figyelésére. Ez segít abban, hogy ezek úgy működjenek, hogy erőforrások vagy saját energiája pazarlása nélkül tudja elérni a kívánt eredményt.

A Perf bemutatása és telepítése Linux alatt

Többek között a Linux egy kényelmesen perf nevű teljesítményfigyelő és -elemző eszközt biztosít. Tehát mi különbözteti meg aperfet más jól ismert eszközöktől, amelyeket már ismer?

A válasz az, hogy a perf hozzáférést biztosít a CPU-ban található Teljesítményfigyelő egységhez, és így lehetővé teszi számunkra, hogy alaposan áttekintsük a hardver viselkedését és a kapcsolódó eseményeket.

Ezen kívül figyelni tudja a szoftveres eseményeket, és jelentéseket készíthet az összegyűjtött adatokból.

Telepítheti a perf-et RPM-alapú disztribúciókban a következőkkel:

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

Debianban és származékaiban:

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

Ha az uname -r a fenti parancsban a tényleges verzión kívül extra karakterláncokat ad vissza (esetemben 3.2.0-23-generic), előfordulhat, hogy be kell írnia a linux-tools-3.2.0-23 az uname kimenet helyett.

Azt is fontos megjegyezni, hogy a perf hiányos eredményeket ad, ha vendégben fut a VirtualBox vagy VMWare tetején, mivel nem teszik lehetővé a hardverszámlálók elérését, ahogyan azt más virtualizációs technológiák (például KVM vagy XEN) teszik. .

Ezenkívül ne feledje, hogy egyes perf parancsok alapértelmezés szerint a root rendszerre korlátozódnak, amelyek letilthatók (a rendszer újraindításáig) a következőképpen:

echo 0 > /proc/sys/kernel/perf_event_paranoid

Ha véglegesen le kell tiltania a paranoid módot, frissítse a következő beállítást az /etc/sysctl.conf fájlban.

kernel.perf_event_paranoid = 0

Alparancsok

Miután telepítette a perf alkalmazást, a man oldalon megtekintheti az elérhető alparancsok listáját (az alparancsokat olyan speciális opcióknak tekintheti, amelyek egy adott ablakot nyitnak meg a rendszerben). A legjobb és teljesebb eredmény érdekében használja a perf-et root-ként vagy a sudo-n keresztül.

Perf lista

perf lista (opciók nélkül) az összes szimbolikus eseménytípust (hosszú lista) adja vissza. Ha meg szeretné tekinteni egy adott kategóriában elérhető események listáját, használja a perf listát, majd a kategória nevét ([hw|sw|cache|tracepoint|pmu|event_glob) ]), mint például:

A szoftver előre meghatározott események listájának megjelenítése Linuxban:

perf list sw 

Perf stat

A perf stat parancsot futtat, és az ilyen parancsok végrehajtása során gyűjti a Linux teljesítménystatisztikáját. Mi történik a rendszerünkben a dd futtatásakor?

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

A fent látható statisztikák többek között a következőket mutatják:

  1. A dd parancs végrehajtása 21,812281 milliszekundumot vett igénybe a CPU-ból. Ha ezt a számot elosztjuk az alábbi „eltelt idő másodpercek” értékével (23,914596 ezredmásodperc), akkor 0,912 (CPU kihasználtság) lesz.
  2. A parancs végrehajtása közben 15 kontextuskapcsoló (más néven folyamatkapcsoló) jelzi, hogy a CPU-kat 15-ször váltották át egyik folyamatról (vagy szálról) a másikra.
  3. 2 CPU-migráció a várt eredmény, ha egy 2 magos CPU-ban a munkaterhelés egyenletesen oszlik el a magok között.
    Ez alatt az idő alatt (21,812281 ezredmásodperc) a felhasznált CPU-ciklusok teljes száma 62 025 623 volt, ami elosztva 0,021812281 másodperccel a következőt adja: 2,843 GHz.
  4. Ha elosztjuk a ciklusok számát az utasítások teljes számával, 4,9 ciklust kapunk utasításonként, ami azt jelenti, hogy minden utasítás végrehajtása majdnem 5 CPU-ciklust vett igénybe (átlagosan). Ezt (legalábbis részben) az elágazások és elágazások (lásd alább) számának okolhatjuk, amelyek a CPU-ciklusok elpazarolásához vagy helytelen használatához vezetnek.
  5. A parancs végrehajtása során összesen 3 552 630 elágazás történt. Ez a kódban lévő döntési pontok és hurkok CPU-szintű ábrázolása. Minél több ág, annál alacsonyabb a teljesítmény. Ennek kompenzálására minden modern CPU megkísérli megjósolni a kód áramlását. Az 51 348 elágazás azt jelzi, hogy az előrejelzési funkció az esetek 1,45%-ában hibás volt.

Ugyanez az elv vonatkozik a statisztikák gyűjtésére (vagy más szóval profilalkotásra), miközben egy alkalmazás fut. Egyszerűen indítsa el a kívánt alkalmazást, és egy ésszerű idő elteltével (amely Öntől függ) zárja be, és a perf megjeleníti a statisztikát a képernyőn. E statisztikák elemzésével azonosíthatja a lehetséges problémákat.

Perf felső

A perf top hasonló a top parancshoz, mivel szinte valós idejű rendszerprofilt jelenít meg (más néven élő elemzés).

A -a opcióval megjelenítheti az összes ismert eseménytípust, míg a -e opció lehetővé teszi egy adott eseménykategória kiválasztását (ahogy ezt a adja vissza perf list):

Megjeleníti az összes ciklus eseményét.

perf top -a 

Megjeleníti az összes CPU-órával kapcsolatos eseményt.

perf top -e cpu-clock 

A fenti kimenet első oszlopa a futtatás eleje óta vett minták százalékos arányát mutatja, Symbol és Shared Object függvény szerint csoportosítva. További lehetőségek állnak rendelkezésre a man perf-top-ban.

Perf rekord

A perf rekord egy parancsot futtat, és a statisztikai adatokat egy perf.data nevű fájlba menti az aktuális munkakönyvtárban. A perf stat-hoz hasonlóan fut.

Írja be a perf record parancsot, majd egy parancsot:

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

Tökéletes riport

A perf report a fenti perf.data fájlban gyűjtött adatokat teljesítményjelentéssé formálja:

sudo perf report

Az összes fenti alparancsnak van egy dedikált man oldala, amely a következőképpen hívható meg:

man perf-subcommand

ahol az alparancs a lista, a stat, a top, a rekord vagy a >jelentéset. Ezek a leggyakrabban használt alparancsok; a többi megtalálható a dokumentációban (a linkért lásd az Összefoglaló részt).

Összegzés

Ebben az útmutatóban bemutattuk a perf-et, egy teljesítményfigyelő és -elemző eszközt Linuxhoz. Erősen javasoljuk, hogy ismerkedjen meg dokumentációjával, amely a https://perf.wiki.kernel.org oldalon található.

Ha olyan alkalmazásokat talál, amelyek nagy százalékban fogyasztják az erőforrásokat, fontolóra veheti a forráskód módosítását vagy más alternatívák használatát.

Ha kérdése van ezzel a cikkel kapcsolatban, vagy javítási javaslatai vannak, mindannyian hallgatunk. Ne habozzon kapcsolatba lépni velünk az alábbi megjegyzés űrlap segítségével.