Na ovoj stranici

Vizualizator formata praćenja Chromea

Možete koristiti praćenje cijelog staka (full stack tracing ) kako biste pratili put od najviše razine QML-a ili JavaScript koda do C++-a i sve do prostora jezgre. To vam omogućuje mjerenje performansi aplikacije i provjeru je li aplikacija ograničena na CPU ili I/O operacije ili je pod utjecajem drugih aplikacija koje se izvršavaju na istom sustavu. Praćenje pruža uvid u to što sustav radi i zašto se aplikacija ponaša na određeni način. Pokazuje kako se hardver koristi i što rade kernel i aplikacija.

Informacije o praćenju mogu vam reći više o podacima koji QML Profiler prikuplja. Na primjer, možete provjeriti zašto evaluacija trivijalnog vezivanja traje toliko dugo. To može biti uzrokovano izvršavanjem C++ koda ili sporom disk I/O operacijom.

Nekoliko alata za praćenje (kao što je chrome://about) može generirati informacije o događajima praćenja u Chromeu u formatu Chrome Trace Format (CTF). CTF datoteke možete otvoriti u Qt Creator za pregled. To je posebno korisno pri pregledu zapisnika većih od 100 MB, koje je teško pregledati pomoću ugrađenog preglednika zapisnika (chrome://tracing) zbog njegove velike potrošnje memorije.

Visualizator podržava sve vrste događaja koje se koriste u podacima koje generira LTTng okvir za praćenje, pretvorenima u CTF. Međutim, neke od naprednijih vrsta događaja koje se koriste, na primjer, u tragovima sustava Android, nisu podržane. Visualizator tiho zanemaruje nepodržane vrste događaja.

Visualizator podržava sljedeće vrste događaja:

  • Početni, završni, trajni i trenutačni događaji
  • Događaji brojača (grafikoni)
  • Metapodatkovni događaji (naziv procesa i niti)

Otvaranje JSON datoteka

Za otvaranje JSON datoteka za pregled odaberite Analyze > Chrome Trace Format Viewer > Load JSON File.

Visualizacija događaja

Prikaz Timeline prikazuje grafički prikaz događaja praćenja i sažet prikaz svih zabilježenih događaja.

Prikaz vremenske crte

Svaka kategorija u vremenskoj crti opisuje nit u aplikaciji. Pomaknite pokazivač na događaj (5) u retku kako biste vidjeli njegovo trajanje i kategoriju događaja. Da biste prikazali informacije samo kada je događaj odabran, onemogućite gumb View Event Information on Mouseover (4).

Jump to Previous Event Jump to Next Event Okvir (10) sažima razdoblje za koje su prikupljeni podaci. Povucite raspon zumiranja (8) ili kliknite na okvir kako biste se pomaknuli unutar njega. Za kretanje između događaja odaberite gumbe za pomicanje naprijed i natrag (1).

Odaberite gumb Show Zoom Slider (2) za otvaranje klizača koji možete koristiti za postavljanje razine zumiranja. Također možete povući ručke za zumiranje (9). Za vraćanje zadane razine zumiranja, kliknite desnom tipkom miša na vremensku crtu kako biste otvorili kontekstualni izbornik i odaberite Reset Zoom.

Odaberite gumb Ograniči na teme (Restrict to Threads) (6) za odabir niti koje se prikazuju.

Odabir raspona događaja

Možete odabrati raspon događaja (7) kako biste vidjeli vrijeme koje predstavlja ili zumirali u određenu regiju zapisa. Odaberite gumb Select Range (3) za aktiviranje alata za odabir. Zatim kliknite na vremenskoj crti kako biste odredili početak raspona događaja. Povucite ručku za odabir kako biste definirali kraj raspona.

Također možete koristiti raspone događaja za mjerenje kašnjenja između dva uzastopna događaja. Postavite raspon između kraja prvog događaja i početka drugog događaja. Polje " Duration " prikazuje kašnjenje između događaja u milisekundama.

Za zumiranje raspona događaja dvaput kliknite na njega.

Da biste uklonili raspon događaja, zatvorite dijalog Selection.

Pregled statistike

Pregled statistike

Prikaz Statistics -a prikazuje broj uzoraka u kojima se svaka funkcija na vremenskoj crti nalazila, ukupno i kada je bila na vrhu hrpe (što se naziva self). To vam omogućuje da ispitate koje funkcije trebate optimizirati. Veliki broj pojavljivanja može ukazivati na to da se funkcija nepotrebno pokreće ili da joj je potrebno jako dugo za izvršenje.

Prikupljanje LTTng podataka

LTTng je alat za praćenje za Linux koji možete primijeniti na ugrađenim Linux sustavima kako biste saznali kako optimizirati vrijeme pokretanja aplikacije.

Qt ima skup kernel trace pointova i podsustav za praćenje za prilagođene trace pointove u korisničkom prostoru.

Konfiguriranje kernela

Da biste koristili LTTng, morate postaviti sljedeće opcije konfiguracije za kernel prije njegove izgradnje:

  • CONFIG_HIGH_RES_TIMERS
  • CONFIG_KALLSYMS
  • CONFIG_MODULES
  • CONFIG_TRACEPOINTS

Preporučujemo da postavite sljedeće dodatne opcije:

  • CONFIG_EVENT_TRACING
  • CONFIG_HAVE_SYSCALL_TRACEPOINTS
  • CONFIG_KALLSYMS_ALL

U Yocto projektu možete aktivirati gore navedene opcije u Menu > Config > Kernel Hacking > Tracers.

Instalacija LTTng

Nakon što izgradite jezgru i postavite je na svoj uređaj, morat ćete instalirati sljedeće LTTng pakete na svoj uređaj:

  • lttng-tools za upravljanje sesijom praćenja
  • lttng-modules za kernel trace točke
  • lttng-ust za trace točke u korisničkom prostoru

U Yocto-u samo trebate omogućiti EXTRA_IMAGE_FEATURES += "tools profile".

Izrada Qt-a s točkama praćenja

Trace pointovi se kontinuirano dodaju Qt verzijama. Da biste ih koristili, morate sami izgraditi Qt s opcijom configure -trace lttng.

Snimanje događaja

Za stvaranje sesije pozivate naredbu lttng create. Zatim pozivate lttng enable-channel kernel -k kako biste omogućili kanal kernela. Unutar kanala kernela navodite odgovarajuće točke praćenja kao kernel_events i pozivate lttng enable-event kako biste ih omogućili. Na kraju pozivate lttng start kako biste započeli praćenje.

Pozivate lttng stop za zaustavljanje praćenja. Možete koristiti sleep za postavljanje duljine sesije. Nakon zaustavljanja možete pozvati lttng destroy za uništavanje sesije.

Možete pisati i pokretati skripte koje sadrže gore navedene naredbe za pokretanje i zaustavljanje praćenja cijelog staka. Možete koristiti systemd za izvođenje skripti.

Omogućavanje točaka praćenja

Podaci se bilježe prema točkama praćenja koje omogućite u LTTng sesiji. Obično je korisno omogućiti točke praćenja za prekidač rasporeditelja, syscall i Qt.

Trace točke prebacivanja rasporeditelja

Trace pointovi za promjenu rasporedivača dostižu se kada se aplikacija izbaci zbog predemptije, na primjer, kada drugi proces dobije priliku za izvršavanje na CPU jezgri. Omogućite trace pointove za promjenu rasporedivača kako biste zabilježili nit koja se trenutno izvršava i proces kojem pripada, kao i vrijeme kada je proces započeo i zaustavio se.

Trace pointovi syscalla

Trace-pointovi syscalla pomažu vam razumjeti zašto se dogodio prekid rasporedivača. Sljedeći su primjeri syscalla koje možete pratiti:

  • openat i close povezuju opisivače datoteka s imenima datoteka
  • mmap mapira greške stranica na datoteke
  • read i write pokreću se I/O operacijama
  • nanosleep, futex i poll objašnjavaju promjene rasporeditelja
  • ioctl kontrolira GPU i zaslon

Konverzija LTTng podataka u CTF

Alat ctf2ctf koristi babeltrace za analizu binarnog Common Trace Format (CTF) i pretvara ga u Chrome Trace Format (CTF). Izvršava sljedeće prilagođene zadatke kako bi snimka bila čitljivija za ljude:

  • Mapiranje opisivača datoteka na nazive datoteka
  • Mapiranje grešaka stranica na nazive datoteka
  • Označavanje prekida i blok-uređaja imenima
  • Konvertirajte podatke iz UTF-16 QString formata u UTF-8 nizove
  • Brojiti dodjele memorijskih stranica

Za generiranje JSON datoteka koje sadrže podatke o tragu u Chrome Trace formatu, unesite sljedeću naredbu u naredbeni redak:

ctf2ctf -o trace.json path/to/lttng trace/

Vidi također Kako: Analizirati, Analizatori i Analiziranje koda.

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.