Tips en Trucs 2024

Prestatieprofilering

Het is voor ontwikkelaars niet eenvoudig om betrouwbaar software profilers op Linux te gebruiken. Sysprof heeft dit verbeterd zodat iedereen kan bijdragen om Linux sneller, efficiënter en betrouwbaarder te maken.

Een software profiler helpt ontwikkelaars om de prestaties te verbeteren door te karakteriseren wat er gedurende een bepaalde periode op een computer gebeurt.

Deze informatie helpt om te bepalen welke veranderingen nodig zijn om het energieverbruik te verminderen, langlopende taken te versnellen of zelfs om moeilijk te vinden bugs op te sporen.

Uiteindelijk worden deze wijzigingen onderdeel van het besturingssysteem en/of de applicaties die in een volgende release bij de gebruikers terechtkomen.

Sysprof installeren

Sysprof is beschikbaar in de standaard softwarebronnen van Debian Bookworm en installeer je als volgt:

Sysprof gebruiken

Sysprof gebruiken we om vast te leggen wat er op ons systeem gebeurt. Het heeft verstandige standaardinstellingen, dus zodra we het dialoogvenster zien, kunnen we onderaan het venster klikken op de knop . Sysprof kan zijn werkt alleen verichten met root-rechten, geef dus opnieuw het correcte wachtwoord in.

Sysprof Opnemen

Er verschijnt een kleine opname-indicator. Deze kan worden gebruikt om de opname te stoppen wanneer de te onderzoeken taak is voltooid.

Sysprof opname

Terwijl de profiler draait, gebruiken we de applicatie waarover we meer inzicht willen krijgen. We kunnen ook niets doen en gewoon kijken wat het systeem doet terwijl het niet actief is.

klikken we we op de knop en verschijnt de interactieve interface. Deze kan nu gebruikt worden om te onderzoeken wat er gebeurd is.

Merk op dat je ook de sysprof-cli opdracht kunt gebruiken om opnames te maken. Gebruik de Sysprof applicatie om ze te openen en te verkennen. Dit kan handig zijn als je SSH gebruikt om toegang te krijgen tot een systeem op afstand.

Als je de opname stopt, wordt er een "callgraph" weergegeven.

Sysprof

Het menu open je met de knop met de drie lijnen rechts bovenaan in de titelbalk.

Sysprof Menu

Het menu bevat opdrachten om opnames op te slaan, te openen, nieuwe opnames aan te maken, enz. Gebruikers die veel met Sysprof werken, werken efficiënter met sneltoetsen (eveneens te bereiken via het menu).

Sysprof Sneltoetsen

Betere functienamen

Soms kan Sysprof geen functienaam bepalen voor een bepaald stuk code. In plaats daarvan kan de functie een naam krijgen als In File libthing.so+0x1234.

Je kunt dit vaak verbeteren door het debuginfopakket voor die applicatie of bibliotheek te installeren.

Om te achterhalen welke debuginfopakketten voor een bepaalde applicatie in Debian beschikbaar zijn, moet je de volgende software installeren.

dany@pindabook:~$ sudo apt install debian-goodies
[sudo] wachtwoord voor root: 
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende extra pakketten zullen geïnstalleerd worden:
  autoconf automake autopoint autotools-dev bsd-mailx dctrl-tools debhelper dh-autoreconf dh-strip-nondeterminism
  dwz elfutils equivs exim4-base exim4-config exim4-daemon-light gettext intltool-debian libarchive-cpio-perl
  libarchive-zip-perl libasm1 libdebhelper-perl libfile-slurper-perl libfile-stripnondeterminism-perl
  libfile-which-perl libgnutls-dane0 liblockfile1 libltdl-dev libmail-sendmail-perl libperlio-utf8-strict-perl
  libsub-override-perl libsys-hostname-long-perl libtool libunbound8 m4 po-debconf popularity-contest
Voorgestelde pakketten:
  autoconf-archive gnu-standards autoconf-doc debtags dh-make apt-file ccze debsums exim4-doc-html
  | exim4-doc-info eximon4 spf-tools-perl swaks gettext-doc libasprintf-dev libgettextpo-dev libtool-doc gfortran
  | fortran95-compiler gcj-jdk m4-doc libmail-box-perl tor torsocks
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  autoconf automake autopoint autotools-dev bsd-mailx dctrl-tools debhelper debian-goodies dh-autoreconf
  dh-strip-nondeterminism dwz elfutils equivs exim4-base exim4-config exim4-daemon-light gettext intltool-debian
  libarchive-cpio-perl libarchive-zip-perl libasm1 libdebhelper-perl libfile-slurper-perl
  libfile-stripnondeterminism-perl libfile-which-perl libgnutls-dane0 liblockfile1 libltdl-dev
  libmail-sendmail-perl libperlio-utf8-strict-perl libsub-override-perl libsys-hostname-long-perl libtool
  libunbound8 m4 po-debconf popularity-contest
0 opgewaardeerd, 37 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 9.410 kB aan archieven opgehaald worden.
Na deze bewerking zal er 26,8 MB extra schijfruimte gebruikt worden.
Wilt u doorgaan? [J/n] 
Ophalen:1 http://security.debian.org/debian-security bookworm-security/main amd64 libunbound8 amd64 1.17.1-2+deb12u2 [550 kB]
Ophalen:2 http://deb.debian.org/debian bookworm/main amd64 popularity-contest all 1.76 [53,8 kB]
Ophalen:3 http://deb.debian.org/debian bookworm/main amd64 m4 amd64 1.4.19-3 [287 kB]
...
Ophalen:35 http://deb.debian.org/debian bookworm/main amd64 libsys-hostname-long-perl all 1.5-3 [11,6 kB]
Ophalen:36 http://deb.debian.org/debian bookworm/main amd64 libmail-sendmail-perl all 0.80-3 [24,3 kB]
Ophalen:37 http://deb.debian.org/debian bookworm/main amd64 libperlio-utf8-strict-perl amd64 0.010-1 [11,4 kB]
9.410 kB opgehaald in 1s (11,0 MB/s)                   
Extraheren van sjablonen uit pakketten: 100%
Voorconfigureren van pakketten ...
Voorheen niet geselecteerd pakket popularity-contest wordt geselecteerd.
(Database wordt ingelezen ... 180711 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../00-popularity-contest_1.76_all.deb wordt voorbereid...
Bezig met uitpakken van popularity-contest (1.76) ...
...
Voorheen niet geselecteerd pakket libperlio-utf8-strict-perl wordt geselecteerd.
Uitpakken van .../36-libperlio-utf8-strict-perl_0.010-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libperlio-utf8-strict-perl (0.010-1) ...
Instellen van libfile-slurper-perl (0.014-1) ...
Instellen van libfile-which-perl (1.27-2) ...
Instellen van gettext (0.21-12) ...
...Instellen van exim4-daemon-light (4.96-15+deb12u4) ...
Instellen van debhelper (13.11.4) ...
Instellen van bsd-mailx (8.1.2-0.20220412cvs-1) ...
update-alternatives: /usr/bin/bsd-mailx wordt gebruikt om in de automatische modus in /usr/bin/mailx (mailx) te voorzien
Instellen van equivs (2.3.1) ...
Bezig met afhandelen van triggers voor libc-bin (2.36-9+deb12u7) ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
Bezig met afhandelen van triggers voor install-info (6.8-6+b1) ...

Om de benodigde debuginfo pakketten voor een bepaalde applicatie (Firefox in het voorbeeld) te achterhalen, moet je het pad van het uitvoerbaar bestand kennen. Dit kom je te weten met de volgende opdracht en gebruik je daarna met de opdracht find-dbgsym-packages:

dany@pindabook:~$ which firefox-esr 
/usr/bin/firefox-esr
dany@pindabook:~$ find-dbgsym-packages /usr/bin/firefox-esr
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libstdc++.so.6
W: Cannot find debug package for /lib/x86_64-linux-gnu/libstdc++.so.6 (0c47cec75226c7736517d5acb61e373d541a5023)
W: No dbg package for source 'firefox-esr'
W: Cannot find debug package for /usr/bin/firefox-esr (24a7028e001ddf7575d987a8573b987ed04816ae)
lib32stdc++6-12-dbg libc6-dbg libstdc++6-12-dbg libx32stdc++6-12-dbg

De gevonden debuginfopakketten installeer je met:

dany@pindabook:~$ sudo apt install lib32stdc++6-12-dbg libc6-dbg libstdc++6-12-dbg libx32stdc++6-12-dbg

Waardoor de functienamen beschikbaar zijn voor Sysprof.

Sysprof verwijderen