OProfile ir Linux veiktspējas profilētājs. Šajā rakstā mēs izpētīsim, ko tā dara, kā to instalēt un konfigurēt un kā izmantot apkopotos datus.
Jums varētu rasties jautājums, kāpēc jums būtu nepieciešams šāds rīks, jo lielākajā daļā Linux izplatījumu pēc noklusējuma ir pieejami daudz labu veiktspējas analīzes rīku. Katrā instalācijā ir iekļauti tādi rīki kā top un vmstat, un utilītu, piemēram, strace, izsekošana parasti ir tikai apt-get away. Kur iederas OProfile?
Iepriekš minētie rīki ir lieliski, lai reāllaikā iegūtu Linux sistēmas momentuzņēmumu. Tādi rīki kā top vai htop parāda visus darbojošos procesus, to pašreizējo atmiņas patēriņu un procesora lietojumu. Bet, zinot, kādi procesi un sistēmas izsaukumi patērē visvairāk resursu, kļūst problemātiski.
Tur ienāk OProfile. Šis utilītu komplekts ne tikai veic analīzi dziļākā līmenī, bet arī ietaupa datus un ļauj sagatavot veiktspējas pārskatus, kas piedāvā daudz informācijas, kas var palīdzēt atkļūdot pat visnepatīkamāko veiktspējas problēmu.
OProfile nav paredzēts tikai izstrādātājiem. Darbvirsmas vidē OProfile var palīdzēt izsekot procesorietilpīgiem fona uzdevumiem vai I / O zvaniem, kas palēnina un nav uzreiz redzami. Aizņemtā sistēmā ar mainīgām procesa prioritātēm šos datus var būt grūti apkopot, nemaz nerunājot par to, kā tos interpretēt. Servera vides daudzprocesu raksturs šo uzdevumu padara vēl grūtāku, izmantojot tradicionālos rīkus.
Tas nozīmē, ka izstrādātāji, bez šaubām, maksimāli izmantos OProfile. Informācija, kuru es iepazīstināšu, aptvers abu lietošanas gadījumu pamatus, lai jūs varētu iedziļināties jebkuras Linux programmas veiktspējas metrikā.
Uzstādīšana
Pirms ienirt dziļi OProfile, ir jāveic ļoti svarīga piezīme - iespējams, to nevarēsit instalēt virtualizētā vidē. Ja operētājsistēmu Linux izmantojat VirtualBox, VMWare vai līdzīgā VM vidē, iespējams, ka OProfile nevarēs piekļūt nepieciešamajiem veiktspējas skaitītājiem, lai apkopotu datus. Turklāt, pat ja jūs to varat izmantot virtuālā vidē, precīzs laiks var būt nedaudz sagrozīts, pamatojoties uz resursdatora sistēmas slodzi, tāpēc, lūdzu, ņemiet to vērā, ja nedarbojaties ar vietējo aparatūru.
Vairāku Linux izplatījumu pakotņu pārvaldības sistēmās ir OProfile, kas atvieglo instalēšanu:
- Debian / Ubuntu / Linux Mint - sudo apt-get install oprofile
- Fedora / CentOS - sudo yum instalēt oprofilu
- Arch - sudo pacman -S oprofile
Vienkāršs piemērs
Kad programma ir instalēta, samērcēsim kājas ar triviālu, tomēr noderīgu piemēru. Programma “ls” ir komanda, kuru jūs, iespējams, izmantojat visu laiku. Tas vienkārši parāda pašreizējā direktorijā esošo failu un mapju sarakstu. Izsekosim tā iznākumu:
sudo operf ls
Jūs redzēsiet kaut ko līdzīgu iepriekš redzamajam ekrānuzņēmumam. Kad profilētājs ir pabeigts, tas paziņos “Profilēšana ir pabeigta.”Tas ir saglabājis datus mapē ar nosaukumu oprofile_data, kuru var izmantot, lai izveidotu pārskatu.
Palaidot komandu opreport (šajā gadījumā bez sudo), tiek izveidots šāds pārskats:
Šajā piemērā noklusējuma pārskats parāda paraugu skaitu, kad centrālais procesors nebija HALT stāvoklī (citiem vārdiem sakot, aktīvi kaut ko darīja). Kallsyms nodrošina simbolu meklēšanu, ko izmanto profilētājs, un ld.tā un libc.tā ir daļa no glibc pakotnes, kopīgas bibliotēkas, kas ir saistīta ar gandrīz visiem Linux izpildāmajiem failiem un nodrošina pamata funkcionalitāti, ko izstrādātāji var izmantot, lai atturētu no riteņa izgudrošanas un nodrošinātu vispārēju saderības līmeni starp dažādām sistēmām. Jūs varat redzēt, ka faktiskā programma ls bija daudz mazāk laika, kas nebija HALT laiks - lielāko daļu smagā celšanas veica standarta bibliotēkas.
Kad mēs esam pabeiguši ziņojumu, ieteicams noņemt datu mapi vai saglabāt to turpmākai analīzei. Šajā piemērā mēs to vienkārši noņemsim, jo mēs veicam paraugu vingrinājumus. Tā kā mēs palaidām komandu ar sudo, mums ir jānoņem mape ar sudo. Esi uzmanīgs!
sudo rm -Rf oprofile_data
Sarežģītāks piemērs
Šajā nākamajā piemērā mēs palaidīsim programmu, kas faktiski dara kaut ko sarežģītāku, nekā tikai uzskaitīt failus pašreizējā mapē. Lejupielādēsim WordPress ar wget.
sudo operf wget http: // wordpress.org / jaunākais.darva.gz
Pēc šī piemēra mēs varam ģenerēt pārskatu ar komandu “opreport”:
Pēc šī jūs redzēsiet daudz vairāk aktivitāšu. Lai iegūtu jaunāko WordPress kopiju, komandai wget bija jāpaveic daudz darba aiz ainas. Lai gan nav nepieciešams pārbaudīt katru priekšmetu, interesantas vietas ir šādas:
- ath9k un ath9k_hw - šie moduļi ir atbildīgi par WiFi savienojumu šajā klēpjdatorā.
- mac80211 un cfg80211 - šīm bibliotēkām bija liela nozīme wget nepieciešamā tīkla savienojuma veikšanā.
- libnss_dns un libresolv tika izmantoti, lai atrisinātu WordPress.org domēnu IP adresē, lai wget varētu izveidot HTTP savienojumu.
- libcrypto un libssl - šīs bibliotēkas ir daļa no OpenSSL bibliotēkas. Tas veica darbu, lai dekodētu saņemtos datus no https: // url. Ņemiet vērā, ka, kaut arī mēs norādījām URL ar http: //, WordPress serveris mūs novirzīja uz https: // un wget sekoja šim novirzījumam.
- libpthread - šī bibliotēka veic pavedienu operācijas, kas ļauj programmām vienlaikus veikt vairākas lietas. Šajā gadījumā wget sāka pavedienu, lai lejupielādētu programmu, kā arī ekrānā sniedz ASCII balstītu lejupielādes progresa indikatoru.
Šāda veida dati izstrādātājam var sniegt daudz informācijas. Bet cik tas ir svarīgi servera sistēmas administratoram vai enerģijas lietotājam uz darbvirsmas? Zinot, kuras programmas daļas aizņem visvairāk procesora laika, mēs varam uzzināt, kas ir jāoptimizē vai kur notiek palēnināšanās, ļaujot mums pieņemt labākus lēmumus par to, kā optimizēt mūsu sistēmu.
Šajā piemērā visvairāk CPU laika paņēma kriptogrāfijas / SSL rutīnas. Tas ir saprotams, jo kriptogrāfija ir laikietilpīgs uzdevums. Bija WordPress.org vietne nav mūs novirzījusi uz vietni https: // šī bibliotēka nebūtu izmantota, tādējādi ietaupot CPU laiku. Tīkla slānis joprojām būtu izmantots, taču vadu savienojuma izmantošana bezvadu savienojuma vietā, visticamāk, būtu mazāka ar nodokļiem. Atspējojot progresa indikatoru wget programmā (izmantojot slēdzi -nv), būtu ietaupīts CPU laiks, parādot lejupielādes gaitu.
Rakšana simbolos
Lai gan noklusējuma ziņojumā ir sniegta vērtīga un noderīga informācija, mēs varam to izpētīt tālāk. Palaidot šo:
opreport --demangle = smart --symbols
Mēs varam precīzi uzzināt, cik daudz CPU laika funkcijas patērē bibliotēkās:
Šajā piemērā es izmantoju iepriekš minēto komandu wget, bet izmantoju http: // URL (tādu, kas nenovirza uz https: //), un izsekojumā var redzēt, ka OpenSSL bibliotēkas nav. Tomēr tagad bibliotēkas nosaukuma vietā mums ir pilns iesaistīto funkciju saraksts. Kā redzat, tīkla slānis patērēja lielāko daļu CPU laika, kas nav HALT.
Pārejot uz nākamo līmeni
Iepriekšējos piemēros mēs izmantojām OProfile, lai apskatītu vienu programmu vienlaikus. Varat uzreiz pārbaudīt visu sistēmu, izmantojot visas sistēmas slēdzi:
sudo operf - visas sistēmas garumā
Izmantojot šo paņēmienu, OProfile apkopos statistiku tādā pašā veidā un apstāsies, nospiežot taustiņu kombināciju CTRL + C. Pēc tam jūs varat palaist komandu opreport. Tā kā profilētājs, iespējams, ģenerēs daudz vairāk datu (īpaši uz darbvirsmas vai aizņemta servera).
ziņot & gt; Ziņot.txt
Pārskats tagad ir skatāms failā ar nosaukumu report.txt
Zema virs galvas
Ir svarīgi atzīmēt, ka, lai gan OProfile nevajadzētu traucēt jūsu programmu darbībai, tas radīs nedaudz papildu izmaksas un tādējādi palēninās izpildi. Mūsu vienkāršajos piemēros iepriekš tas neradīja problēmu, taču programmā ar ilgu izpildi un plašu funkciju izsaukumiem jūs, iespējams, pamanīsit atšķirību. Tāpēc es neieteiktu izmantot šo programmu ražošanas servera vidē, ja vien nerodas nopietna veiktspējas problēma, kas jāatrisina, izmantojot tiešraidi. Pat tad es to izmantotu pietiekami ilgi, lai atrastu problēmu.
Secinājums
OProfile ir spēcīgs veiktspējas profilēšanas rīks. Tas izmanto zemāko līmeni, kas pieejams Linux, lai iegūtu veiktspējas skaitītājus un metriku, kas sniedz jums vērtīgu informāciju par jūsu programmām.
Ir pagājuši minējumi veiktspējas atkļūdošanā - tagad jums ir tiesības precīzi zināt, ko dara jūsu sistēma un kā to uzlabot. Izpētot OProfile ģenerētos pārskatus, jūs varat pieņemt informētus, uz datiem balstītus lēmumus par savas sistēmas optimizāciju.