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 is beschikbaar in de standaard softwarebronnen van Debian Bookworm en installeer je als volgt:
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.
Er verschijnt een kleine opname-indicator. Deze kan worden gebruikt om de opname te stoppen wanneer de te onderzoeken taak is voltooid.
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.
Het menu open je met de knop met de drie lijnen rechts bovenaan in de titelbalk.
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).
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.
dany@pindabook:~$ sudo apt purge debian-goodies lib32stdc++6-12-dbg libc6-dbg libstdc++6-12-dbg libx32stdc++6-12-dbg
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig:
dctrl-tools elfutils equivs lib32gcc-s1 lib32stdc++6 libasm1 libc6-i386 libc6-x32 libfile-slurper-perl
libfile-which-perl libperlio-utf8-strict-perl libx32gcc-s1 libx32stdc++6 linux-image-6.1.0-18-amd64
popularity-contest
Gebruik 'sudo apt autoremove' om ze te verwijderen.
De volgende pakketten zullen VERWIJDERD worden:
debian-goodies* lib32stdc++6-12-dbg* libc6-dbg* libstdc++6-12-dbg* libx32stdc++6-12-dbg*
0 opgewaardeerd, 0 nieuw geïnstalleerd, 5 te verwijderen en 0 niet opgewaardeerd.
Na deze bewerking zal er 183 MB schijfruimte vrijkomen.
Wilt u doorgaan? [J/n]
(Database wordt ingelezen ... 187981 bestanden en mappen momenteel geïnstalleerd.)
debian-goodies (0.88.1) wordt verwijderd ...
lib32stdc++6-12-dbg (12.2.0-14) wordt verwijderd ...
libc6-dbg:amd64 (2.36-9+deb12u7) wordt verwijderd ...
libstdc++6-12-dbg:amd64 (12.2.0-14) wordt verwijderd ...
libx32stdc++6-12-dbg (12.2.0-14) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
(Database wordt ingelezen ... 187458 bestanden en mappen momenteel geïnstalleerd.)
Configuratiebestanden voor debian-goodies (0.88.1) worden gewist ...
dany@pindabook:~$ sudo apt purge sysprof
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig:
dctrl-tools elfutils equivs lib32gcc-s1 lib32stdc++6 libadwaita-1-0 libasm1 libc6-i386 libc6-x32
libcairo-script-interpreter2 libcloudproviders0 libfile-slurper-perl libfile-which-perl libgtk-4-1 libgtk-4-bin
libgtk-4-common libperlio-utf8-strict-perl libsysprof-4 libsysprof-ui-5 libx32gcc-s1 libx32stdc++6
linux-image-6.1.0-18-amd64 popularity-contest
Gebruik 'sudo apt autoremove' om ze te verwijderen.
De volgende pakketten zullen VERWIJDERD worden:
sysprof*
0 opgewaardeerd, 0 nieuw geïnstalleerd, 1 te verwijderen en 0 niet opgewaardeerd.
Na deze bewerking zal er 1.900 kB schijfruimte vrijkomen.
Wilt u doorgaan? [J/n]
(Database wordt ingelezen ... 187458 bestanden en mappen momenteel geïnstalleerd.)
sysprof (3.46.0-4) wordt verwijderd ...
Bezig met afhandelen van triggers voor hicolor-icon-theme (0.17-2) ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
Bezig met afhandelen van triggers voor dbus (1.14.10-1~deb12u1) ...
Bezig met afhandelen van triggers voor shared-mime-info (2.2-1) ...
Bezig met afhandelen van triggers voor mailcap (3.70+nmu1) ...
Bezig met afhandelen van triggers voor desktop-file-utils (0.26-1) ...
(Database wordt ingelezen ... 187318 bestanden en mappen momenteel geïnstalleerd.)
Configuratiebestanden voor sysprof (3.46.0-4) worden gewist ...
dany@pindabook:~$ sudo apt autoremove
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
De volgende pakketten zullen VERWIJDERD worden:
dctrl-tools elfutils equivs lib32gcc-s1 lib32stdc++6 libadwaita-1-0 libasm1 libc6-i386 libc6-x32
libcairo-script-interpreter2 libcloudproviders0 libfile-slurper-perl libfile-which-perl libgtk-4-1 libgtk-4-bin
libgtk-4-common libperlio-utf8-strict-perl libsysprof-4 libsysprof-ui-5 libx32gcc-s1 libx32stdc++6
linux-image-6.1.0-18-amd64 popularity-contest
0 opgewaardeerd, 0 nieuw geïnstalleerd, 23 te verwijderen en 0 niet opgewaardeerd.
Na deze bewerking zal er 473 MB schijfruimte vrijkomen.
Wilt u doorgaan? [J/n]
(Database wordt ingelezen ... 187318 bestanden en mappen momenteel geïnstalleerd.)
dctrl-tools (2.24-3+b1) wordt verwijderd ...
elfutils (0.188-2.1) wordt verwijderd ...
equivs (2.3.1) wordt verwijderd ...
...
libperlio-utf8-strict-perl (0.010-1) wordt verwijderd ...
libsysprof-4:amd64 (3.46.0-4) wordt verwijderd ...
linux-image-6.1.0-18-amd64 (6.1.76-1) wordt verwijderd ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-6.1.0-18-amd64
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-6.1.0-21-amd64
Found initrd image: /boot/initrd.img-6.1.0-21-amd64
Found linux image: /boot/vmlinuz-6.1.0-20-amd64
Found initrd image: /boot/initrd.img-6.1.0-20-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
popularity-contest (1.76) wordt verwijderd ...
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 libglib2.0-0:amd64 (2.74.6-2+deb12u2) ...