1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. mcr76

Beiträge von mcr76

  • CPU-timer in threads...

    • mcr76
    • 9. Februar 2005 um 18:45

    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

Rechtliches

Impressum

Datenschutzerklärung