Na dann nochmal mit Bildern.
Setup musst du umstellen.
Wie CPU Load von einzelnen Plugins ermitteln?
-
-
Ich hatte doch geschrieben, dass ich diese Einstellung verwendet hatte!
-
Nützt ja auch alles nichts, wenn nicht alle threads keinen eindeutigen namen haben und nur vdr erscheint. Könnte man den vdr nicht dahingehend patchen, dass er noch den pluginnamen mit in die threadbeschreibung schreibt? Zumindest müsste man dann nicht alle plugins anfassen.
-
Nein, das geht nicht. Das cThread-Objekt hat keine Ahnung, wer es erstellt hat.
Lars
-
Nein, das geht nicht. Das cThread-Objekt hat keine Ahnung, wer es erstellt hat.
LarsKlar geht das.
Zumindest in alten Makefiles wurde dem compiler '-DPLUGIN_NAME_I18N' mitgegeben, diese Variable könnte man problemlos nutzen, ggf mitCode
Alles anzeigenpublic: #ifndef PLUGIN_NAME_I18N cThread(const char *Description = NULL, bool LowPriority = false, const char *owner = "vdr-core"); #else cThread(const char *Description = NULL, bool LowPriority = false, const char *owner = PLUGIN_NAME_I18N); #endif ///< Creates a new thread. ///< If Description is present, a log file entry will be made when ///< the thread starts and stops. The Start() function must be called ///< to actually start the thread. ///< LowPriority can be set to true to make this thread run at a lower ///< priority. virtual ~cThread();
-
Oder den Namen/Beschreibung obligatorisch machen.
-
Du meinst einmal cThread von VDR anfassen und dann alle plugins ohne Änderungen an deren Sourcen neu compilieren.
-
Ich hatte doch geschrieben, dass ich diese Einstellung verwendet hatte!
Ohne Show custom thread names sieht es bei mir wie auf deinem Bild aus. Also gehe ich noch immer noch davon aus, dass du was anderes machst.Nützt ja auch alles nichts, wenn nicht alle threads keinen eindeutigen namen haben und nur vdr erscheint.
Zumindest kann man schon mal die Hälfte ausschließen.Ansonsten könnte 3po mal gdb starten dann attach 4157 und dann backtrace. Da sollte dann eigentlich der Plugin-Name zu sehen sein. Bei meinem Beispiel sah das dann so aus:
Code(gdb) backtrace #0 0x00007faed35f4c5e in FileNotifier::Action() () from /usr/lib/vdr/plugins/libvdr-restfulapi.so.2.0.6 #1 0x000000000050d92d in cThread::StartThread (Thread=0x7faed385da10) at thread.c:262 #2 0x00007faee3f3de9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #3 0x00007faee297573d in clone () from /lib/x86_64-linux-gnu/libc.so.6 #4 0x0000000000000000 in ?? ()
Den kompletten VDR-Aufruf gibt es mit ps -ef |grep vdr zu sehen.
Die Plugin-Entwickler müssten wohl beim Erzeugen des cThread oder vielleicht auch später eine Description setzen.
CodecThread(const char *Description = NULL, bool LowPriority = false); ///< Creates a new thread. ///< If Description is present, a log file entry will be made when ///< the thread starts and stops. The Start() function must be called ///< to actually start the thread. ///< LowPriority can be set to true to make this thread run at a lower ///< priority. virtual ~cThread(); void SetDescription(const char *Description, ...) __attribute__ ((format (printf, 2, 3)));
Aber da ist Lars sicher schlauer.Tschüß Frank
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!