Teljesítmény

OProfile bemutató

OProfile bemutató

Az OProfile egy teljesítményprofilozó a Linux számára. Ebben a cikkben azt vizsgáljuk, hogy mit csinál, hogyan kell telepíteni és konfigurálni, és hogyan lehet felhasználni az összegyűjtött adatokat.

Kíváncsi lehet, miért lenne szüksége ilyen eszközre, mivel alapértelmezés szerint rengeteg jó teljesítményelemző eszköz áll rendelkezésre a legtöbb Linux disztribúción. Minden telepítés olyan eszközöket tartalmaz, mint a top és a vmstat, és a segédprogramok, például a strace nyomon követése általában csak egy apt-get away. Hova illeszkedik az OProfile?

A korábban említett eszközök kiválóak ahhoz, hogy valós időben elkészítsenek egy pillanatképet egy Linux rendszerről. Az olyan eszközök, mint a top vagy a htop, bemutatják az összes futó folyamatot, azok aktuális memóriafelhasználását és processzorhasználatát. De problematikussá válik annak ismerete, hogy a folyamatok és a rendszerhívások mennyire fogyasztják a legtöbb erőforrást.

Ott jön be az OProfile. Ez a segédprogramcsomag nemcsak mélyebb szinten végzi az elemzését, hanem adatokat is ment és lehetővé teszi, hogy olyan teljesítményjelentéseket készítsen, amelyek rengeteg információt kínálnak, amelyek segítenek a legmegfoghatatlanabb teljesítményproblémák hibakeresésében is.

Az OProfile nem csak a fejlesztők számára készült. Asztali környezetben az OProfile segíthet a processzorigényes háttérfeladatok vagy az I / O hívások felkutatásában, amelyek lassítanak és nem azonnal nyilvánvalóak. Egy forgalmas rendszerben, ahol a folyamatok prioritásai váltakoznak, ezeket az adatokat nehezen lehet gyűjteni, nemhogy értelmezni. A szerverkörnyezet többfolyamatos jellege ezt a feladatot a hagyományos eszközökkel még nehezebbé teszi.

Ennek ellenére a fejlesztők kétségtelenül a lehető legtöbbet használják ki az OProfile-ból. Az általam bemutatott információk mindkét felhasználási eset alapjaira kiterjednek, így belemerülhet bármely Linux program teljesítménymutatóiba.

Telepítés

Nagyon fontos megjegyzést kell megtenni, mielőtt mélyen belemerülne az OProfile-ba - előfordulhat, hogy nem tudja telepíteni virtualizált környezetbe. Ha Linuxot egy VirtualBox, VMWare vagy hasonló virtuális gép környezetben futtat, előfordulhat, hogy az OProfile nem tudja elérni az adatgyűjtéshez szükséges teljesítményszámlálókat. Továbbá, még ha képes is használni virtuális környezetben, a pontos időzítés kissé torzulhat a gazdagép terhelése alapján, ezért kérjük, ne feledje ezt, ha nem natív hardveren fut.

Számos Linux disztribúció csomagkezelő rendszereiben van OProfile, ami megkönnyíti a telepítést:

Egyszerű példa

A program telepítése után nedvesítsük meg a lábunkat egy triviális, mégis hasznos példával. Az „ls” program valószínűleg mindig használt parancs. Egyszerűen megjeleníti a fájlok és mappák listáját az aktuális könyvtárban. Nézzük meg a kimenetét:

sudo operf ls

Látni fog valami hasonlót a fenti képernyőképhez. Miután a profilozó elkészült, bejelenti a „Profil kész.”Adatait egy oprofile_data nevű mappába mentette, amely felhasználható jelentés készítéséhez.

Az opreport parancs futtatása (ebben az esetben sudo nélkül) ehhez hasonló jelentést hoz létre:

Ebben a példában az alapértelmezett jelentés megmutatja a minták számát, amikor a CPU nem volt HALT állapotban (más szóval, aktívan csinált valamit). A Kallsyms szimbólumkeresést nyújt a profilozó és az ld által.így és libc.a glibc csomag része, egy szinte az összes Linux futtatható fájlba kapcsolt közös könyvtár, amely alapvető funkciókat biztosít a fejlesztők számára, hogy megakadályozzák a kerék újratalálását és általános szintű kompatibilitást biztosítsanak a különböző rendszerek között. Láthatja, hogy a tényleges program ls sokkal kevesebb volt a nem HALT ideje - a nehéz emelés nagy részét a szokásos könyvtárak végezték.

Miután elkészültünk a jelentéssel, célszerű vagy eltávolítani az adatmappát, vagy elmenteni későbbi elemzés céljából. Ebben a példában csak eltávolítjuk, mivel mintagyakorlatokat futtatunk. Mivel a parancsot sudo-val futtattuk, el kell távolítanunk a sudo mappát. Légy óvatos!

sudo rm -Rf oprofile_data

Összetettebb példa

Ebben a következő példában egy olyan programot futtatunk, amely valójában valami bonyolultabb feladatot hajt végre, nem csak az aktuális mappában lévő fájlokat sorolja fel. Töltsük le a WordPress alkalmazást a wget segítségével.

sudo operf wget http: // wordpress.org / legújabb.kátrány.gz

E példa után létrehozhatunk egy jelentést az „opreport” paranccsal:

Sokkal több tevékenységet fog látni ez után. A wget parancsnak nagyon sok munkát kellett elvégeznie a kulisszák mögött, hogy megszerezze a WordPress legújabb példányát. Bár nem szükséges megvizsgálni az egyes elemeket, az érdekes érdekességek a következők:

Ez a fajta adat rengeteg információt nyújthat a fejlesztő számára. De mennyire fontos ez egy kiszolgáló rendszergazdájának vagy egy asztali felhasználónak? Annak tudatában, hogy a program mely részei veszik igénybe a legtöbb CPU-időt, megtudhatjuk, hogy mit kell optimalizálni, vagy hol történik a lassulás, lehetővé téve számunkra, hogy jobb döntéseket hozzunk a rendszerünk optimalizálásáról.

Ebben a példában a legtöbb CPU-időt a crypto / SSL rutinok vették igénybe. Ez érthető, mert a rejtjelezés időigényes feladat. Megvolt a wordpress.Az org webhelye nem irányított át minket a https: // webhelyre. Ezt a könyvtárat nem használták volna, ezzel megtakarítva a CPU idejét. A hálózati réteget továbbra is használták volna, de a vezetékes kapcsolat használata vezeték nélküli kapcsolat helyett valószínűleg kevésbé adóztatta volna meg. Ha a wget programban letiltja a folyamatjelzőt (az -nv kapcsolón keresztül), akkor a CPU ideje spórolt volna a letöltés előrehaladásának megjelenítésében.

Szimbólumokba ásni

Annak ellenére, hogy az alapértelmezett jelentés értékes és hasznos információkat nyújt, tovább tudunk ásni. Ennek futtatásával:

opreport --demangle = smart --szimbólumok

Megtudhatjuk, hogy a könyvtárakban pontosan mennyi CPU-idő működik:

Ebben a példában a fenti wget parancsot használtam, de egy http: // URL-t használtam (amely nem irányít át a https: // -re), és láthatja az OpenSSL könyvtárak hiányát a nyomokban. A könyvtár neve helyett azonban most már teljes listát kapunk az érintett funkciókról. Mint látható, a hálózati réteg a CPU nem HALT idejének nagy részét elfogyasztotta.

A következő szintre emelés

Az előző példákban az OProfile-t használtuk arra, hogy egyszerre csak egy programot nézzünk meg. Az egész rendszert egyszerre megvizsgálhatja a -system-switch kapcsolóval:

sudo operf - a rendszer egészére kiterjedően

Ezzel a technikával az OProfile ugyanúgy gyűjti a statisztikákat, és leáll, amikor lenyomja a CTRL + C billentyűt. Ezután futtathatja az opreport parancsot. Mivel a profilozó valószínűleg sokkal több adatot fog generálni (különösen asztali vagy elfoglalt kiszolgálón).

beszámoló & gt; jelentés.txt

A jelentés most a jelentés nevű fájlban tekinthető meg.txt

Alacsony rezsi

Fontos megjegyezni, hogy bár az OProfile nem zavarhatja a programok működését, egy kis rezsit hoz létre és ezáltal lelassítja a végrehajtást. A fenti egyszerű példáinkban ez nem okozott problémát, de egy hosszú végrehajtású és kiterjedt függvényhívásokkal rendelkező programnál valószínűleg észrevesz egy különbséget. Emiatt nem javasolnám ennek a programnak a használatát éles kiszolgálói környezetben, kivéve, ha kritikus teljesítményproblémával szembesülök, amelyet élő használat mellett kell megoldani. Akkor is elég hosszú ideig használnám, hogy megtaláljam a problémát.

Következtetés

Az OProfile egy hatékony teljesítményprofil-eszköz. Kihasználja a Linux alatt elérhető legalacsonyabb szintet, hogy teljesítményszámlálókat és mutatókat szerezzen, amelyek értékes információkat nyújtanak a programjairól.

Elmúltak a találgatások napja a teljesítményhiba-keresés során - most megvan az ereje, hogy pontosan tudja, mit csinál a rendszere, és hogyan lehetne javítani rajta. Az OProfile által generált jelentések tanulmányozásával megalapozott, adatközpontú döntéseket hozhat a rendszer optimalizálásáról.

A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...