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.
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. –
Danke. Ich benutzte ktime_get und den preempt_notifier-Mechanismus. –
Danke für das Teilen, ich wusste nicht über diesen preempt_notifier-Mechanismus. –