The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование аппаратного "watchdog" во FreeBSD
Некоторые материнские платы снабжены специальным устройством, делающим жесткую перезагрузку, 
если ОС не "дернула" вовремя это устройство. Называется оно "hardware watchdog timer". 
Таким образом, автоматическая и неминуемая перезагрузка гарантируется при "зависании" ОС.

В частности, watchdog timer имеется на многих материнских платах Intel, 
причем не только на серверных. Соответствующий драйвер FreeBSD называется ichwd. 
Итак, если у нас материнка Intel, попробуем сделать так:

   kldload ichwd

В сообщениях ядра (их можно посмотреть командой dmesg) при этом увидим что-то вроде:

   ichwd0: <Intel ICH9R watchdog timer> on isa0
   ichwd0: Intel ICH9R watchdog timer (ICH9 or equivalent)

Теперь ясно, что у нас действительно есть такой таймер. Действуем дальше.

Для автоматической загрузки драйвера добавляем в /boot/loader.conf:

   ichwd_load="YES"

Для запуска демона, "дергающего" watchdog, добавляем в /etc/rc.conf:

   watchdogd_enable="YES"

Этот демон будет периодически "дергать" таймер, сообщая ему, что система все еще жива. 
Будьте осторожны с этим демоном! Если убить его как обычно (т.е. 15-м сигналом), 
он аккуратно снимет таймер с "боевого дежурства". Но если убить его 9-м сигналом, 
то таймер перестанет получать наши сигналы, и решит, что система зависла. Произойдет перезагрузка.

Иногда watchdog надо включить в BIOS. На некоторых платах watchdog есть, но
воспользоваться им невозможно.
Иногда при инициализации драйвера появляется ругань на параллельный порт, но ее можно игнорировать.

Проверено на FreeBSD 7.1-BETA2.
 
22.12.2008 , Автор: Дмитрий Иванов
Ключи: freebsd, watchdog, hardware, crash / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Поддержка аппаратного обеспечения

Обсуждение [ RSS ]
  • 1.1, Samm (??), 18:51, 22/12/2008 [ответить]  
  • +/
    У меня был случай когда ватчдог ресетил сильно перенагруженный тазик, так что совет следует принимать с осторожностью. Решил проблему отрубанием оного, благо и так не висло.
     
     
  • 2.2, const86 (ok), 21:09, 22/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня был случай когда ватчдог ресетил сильно перенагруженный тазик

    Не знаю как в фрибсд, но линуксовый демон (а он не один и тот же?) ставит себе планировщик FIFO, так что никто ему не мешает дёргать девайс.

     
     
  • 3.6, Samm (??), 13:04, 24/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Какой еще "планировщик FIFO"? В многозадачный ОС ядро определяет кто получает процессорное время, а кто нет. Можно играться с приоритетами или выбирать тип системного планировщика, но все равно не в риалтайм ос никто не может гарантировать процессу нужное ему количество времени.
     
     
  • 4.7, dimss (?), 15:26, 24/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    В Linux действительно не гарантируется выделение нужного процессорного времени. Но зато гарантируется, что RT-процесс всегда получит время в ущерб не-RT процессам. Приоритетнее его может быть само ядро (обработка прерываний). Или другой RT-процесс. Так что установка RT-приоритета и блокировка страниц в RAM дадут требуемый результат.


     
  • 4.8, const86 (ok), 03:54, 25/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Какой еще "планировщик FIFO"?

    Да, прогнал... RR он использует :)

     

  • 1.3, Аноним (-), 02:09, 23/12/2008 [ответить]  
  • +/
    программный watchdog можно врубить с помощью
        options SW_WATCHDOG
     
  • 1.4, Аноним (-), 02:17, 23/12/2008 [ответить]  
  • +/
    еще можно задействовать один из процессоров на SMP машине, если собрать ядро с
        options MP_WATCHDOG
    и указать номер процессорного ядра через debug.watchdog

    Но сие не работает с SCHED_ULE, только с SCHED_4BSD.

     
     
  • 2.5, Аноним (-), 02:18, 23/12/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >еще можно задействовать

    fix: задействовать как аппаратный watchdog

     

  • 1.9, PROFIT (?), 12:58, 11/02/2013 [ответить]  
  • +/
    # Winbond Watchdog driver
    wbwd_load="YES"

    $ dmesg
    wbwd0: <Winbond 83627DHG IC ver. 5> at port 0x2e-0x2f on isa0

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру