реклама на сайте
подробности

 
 
> watchdog в Linux
Idle
сообщение Mar 24 2008, 18:54
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Стандартную связку driver(kernel timer) и userspace daemon написал, это просто.
В чем предвижу проблему: сетевые интерфейсы заштормят, живой userspace не отсигналит и идем на ребут. Нас в ребут, а мы крепчаем, да.
Вопросы:
1. Есть вообще какой-то смысл ограничивать watchdog только драйвером, никак не оглядываясь на userspace?
2. Можно вообще реализовать драйвер watchdog, чтобы он "ну уж точно успел дернуть biggrin.gif "?

PS Про NAPI в курсе; то что надо на досуге почитывать Лава и LDD, а не тереть с клоунами в оффтопике тоже smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vshemm
сообщение Mar 25 2008, 15:52
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Ядра 2.6.11+.
Обработка всех softirq (это нечто вроде DPC в WindowsNT) выполняется при разрешенных прерываниях. Инициируется выполнение softirq при выходе из обработчиков аппаратных прерываний (и еще из нескольких мест).
Поэтому, если процессор 100% времени не будет сидеть внутри обработчиков прерываний, он рано или поздно попадет в код "сброса" вотчдога. Как скоро - зависит от обработчиков и интенсивности прерываний.
Т.о., высокая интенсивнось прерываний действительно может привести с перезагрузке по вотчдогу, но система при этом действительно рабочей быть не может. Если требуется в таких случаях просто "переждать" (???), нужно увеличивать таймаут вотчдога (хардварный).
Есть другой случай, когда прерываний мало. Здесь нужно рассчитывать на тик системного таймера. Т.е. выполнение ядерного таймера может задержаться в наихудшем случае на ~1 тик системного таймера от рассчитаного значения (в новых tickless-ядрах немного по-другому smile.gif).
Кстати, период таймера обычно делают где-то в 2 раза меньше периода вотчдога - именно по этой причине, чтобы был запас.

С некоторыми оговорками это справедливо и для старших версий ядер 2.4.

Цитата(Idle @ Mar 25 2008, 16:02) *
Допустим, что fast обработчик только у таймера, другие обработчики не отключают чужие прерывания.

А у Вас вотчдог умеет генерить прерывания?
Go to the top of the page
 
+Quote Post
Idle
сообщение Mar 25 2008, 18:15
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(vshemm @ Mar 25 2008, 18:52) *
А у Вас вотчдог умеет генерить прерывания?

нет, это я на всякий случай

Спасибо за информацию. Ага, значит вызов моей функции вызывается в процессе обработки BH прерывания таймера. BH "накручены" на softirq.
Код
/* timer.c */
void timer_bh(void)
{
        TRACE_EVENT(TRACE_EV_KERNEL_TIMER, NULL);
        update_times();
        run_timer_list();
}

При этом прерывания разрешены. Таким образом, 100Мбит Ethernet заребутит за милую душу.

Выводы такие (я прав?):
1. NAPI драйвер для сетевых устройств.
2. Определенное нахождения в обработчике для всех остальных также.
3. Сумма всех этих времен в худшем случае не должна превышать мой интервал.

Цитата(vshemm @ Mar 25 2008, 18:52) *
система при этом действительно рабочей быть не может

Оборудование сетевое, так что режим "штатный" smile.gif

Ну в общем, watchdog скорее всего - в топку, дел и так выше крыши.

Спасибо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 04:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016