¿Qué es una resolución de jiffie en el kernel de Linux?
Según la fuente del temporizador actual ( cat /sys/devices/system/clocksource/clocksource0/current_clocksource
), Linux usa TSC y tiene una resolución de nanosegundos.
de acuerdo ahttp://lxr.free-electrons.com/source/include/linux/jiffies.hjiffie no es más pequeño que 1us, pero puede ser más grande.
¿Hay alguna manera de determinar su resolución actual?
Respuesta1
Si echas un vistazo a la página de manual.man 7 time
El valor de HZ varía según las versiones del kernel y las plataformas de hardware. En i386 la situación es la siguiente: en kernels hasta 2.4.x inclusive, HZ era 100, dando un valor santiamén de 0,01 segundos; A partir de 2.6.0, HZ se elevó a 1000, lo que da un santiamén de 0,001 segundos. Desde el kernel 2.6.13, el valor HZ es un parámetro de configuración del kernel y puede ser 100, 250 (el valor predeterminado) o 1000, lo que produce un valor en santiamén de, respectivamente, 0,01, 0,004 o 0,001 segundos. Desde el kernel 2.6.20, hay disponible una frecuencia adicional: 300, un número que se divide equitativamente para las velocidades de fotogramas de vídeo comunes (PAL, 25 HZ; NTSC, 30 HZ).
La llamada al sistema times(2) es un caso especial. Informa tiempos con una granularidad definida por la constante del kernel USER_HZ. Las aplicaciones de espacio de usuario pueden determinar el valor de esta constante
usando sysconf(_SC_CLK_TCK).
Puedes consultar la CLK_TCK
constante:
$ getconf CLK_TCK
100
Esto le indica el valor de HZ, es decir, 100. Este valor es el número de jiffis en un segundo.
Referencias
Respuesta2
Según estas fuentes, la resolución dejiffieses 1/HZ
(cualquier valor HZ
que tenga):
- Mapa del kernel de Linux en PDF imprimible por 4$ o 3€
- Sistemas de temporizador de kernel
- ticks del kernel, jiffies y temporizadores de alta resolución...
Se define en uno de los archivos de encabezado dependientes del kernel, por ejemplo,
/usr/include/asm-generic/param.h
que se incluye desde
/usr/include/linux/param.h
y finalmente desde <sys/param.h>
, que puede estar en un directorio específico de la arquitectura, por ejemplo,
/usr/include/x86_64-linux-gnu/sys/param.h
Las fuentes dejan claro que es una constante en tiempo de compilación y depende de su sistema particular.