CPU-timer in threads...

Post Reply
Message
Author
mcr76
Posts: 1
Joined: 14. Feb 2005 12:34

CPU-timer in threads...

#1 Post by 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 threadein 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

Post Reply