Изменить таймер ядра linux

Я должен запустить приложение, чувствительное к задержке, и меня попросили изменить разрешение таймера на 1000 Гц или более. Я немного поискал в сети и нашел страницы о CONFIG_HZ и т. д.

однако в файле есть несколько других связанных настроек, поэтому я хочу быть уверен, что я не испорчу настройки. Я размещаю некоторые выходные данные здесь

$cat /boot/config-2.6.28-11-generic | grep HZ
# CONFIG_HZ_1000 is not set
# CONFIG_HZ_300 is not set
CONFIG_MACHZ_WDT=m
CONFIG_NO_HZ=y
CONFIG_HZ=250
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y

Так делает вторая строка, "# CONFIG_HZ_1000 не установлен", означает, что 1000Hz не поддерживается? Должен ли я изменить только CONFIG_HZ, а не CONFIG_HZ-250?

PS: я использую ядро 2.6 (Ubuntu jaunty) на процессоре Geode.

EDIT1: я запустил код из http://www.advenage.com/topics/linux-timer-interrupt-frequency.php на моей настольной машине и машине разработки. Код предположительно является точной мерой того, как быстро таймер система может поддерживать. Выход был приблизительно 183 Гц (на машине разработки). Так будет изменение таймера будет иметь смысл?

2 ответов


не редактировать .config напрямую, если вы не эксперт Kbuild (и если вы спрашиваете об этом, вы не эксперт Kbuild). Вместо этого run make menuconfig или make xconfig для загрузки системы конфигурации на основе меню. Поочередно,make config будет делать процесс конфигурации на основе линии (где он задает вам несколько сотен вопросов о том, что настроить - не рекомендуется). Соответствующая опция находится в разделе" Тип процессора и функции "как"частота таймера".

тем не менее, это может быть не нужно. Современный Linux может использовать таймеры событий с высоким разрешением (CONFIG_HIGH_RES_TIMERS) для достижения таймеров с низкой задержкой даже без увеличения частоты таймера. С системой tickless (CONFIG_NO_HZ), частота таймера имеет небольшое влияние на всех.

С другой стороны, я не уверен, какой таймер поддерживает процессоры Geode. Возможно, вы захотите запустить cyclictest С различными конфигурациями ядра, чтобы увидеть, что вам нужно, чтобы получить низкую производительность задержки. Тест, который вы провели, проверяет максимальную частоту отправки, а не задержка отправки, поэтому сравнение с результатами cyclictest было бы интересно. Если вам нужно действительно малой задержкой CONFIG_PREEMPT_RT patchset также может представлять интерес.


чтобы изменить настройку таймера, необходимо перекомпилировать ядро. Измените параметр в каком-либо стандартном средстве настройки меню, а не в текстовом файле.

/boot/config... файлы только говорят вам, что установлено в конкретном двоичном файле ядра. Это не файл конфигурации, который можно изменить.