Profiling von Programmen

Direkte Linux-Programmierung, POSIX
Antworten
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Profiling von Programmen

Beitrag von fat-lobyte » Mi Jul 25, 2012 7:10 pm

Hallo!
Hier mal eine etwas härtere Nuss für mich. Die Vorgeschichte: Ich habe eine ATI Grafikkarte, und habe den proprietären Treiber installiert. Das System läuft auch etwas flüssiger, und die Hardwarebeschleunigung von VLC funktioniert.

Allerdings habe ich einen neuen Kandidaten, der die CPU Verbraucht: gnome-shell.
Der Verbrauch geht dabei selten unter 30%. Das ist zu viel.
Mit der Fallback-shell (metacity) oder mit dem Open-Source-Grafiktreiber ist der Verbrauch nicht so hoch.

Ich würde der Sache gerne auf den Grund gehen, und mir Ansehen, welche Codestücke dafür verantwortlich sind. Dann würde ich gerne in der Umgebung nach Optionen, oder einfach Fixes suchen, um die Sache zu beschleunigen. Sollte es so etwas nicht geben, würde ich gerne zumindest den Entwicklern helfen können.


Jetzt die Frage:
Welche profiling-Tools gibt es für Linux? Muss ich dafür die Software neu kompilieren? Welche Flags muss ich dann setzen?
Hat das jemand schon mal gemacht? Hat jemand Tips für mich?

mfg, fat-lobyte
Haters gonna hate, potatoes gonna potate.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Profiling von Programmen

Beitrag von nufan » Mi Jul 25, 2012 7:32 pm

fat-lobyte hat geschrieben:Jetzt die Frage:
Welche profiling-Tools gibt es für Linux? Muss ich dafür die Software neu kompilieren? Welche Flags muss ich dann setzen?
Hat das jemand schon mal gemacht? Hat jemand Tips für mich?
Ich habe bis jetzt nur gprof verwendet. Man bekommt nach dem Ausführen des Programms eine schöne Übersicht über die Funktionen. Dabei wird angegeben, wie oft jede Funktion aufgerufen wurde, wie viel Speicher sie braucht, wie viel Zeit ein Aufruf verbraucht und wie viel Zeit sie insgesamt verbraucht (absolut und relativ zur gesamten Laufzeit des Programms). Das Programm musst du dazu neu kompilieren, beim gcc/g++ reicht soweit ich weiß:

Code: Alles auswählen

g++ -o test main.cpp -g -pg
Der Ablauf sieht so aus:
* Programm kompilieren (mit den genannten Flags)
* Programm normal ausführen
* Ergebnisse mit gprof analysieren
Eine etwas ausführlichere Anleitung findest du hier:
http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

Vor kurzem bin ich noch auf folgenden Artikel gestoßen, hab ich aber nicht selbst ausprobiert:
http://www.phoronix.com/scan.php?page=n ... px=MTE0NDE
(Phoronix kann ich dir übrigens als News-Seite im Unix-Bereich nur empfehlen)
Das interessante daran ist wahrscheinlich folgender Satz:
Phoronix hat geschrieben:Sysprof traces user-space and kernel-space calls, doesn't require the rebuilding of any software, supports saving/loading profiles, provides a straightforward user-interface, and does have command-line options.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Profiling von Programmen

Beitrag von fat-lobyte » Mi Jul 25, 2012 7:52 pm

dani93 hat geschrieben:Ich habe bis jetzt nur gprof verwendet. ...
Eine etwas ausführlichere Anleitung findest du hier:
http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html
Danke, ich werde mir das mal ansehen.
Vor kurzem bin ich noch auf folgenden Artikel gestoßen, hab ich aber nicht selbst ausprobiert:
http://www.phoronix.com/scan.php?page=n ... px=MTE0NDE
(Phoronix kann ich dir übrigens als News-Seite im Unix-Bereich nur empfehlen)
Phoronix kenne ich schon, den Artikel allerdings noch nicht.
Das interessante daran ist wahrscheinlich folgender Satz:
Phoronix hat geschrieben:Sysprof traces user-space and kernel-space calls, doesn't require the rebuilding of any software, supports saving/loading profiles, provides a straightforward user-interface, and does have command-line options.
Danke, das ist tatsächlich sehr interessant. Mal sehen was ich so finde.
Haters gonna hate, potatoes gonna potate.

Antworten