Beiträge von Wilkie

    Zitat von michi204


    tools wie renice arbeiten aber so viel ich weiß nur auf prozessebene, dh auch wenn man die einzelnen threads sieht, wird man IMO nichts ändern können.

    Unter 2.4 konnte man offenbar, aber wahrscheinlich war das nur ein Zufall. Die Threads gar nicht mehr sehen zu können ist allerdings auch ein Defekt auf Systemebene.

    Zitat von michi204


    aber könnte nicht die aufrufende applikation nach dem objc_thread_detach() die identifier irgendwie speichern oder ausgeben? bzw. ein interface anbieten, über das man dann die eigenschaften der threads ändern kann?

    Das ginge an sich schon, wäre aber mit einem nicht ganz harmlosen Aufwand verbunden weil ART auf eine cross platform Verwendbarkeit ausgelegt ist und daher das hier einzubauende thread management interface z.B. auch auf OS X funktionieren müßte. Und dort verwenden wir NSThreads, die wieder ganz anders angesprochen werden, d.h. es wäre noch eine Abstraktionsschicht nötig.

    Und angesichts dessen daß es ein ziemlicher Aufwand wäre es von ART aus "ordentlich" zu machen und wir mit dem Projekt derzeit noch wirklich andere Sorgen haben als so ein Detail glaub ich daß wir vorläufig einfach dabei bleiben daß man das nicht renicen kann... ;)

    Jedenfalls vielen Dank für Deine Antworten!

    LG

    Alexander ;)

    Das Programm um das es geht ist unsere am Insti selbstgeschriebene photorealistische Rendering-Software ART. Da man beim Bilder rechnen nie genug CPU-Leistung haben kann und wir ein paar Dual- und eine Quad-Maschine am Insti haben laufen die eigentlichen Bildberechnungen (raytracer, path tracer, photon tracer) mittlerweile soweit möglich alle multithreaded.

    Nachdem ART in Objective-C geschrieben ist spalten wir die Threads unter Linux mit Aufrufen von objc_thread_detach() (das soweit ich weiß intern pthreads verwendet) ab, und unter den 2.4er Kerneln haben die Threads bei dieser Methode alle eigene PIDs bekommen - was mich auch schon gewundert hat, aber nachdem es keine Auswirkungen auf die Funktionstüchtigkeit hatte hab ich mich nicht weiter darum gekümmert.

    Es funktioniert ja auch unter 2.6 alles so wie es soll, nur daß halt die Threads nicht mehr sichtbar sind. Was dann störend wird wenn man z.B. länger laufende Prozesse mit renice herunterstufen will um den Betrieb auf einer gemeinsam genutzen Maschine nicht zu behindern. Man kann das Problem umgehen indem man z.B. die lange dauernde Berechnung von Referenzbildern schon von vornherein mit niedrigem "nice" startet, aber auf Dauer ist das auch nix.

    Und nachdem das Erzeugen von unsichtbaren Threads generell ein eher sonderbares Verhalten ist daß sicher schon wem anderen auch aufgefallen ist hab ich mir gedacht daß ich mal hier nachfrage... :)

    LG

    Alexander

    Hallo!

    Ich hab ein Problem mit Threads unter dem 2.6er Kernel (SuSE 9.2, 9.3). Mit Google findet man zwar Infos von der LKML die besagen daß das Problem schon andere auch hatten, aber keine Lösungen; unter 2.4 hat es das Problem nicht gegeben.

    Konkret geht es darum daß mit pthread calls abgespaltene Prozesse für top(1) und ps(1) unsichtbar sind, obwohl sie sehr wohl laufen und die Systemlast auch richtig angezeigt wird. Unter

    http://kerneltrap.org/node/3930

    wird das Ganze genauer beschrieben; weiß jemand von euch mehr darüber bzw. wie man trotzdem an Infos über diese Prozesse kommt? Mir wäre schon geholfen wenn ich die PID dieser Threads herausbekäme.

    LG

    A.W.