[erledigt] GetTimeOfDay() Zeitintervall bei 1ns durch hrtimer moeglich?

Hinweis: In dem Thema [erledigt] GetTimeOfDay() Zeitintervall bei 1ns durch hrtimer moeglich? gibt es 2 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo zusammen,
    ich bin auf der Suche nach geeigneten Zeitmessungen unter Linux. Meine Frage bezieht sich auf die minimalen Zeitintervalle der CPU. Im Kernel 2.6.31 betraegt die 'cpu clock resolution' 1nsec durch das hrtimer framework (siehe >cat /proc/timer_list).


    Kann ich nun davon ausgehen, das bei Funktionen wie GetTimeOfDay() nun auch eine Aufloesung von 1nsec moeglich ist? Laut manpage haengt die Aufloesung von der 'system clock' ab. Ich meine sind die gemessenen Microsekunden (GetTimeOfDay) als exakte Messung hinzunehmen?


    Note: Ich dachte bei Linux distributionen mit kernel < 2.6.18 war das bei einem I386 4 Millisekunden.


    Besten Dank
    LeCrow

    Einmal editiert, zuletzt von LeCrow ()

    Für den Inhalt des Beitrages 21139 haftet ausdrücklich der jeweilige Autor: LeCrow

  • Also nach dem, was ich herausgefunden habe, ist mit clock_gettime() eine Auflösung im Nanosekundenbereich gegeben. Du solltest auch lieber diese Funktion anstelle von GetTimeOfDay() benutzen, da diese laut POSIX.1-2008 als veraltet eingestuft wird
    Beleg:


    Zitat von Manpage gettimeofday

    POSIX.1-2008 marks gettimeofday() as obsolete, recomending the use of clock_gettime(2)


    Und wenn diese Funktion schon auf Nanosekunden genau messen kann, kannst du davon ausgehen, dass auch gettimeofday() auf Mikrosekunden genau miss. Sollte die Auflösung wirklich nur 4 Millisekunden betragen, wäre die einzige Möglichkeit, wirklich konsistente Angaben zu bekommen (also ohne, dass an einigen Stellen Ziffern ausgelassen werden) einfach zu runden.

    Bitte nicht das </iframe> beachten, da macht Opera irgendwie Mist.
    Yeah, ich krieg eine openSuSE-Laptopfolie :thumbup:</iframe>

    3 Mal editiert, zuletzt von Schmitzi ()

    Für den Inhalt des Beitrages 21204 haftet ausdrücklich der jeweilige Autor: Schmitzi

  • Schmitzi: Das gettimeofday() obsolete ist habe ich uebersehen.


    So wie ich das aus dieser Manpage ('clock_getres()' - POSIX Programmer's Manual) verstehe, scheint der Zeitstempel bei 'clock_gettime()' und 'clock_settime()' immer ein vielfaches von 'clock_getres()' zu sein.


    Da bei mir bei 'clock_getres()' 1nsec herauskommt, hoffe ich mal das das dann auch so hinhaut.


    Nur zur Info wofuer ich das benoetige:
    Es scheint, das bei mir der Aufruf von clock_gettime() ca. 1 Mikrosekunde benoetigt (Gemittelt aus 1.000.000 aufrufen)
    Unter CUDA kann eine Zeitmessung(Events/Zeitstempel) mit einer Aufloesung von 0.5 Mikrosekunden erfolgen.
    Somit ist ein Vergleich hier in Mikrosekunden moeglich.


    Besten Dank Schmitzi fuer den Tip.
    LeCrow

    Für den Inhalt des Beitrages 21306 haftet ausdrücklich der jeweilige Autor: LeCrow