Поддержка таймера высокого разрешения в 64-битном Linux - PullRequest
2 голосов
/ 23 декабря 2011

Я пытаюсь включить поддержку таймера высокого разрешения в 2.6.39.1 64-битной Linux. Для этого я сначала устанавливаю CONFIG_HIGH_RES_TIMERS=y в .config.

Кроме того, вывод grep HZ .config составляет:

# CONFIG_RCU_FAST_NO_HZ is not set
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_MACHZ_WDT=m

Однако, вывод следующей команды не 1 nsec, как ожидалось после перекомпиляции ядра.

cat /proc/timer_list |grep resolution отпечатки: .resolution: 999848 nsecs

Также cat /proc/timer_list |grep handler выводит:

event_handler: tick_handle_periodic вместо event_handler: hrtimer_interrupt

Когда я проводил эксперименты, используя hrtimer, я явно не видел наносекундную точность в результатах.

Я также попытался запустить упомянутую здесь программу на C , которая должна помочь определить частоту прерываний таймера ядра Linux. Результат запуска C программы выглядит следующим образом:

kernel timer interrupt frequency is approx. 766 Hz

Я работаю над Dell Poweredge T710 , который, как мне кажется, имеет аппаратную поддержку таймеров высокого разрешения (?)

Я что-то пропустил? Где я ошибся?

Спасибо!

1 Ответ

2 голосов
/ 27 августа 2012

У меня была такая же проблема. Оказалось, что я случайно всегда загружался в режиме "failsafe", который устанавливал довольно много параметров ядра. Один из них был "highres=off".

Может быть полезно проверить /proc/cmdline просто чтобы быть уверенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...