2014-01-06 4 views
5

Gibt es eine monotone Clock-Quelle für ein Kernel-Modul, die an einen Thread angehängt werden kann und die nur zunimmt, wenn der zugehörige Thread läuft?Thread-spezifische monotone Clock-Quelle im Kernel

Ich bin auf der Suche nach etwas, das wie die perf API funktioniert, außer die gesamte Menge der bisher verbrauchten CPU-Zeit in Nanosekunden statt Messzyklen oder Anweisungen zu messen.

Im Benutzerbereich haben Sie die clock_gettime Funktion von librt, wo Sie die CLOCK_PROCESS_CPUTIME_ID als der Typ der Uhr angeben können, um das oben beschriebene Verhalten zu erhalten. Mit Blick auf die source code of clock_gettime ruft diese Funktion eine andere Funktion aus der pthread-Bibliothek namens __pthread_clock_gettime.

Ich bin auf der Suche nach etwas Ähnliches, das innerhalb des Linux-Kernels von einem Kernel-Modul eingerichtet und an eine Aufgabe angeschlossen werden kann, gegeben einen Zeiger auf die task_struct mit der Aufgabe verbunden.

+0

Ich weiß nicht, von einer solchen Untersystem im Linux-Kernel. Ich glaube, dass Sie Ihre eigene Version mit einem bestimmten Timer (für Ihre Architektur) implementieren müssen, möglicherweise kprobes, um die Kontextwechselfunktion zu instrumentieren. –

+0

Danke. Ich benutzte ktime_get und den preempt_notifier-Mechanismus. –

+0

Danke für das Teilen, ich wusste nicht über diesen preempt_notifier-Mechanismus. –

Antwort