Beiträge von mcr76

    Hallo zusammen,

    hoffentlich kann mir jemand von euch helfen...
    Ich habe da ein Problem mit der Zeitmessung auf verschiedenen Linux und Unix-Systemen...

    Ersteinmal, was ich gerne haette:
    Ich arbeite an einem Programm was ich mittels pthreads parallelisieren moechte. Dafuer moechte ich so ein paar Zeiten messen.
    Einmal die Zeit, die das Programm insgesamt laeuft: kein Problem benutze ich die real-Zeit.
    Dann haette ich gerne die CPU aller threads gemessen: das habe ich noch nicht so ganz geschafft, da es da wohl von System zu System Unterschiede gibt... Aber das soll hier nicht das Problem sein...

    Mein Problem ist nun: Ich haette gerne die CPU-Zeit eines Threads gemessen. Das ging bis zum Kernel 2.4 mit: times()
    Ab Kernel 2.6 liefert times() die komplette CPU-Zeit des Prozesses. (ok... das hat es auch schon vorher getan, jedoch war da ein thread ein eigener Prozess)...
    Ich habe schon einiges versucht. Darunter war auch folgender Versuch:
    - mit clock_gettime(CLOCK_THREAD_CPUTIME_ID, ..) die Zeit messen...
    - die Zeit aus /proc/self/task/*ID*/stat auslesen
    - mit clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ..) die Zeit zu messen...

    Das Testprogramm hat 10 Threads auf einem 8 Prozessor-Server gestartet und die Threads ein wenig beschaefftigt. Dabei waren die Zeiten gemessen mit CLOCK_THREAD_CPUTIME_ID und CLOCK_PROCESS_CPUTIME_ID fast identisch und die Zeit aus /proc/... war teilweise um mehrere Sekunden geringer...

    Hier mal eine Zeile meines Testprogramms:
    thread: 6.470 ausgelesen aus /proc/...
    cpu: 10.220 gestartet mit CLOCK_PROCESS_...
    times: 72.420 gestartet mit times()
    thread2: 10.219 gestartet mit CLOCK_THREAD_...

    Kernel: 2.6.10

    Mein Hilfeersuchen nun an euch:
    1. Weiss jemand, wie ich unter Linux den Verbrauch an CPU-Zeit eines einzelnen Threads ermitteln kann...??? Das Auslesen der /proc/... steht da nicht zur Debatte.
    2. Weiss jemand wie das selbe Problem unter AIX 5.1 behandelt werden kann..???

    Danke fuer eure Hilfe

    Gruss
    Christian