|
WatchDog таймер предназначен для борьбы с остановкой “зависшего” компьютера. Как правило компьютер почти никогда не
“зависает”. Но если он “завис” и “остановился”, то обычно на месте или никого нет, чтобы нажать кнопку “сброс”, или никто
не знает где именно находится “зависший” компьютер, поскольку обычно с ним нет проблемы. Именно для этих целей и служит
WatchDog таймер – автоматически перезапустить “зависший” компьютер. При включении контроллера WatchDog таймер выключен
и для того чтобы его включить требуется по последовательной линии послать команду "Esc[WW" с требуемым значением счетчика
таймаута W (число тиков от 0 до 255, каждый тик равен 0,3 сек). Для того, чтобы выключить таймер, требуется установить
таймаут=0 - "Esc[W0". Управлением загрузкой счетчика и контролем его содержимого занимается специальная программа-драйвер.
Для непрерывной работы компьютера программа-драйвер должна периодически устанавливать таймаут для избежания “гонга” и
последующего замыкания контактов “сброс”. Если компьютер “залип”, то программа-драйвер перестает посылать “свежие” команды
установки таймаута и WatchDog таймер “ударит в гонг” - замыкание контактов “сброс”. WatchDog таймер реализован так, что
он “ударяет” только один раз. Это позволяет избежать повторяющихся “ударов” во время проверки файловой системы, которая
вероятней всего следует после сброса (или при первом включении контроллера/компьютера). После того как компьютер снова
“поднимается”, программа-драйвер должна себя повторно разрешить (послать команду Esc[WW с требуемым значением таймаута).
WatchDog таймер гарантирует, что система всегда способна выполнять программы. Он не гарантирует, что приложение все еще
выполняется и отзывается. Для того, чтобы проверить эти две вещи можно использовать crontab entry для Linux/UNIX или
другие программы. Можно быть уверенным в исполнении главной программы, до тех пор пока работает crontab, поскольку
WatchDog таймер обеспечивает это. Например, можно создать скрипт, который автоматически запускается с помощью cronjob
и загружает веб-страничку с некоторого вебсервера каждые 50 секунд, но нужно понимать, что вебсервер может быть полностью
загружен множеством запросов и поэтому это нормально, что не может ответить скрипту.
В нашем примере мы создали скрипт watchdog.cgi для интерактивного изучения возможностей WatchDog таймера.
Пример реализован на языке Perl. Работа скриптов проверялась в ОС SuSE Linux, но они также должны заработать
в любой другой Unix подобной операционной системе. Функции интерфейса с контроллером, вынесены в отдельный
модуль TeleServ.pm. Необходимо переписать этот файл в какой-нибудь каталог, и соответственно определить
переменную окружения PERLLIB. Проще всего - это добавить в файл /etc/profile строчку:
PERLLIB=”название вашего каталога”
export PERLLIB
Можно указать каталог поиска модулей непосредственно в самом скрипте, добавив в его начало директиву:
use libs “название вашего каталога”
Такой путь предпочтительнее так как скрипт запускается в окружение web-сервера Apache в виде CGI программы.
Для этого на удаленный хост с подключенным контроллером
инсталируется и запускается web-сервер и скрипт watchdog.cgi - обеспечивающий такой сервис. Этот скрипт проверялся
с установленным на контролируемый (удаленный) хост web сервер Apache. В настройках Apachе должно быть разрешено
исполнение CGI программ (за подробностями обратитесь к документации к web серверу). Скрипт watchdog.cgi нужно
скопировать в каталог, где находятся CGI программы контролируемого хоста. Для проверки, можно запустить web
браузер и набрать в адресной строке локальный URL скрипта, например:
http://127.0.0.1/cgi-bin/watchdog
на экране появиться страница со следующей таблицей:
|
В поле Refresh time укажите время автоматического обновления информации на экране браузера. Комфортное время 2-3 секунды.
В поле WatchDog timeout укажите начальное значение счетчика (например 50 секунд).
В поле Update time укажите время обновления начального значения счетчика (например 30 секунд).
Клик на кнопку start запускает страницу на непрерывное обновление (с периодом указанным в Refresh time), “взводит” счетчик таймера
в начальное значение и позволяет наблюдать, как периодически значение счетчика уменьшается, а затем снова устанавливается в начальное
значение. Желательно не подключать коннектор J13 контроллера к коннектору “сброс” на материнской плате, когда подбираются различные
начальные значения счетчика и время обновления. Иначе всякий раз, когда значение счетчика будет обнуляться, компьютер будет идти на
перезагрузку.
Если хост подключен к сети, то в адресной строке вашего браузера необходимо ввести URL скрипта и наблюдать такую же картинку, но
уже находясь на расстоянии от контролируемого хоста.
|