Для мониторинга аппаратных проблем в 64-разрядных сборках Linux удобно использовать пакет mcelog,
анализирующий MCE (Machine Check Exception) состояние в CPU AMD и Intel, которое может указать на
проблемы с памятью и с кэшем CPU, ошибки обмена данными между CPU и чипсетом материнской платы.В RHEL / CentOS / Fedora Linux ставим нужный пакет (работает только с 64-разрядной сборкой ядра):
# yum install mcelog
В Debian / Ubuntu :
# apt-get install mcelog
Прописываем запуск mcelog в crontab для пользователя root:*/5 * * * * /usr/sbin/mcelog --ignorenodev --filter >> /var/log/mcelog
Проверяем лог:
# tail -f /var/log/mcelog
# grep -i "hardware error" /var/log/mcelog
# grep -c "hardware error" /var/log/mcelogДля автоматической отправки предупреждения в случае проблем в вызов из crontab нужно добавить:
[ $(grep -c "hardware error" /var/log/mcelog) -gt 0 ] && echo "Hardware Error Found $(hostname) @ $(date)" \
| mail -s 'H/w Error' pager@example.com
URL: http://www.cyberciti.biz/tips/linux-server-predicting-hardwa...
Обсуждается: http://www.opennet.me/tips/info/2087.shtml
Угу, только не забыть указать ядру при загрузке,mce=3
Дабы всё узнать о своём железе
А для для AMD ещё и
mce=bootlog
так как для амд их (эксепшоны) отключают при загрузке
И чё самое интересное, MCE появилось на Pentium PRO, Pentium II и AMD K6..., и это совсем не фишка x86_64
А так же,Каждый логический процессор в системе, имеет директорию
/sys/devices/system/machinecheck/machinecheckN
(где N - номер процессора)Эти директории содержат файлы для динамической конфигурации, а именно:
* bankNctl
Содержит 64-х битную маску, включающая или отключающая определенные сообщения,
об исключениях, для текущего ЦПУ. Если все биты маски равны нулю, тогда никакие
сообщения не выдаются.Остальные файлы конфигурации, хотя и находятся в каждой папке sysfs, но изменения
в любом из них влияют на все процессоры. (думается тяжело было бы реализовывать
различные степени толерантности для разных ядер на одном CPU)* check_interval
Интервал опроса процессора, в минутах, по умолчанию 5 минут.
* tolerant
Уровни толерантности:0: Всегда генерировать panic на неисправимых ошибках или записывать в лог исправленные.
1: Генерировать panic или ошибку шины (SIGBUS) на неисправимых ошибках или записывать
в лог исправленные.
2: Генерировать ошибку шины (SIGBUS) на неисправимых ошибках или записывать в лог исправленные.
3: НИКОГДА не генерировать panic или ошибку шины (SIGBUS), а только записывать лог
(использовать только для тестирования)По умолчанию: 1
И самое интересный конфиг MCE это
* trigger
Программа которая будет запущена, когда в sysfs появляется какое-либо событие от MCE.
Например запуск вывода на консоль, экран, или отправка почты
# echo 'mail -t root -s "MCE EVENT: `date "+%m.%d.%Y - %H:%M:%S"`"' > \
/sys/devices/system/machinecheck/machinecheck0/triggerИменно использование trigger удобнее, так как не надо дёргать крон каждые 5 минут.
Так, выше кем-то скопипастенные команды, запишем в триггер, дабы освободить крон
# export MCE_TRIGGER="/sys/devices/system/machinecheck/machinecheck0/trigger"
# echo '/usr/sbin/mcelog --ignorenodev --filter >> /var/log/mcelog' > $MCE_TRIGGER;
Спасибо, занятное HOWTO :)
Ну и от себя, если у Вас появляются ошибки, которые выдаёт MCE,
надо срочно задуматься о выявлении причины и замене сбойного железа
или фирмвари, если железо прошиваемое.
у меня при высокой загрузке CPU линукс паникует
CPU context corrupt что то там... отключил пока MCE добавив nomce при загрузке. Пока все ок.
Разгон проца может влиять ?
PS перегрева точно нет.
>у меня при высокой загрузке CPU линукс паникует
>CPU context corrupt что то там... отключил пока MCE добавив nomce при
>загрузке. Пока все ок.
>Разгон проца может влиять ?Может, может...
Память тоже разогнал?
Вот тут утиль, http://www.codemonkey.org.uk/cruft/parsemce.c
Парсит на человеческий язык логи МСЕ
не память не трогал, работает на заявленной частоте 1066
а CPU c 2.66 -> 3.33
>не память не трогал, работает на заявленной частоте 1066
>а CPU c 2.66 -> 3.33Дык это ж на 25% от номинала.... сдохнет до играешься... не более 12%