Каково разрешение jiffie в ядре Linux?
Согласно текущему источнику таймера ( cat /sys/devices/system/clocksource/clocksource0/current_clocksource
), Linux использует TSC и имеет наносекундное разрешение
в соответствии сhttp://lxr.free-electrons.com/source/include/linux/jiffies.hДжиффи не меньше 1 мкс, но может быть больше.
Есть ли способ определить его текущее разрешение?
решение1
Если вы посмотрите на страницу руководстваman 7 time
Значение HZ различается в зависимости от версии ядра и аппаратной платформы. На i386 ситуация выглядит следующим образом: на ядрах до 2.4.x включительно значение HZ было равно 100, что давало значение jiffy в 0,01 секунды; начиная с 2.6.0 значение HZ было увеличено до 1000, что давало значение jiffy в 0,001 секунды. Начиная с ядра 2.6.13 значение HZ является параметром конфигурации ядра и может быть равно 100, 250 (по умолчанию) или 1000, что дает значение jiffies соответственно 0,01, 0,004 или 0,001 секунды. Начиная с ядра 2.6.20 доступна дополнительная частота: 300, число, которое делится нацело для обычных частот видеокадров (PAL, 25 Гц; NTSC, 30 Гц).
Системный вызов times(2) представляет собой особый случай. Он сообщает время с гранулярностью, определяемой константой ядра USER_HZ. Приложения пользовательского пространства могут определить значение этой константы
с помощью sysconf(_SC_CLK_TCK).
Вы можете запросить CLK_TCK
константу:
$ getconf CLK_TCK
100
Это сообщает вам значение HZ, т.е. 100. Это значение представляет собой количество мигов в секунду.
Рекомендации
решение2
Согласно этим источникам, резолюция длямигиесть 1/HZ
(какое бы значение HZ
оно ни имело):
- Карта ядра Linux в формате PDF для печати за 4 доллара или 3 евро
- Системы таймеров ядра
- Такты ядра, мизерные интервалы и таймеры высокого разрешения...
Он определяется в одном из заголовочных файлов, зависящих от ядра, например,
/usr/include/asm-generic/param.h
который включен из
/usr/include/linux/param.h
и в конечном итоге из <sys/param.h>
, который может находиться в каталоге, специфичном для архитектуры, например,
/usr/include/x86_64-linux-gnu/sys/param.h
Исходные тексты ясно дают понять, что это константа времени компиляции, зависящая от вашей конкретной системы.