Moin!
Bevor ich real Anfange da was zu basteln...
Um Performance Probleme in der DBox einzugrenzen sollte man einen Profiler verwenden um die eigentlich kritischen Abschnitte zu finden. (Behaupte ich mal...)
Grundsätzlich gibt es (äh, kenne ich) dafür zwei Möglichkeiten: Die eine habe ich schon zum Teil verwendet: Code instrumentieren.
Boshaft erklärt heißt es man baut (evtl. automatisch) in "verdächtigen" Code Mess-Punkte ein. für diese Messpunkte wird gespeichert wann sie durchlaufen wurden. So lässt sich zum Beispiel sehr leicht bestimmen ob eine Änderung an Code diesen schneller gemacht hat oder nicht.
Allerdings bremst dies das System üblicherweise aus, wenn man sehr viele solche Messpunkte vorsieht. Und man konzentriert sich evtl. auf Abschnitte, die gar nicht optimiert werden müssten. (Optimierung schadet nie stimmt nicht: Auch die Entwicklungszeit ist ja eine begrenzte Resource...)
Die Alternative funktioniert etwas anders: Dafür wird zu unregelmässigen Zeitpunkten geschaut, was das System gerade macht. Unregelmässig, damit man nicht zufällig genau in ein bestimmtes Raster eines Algorithmus fällt.
An diese Alternative habe ich mich erinnert als ich eben per Google angefangen habe nach Vorschlägen zum Profilen in Linux zu suchen, z.B. sysprof.
Ohne aber dort im Detail zu schauen: Ich stelle mir das so vor: In irgendwelchen Interrupts speichert man "ab und zu" den Callstack in einem Buffer ab. Das "ab und zu" ist einstellbar: "Oft" bedeutet genaue Messungen aber das System wird auch durch die vielen Messungen gebremst. "Selten" bedeutet das die Messungen ungenau sind, aber die Belastung auch geringer ist.
"Selten" kann aber auch durch "lange" Messzyklen ausgeglichen werden, in dem man den zu untersuchenden Teil oft ausführt.
Real muss dann noch eine User-Land Applikationen diesen Buffer irgendwo hinspeichern und dann geht die Auswertung los: Durch den Callstack findet man schnell die Routinen, die wirklich oft im System laufen, also z.B. während man auf die Festplatte aufnimmt.
So ein Profiler kann als Modul benutzt werden: Man lädt den dazu und los gehts. Und wenn man fertig ist, kann das Modul sogar wieder raus. Als Modul, weil man so den Kernel und auch fremde Applikationen untersuchen kann:
Denn das ist das coole daran: man kann für alle Applikationen und Libraries die Auslastungs/Nutzungs Info bekommen und kann so relativ leicht die "Übeltäter" finden, wo sich das Optimieren für die ganze Box lohnen wird.
Und nun konkret:
Hat da jemand Erfahrung und vielleicht sogar etwas für die DBox passendes schon zur Hand?
Ciao,
DboxBaer
PS:
"oprofile" sieht uf dem ersten Blick nicht schlecht aus?!
http://oprofile.sourceforge.net/about/
Profiler
-
- Developer
- Beiträge: 809
- Registriert: Montag 4. Juli 2005, 18:45
Hi,
ich benutze gprof. Du mußt noch einen Compiler-Switch setzen, compilieren, ausführen und dann mit gprof eine profile-Datei erstellen. Es gibt dann verschiedene Auswertungstools.
Wenn du meine VM http://forum.tuxbox-cvs.sourceforge.net ... 329#320329 verwendest:
gprof ist installiert
und unter Entwiklung->Kprof gibt es auch ein Frontend.
Gruß
yjogol
ich benutze gprof. Du mußt noch einen Compiler-Switch setzen, compilieren, ausführen und dann mit gprof eine profile-Datei erstellen. Es gibt dann verschiedene Auswertungstools.
Wenn du meine VM http://forum.tuxbox-cvs.sourceforge.net ... 329#320329 verwendest:
gprof ist installiert
und unter Entwiklung->Kprof gibt es auch ein Frontend.
Gruß
yjogol
-
- Senior Member
- Beiträge: 255
- Registriert: Donnerstag 25. August 2005, 11:34
Super, dann kann ich mir den Teil auch sparen. Wollte ich als "Verbesserung" vorschlagen, wenn sowas nicht dabei wäre :-)yjogol hat geschrieben:Hi,
ich benutze gprof. Du mußt noch einen Compiler-Switch setzen, compilieren, ausführen und dann mit gprof eine profile-Datei erstellen. Es gibt dann verschiedene Auswertungstools.
Wenn du meine VM http://forum.tuxbox-cvs.sourceforge.net ... 329#320329 verwendest:
gprof ist installiert
und unter Entwiklung->Kprof gibt es auch ein Frontend.
Gruß
yjogol
Allerdings kann man damit den Kernel nicht profilen, oder?
(Hoffnung das doch...)
Das "dringende" Problem ist ja rauszubekommen, woran es liegt, das Aufzeichnen auf die Platte in der Performance so zu verbessern das es bei jedem Problemlos funktioniert :-).
Und da wäre so ein "was macht das System überhaupt im Moment" Ansatz natürlich genau der richtige.
Ciao,
DboxBaer
... und der Rest ist dann Software (TM)