Was ist eine Jiffie-Auflösung im Linux-Kernel?
Laut der aktuellen Timerquelle ( cat /sys/devices/system/clocksource/clocksource0/current_clocksource
) verwendet Linux TSC und hat eine Auflösung im Nanosekundenbereich
entsprechendhttp://lxr.free-electrons.com/source/include/linux/jiffies.hJiffie ist nicht kleiner als 1 us, kann aber größer sein.
Gibt es eine Möglichkeit, die aktuelle Auflösung zu bestimmen?
Antwort1
Wenn Sie einen Blick auf die Manpage werfenman 7 time
Der HZ-Wert variiert je nach Kernelversion und Hardwareplattform. Auf i386 ist die Situation wie folgt: Auf Kerneln bis einschließlich 2.4.x war HZ 100, was einen Jiffy-Wert von 0,01 Sekunden ergab; ab 2.6.0 wurde HZ auf 1000 erhöht, was einen Jiffy-Wert von 0,001 Sekunden ergab. Seit Kernel 2.6.13 ist der HZ-Wert ein Kernelkonfigurationsparameter und kann 100, 250 (Standard) oder 1000 betragen, was einen Jiffy-Wert von 0,01, 0,004 bzw. 0,001 Sekunden ergibt. Seit Kernel 2.6.20 ist eine weitere Frequenz verfügbar: 300, eine Zahl, die sich für die gängigen Videobildraten (PAL, 25 HZ; NTSC, 30 HZ) gleichmäßig teilen lässt.
Der Systemaufruf times(2) ist ein Sonderfall. Er meldet Zeiten mit einer durch die Kernelkonstante USER_HZ definierten Granularität. Anwendungen im Benutzerbereich können den Wert dieser Konstante
mit sysconf(_SC_CLK_TCK) ermitteln.
Sie können die CLK_TCK
Konstante abfragen:
$ getconf CLK_TCK
100
Dies gibt Ihnen den HZ-Wert an, also 100. Dieser Wert ist die Anzahl der Augenblicke in einer Sekunde.
Verweise
Antwort2
Diesen Quellen zufolge ist die Resolution fürAugenblickeist 1/HZ
(welcher Wert HZ
auch immer):
- Linux-Kernel-Karte im druckbaren PDF für 4 $ oder 3 €
- Kernel-Timer-Systeme
- Kernel-Ticks, Jiffies und hochauflösende Timer ...
Es ist in einer der kernelabhängigen Headerdateien definiert, z. B.
/usr/include/asm-generic/param.h
welches enthalten ist von
/usr/include/linux/param.h
und schließlich von <sys/param.h>
, das sich in einem architekturspezifischen Verzeichnis befinden kann, z. B.
/usr/include/x86_64-linux-gnu/sys/param.h
Aus den Quellen geht hervor, dass es sich um eine Konstante zur Kompilierungszeit handelt und diese von Ihrem jeweiligen System abhängt.