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
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

CPU-timer in threads...

  • mcr76
  • 9. Februar 2005 um 18:45
  • Unerledigt
  • mcr76
    1
    mcr76
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 9. Februar 2005 um 18:45
    • #1

    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

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung