Введение

Тип компьютерной аппаратной ошибки

Исключение машинного контроля (MCE) — это тип компьютерной ошибки, возникающий при обнаружении проблемы с аппаратным обеспечением компьютера. В большинстве персональных компьютеров, представленных на рынке, MCE указывает на неисправное или неправильно сконфигурированное оборудование. Характер и причины возникновения MCE могут различаться в зависимости от архитектуры и поколения системы. В некоторых конструкциях MCE всегда является необратимой ошибкой, приводящей к остановке системы и требующей перезагрузки. В других архитектурах некоторые MCE могут быть не критичными, например, для однобитовых ошибок, исправляемых памятью ECC. На некоторых архитектурах, таких как PowerPC, определенные программные ошибки могут вызывать MCE, например, недопустимый доступ к памяти. На других архитектурах, таких как x86, MCE обычно возникают исключительно из-за аппаратных проблем.

Операционные системы IBM для мейнфреймов

IBM System/360 Операционная система (OS/360) регистрирует ошибки ввода/вывода в наборе данных с именем SYS1.LOGREC. После этого IBM ввела термин "набор данных регистрации ошибок" (ERDS) для последующих версий, позволяющих установщику выбирать имя набора данных, а также для операционных систем, не являющихся производными от OS/360.

OS/360

В OS/360 установка может выбрать несколько уровней поддержки для обработки машинных проверок. Наиболее сложный из них, Machine Check Handler (MCH), регистрирует данные об ошибках в SYS1.LOGREC и предпринимает попытки восстановления. Установка может распечатать эти данные, используя сервисную программу редактирования и печати системных журналов (EREP) или автономную версию SEREP. MCH способен обрабатывать сбои памяти в обновляемых контрольных секциях ядра, загружая свежую копию из SYS1.ASRLIB, а также обрабатывать ошибки памяти во временных областях SVC, считывая новую копию модуля SVC из SYS1.SVCLIB.

z/OS

В z/OS установка может использовать ERDS или определить поток журналов z/OS System Logger для хранения данных об ошибках. Как и в OS/360, для печати этих данных используется EREP; SEREP больше не поддерживается. MCH теперь является обязательным и обрабатывает значительно больше видов отказов, чем MCH в OS/360.

Возможные причины

Аппаратные сбои – это проблема оборудования, а не программного обеспечения. Они часто являются результатом разгона или перегрева. В некоторых случаях процессор отключается при достижении критической температуры, чтобы избежать необратимых повреждений. Но они также могут быть вызваны ошибками шины, возникающими из-за неисправности других компонентов, таких как память или устройства ввода-вывода. Возможные причины включают:
Недостаточное охлаждение процессора из-за забитого пылью или ослабленного крепления кулера процессора и вентиляторов корпуса (или фильтров). Разгон сверх максимально стабильной тактовой частоты процессора. Неисправность материнской платы. Неисправность процессора. Неисправность памяти. Неисправность контроллеров ввода-вывода, расположенных на материнской плате или отдельных платах расширения. Неисправность устройств ввода-вывода. Недостаточная мощность или неисправность блока питания. Проблемы с охлаждением обычно легко обнаружить при визуальном осмотре. Неисправную материнскую плату или процессор можно выявить, заменив их на рабочие аналоги. Память можно проверить, загрузившись с диагностической утилиты, например memtest86. Некритичные неисправные устройства ввода-вывода и контроллеры можно идентифицировать, отключив их, если это возможно, или отключив соответствующие устройства в системе, чтобы проверить, исчезнет ли проблема. Если сбои обычно возникают вскоре после загрузки операционной системы, либо не возникают вообще, либо происходят лишь спустя несколько дней, это может указывать на проблему с блоком питания. При проблемах с блоком питания сбой часто происходит в момент пиковой нагрузки при запуске операционной системой внешних устройств.

Декодирование MCE

Для процессоров IA 32 и Intel 64 обратитесь к главе 15 Руководства разработчика программного обеспечения по архитектурам Intel 64 и IA 32 (Архитектура машинных проверок) или к статье Microsoft KB об исключениях Windows.

Программы для декодирования Intel и AMD MCE

rasdaemon – это инструмент для ведения журналов RAS (надежность, доступность и ремонтопригодность) для Linux. Он регистрирует ошибки памяти, используя события трассировки EDAC. EDAC – это подсистема ядра Linux, которая обрабатывает обнаружение ошибок ECC от контроллеров памяти для большинства чипсетов на архитектурах i386 и x86-64. Также существуют драйверы EDAC для других архитектур, таких как ARM. Рекомендуется использовать rasdaemon для сбора информации о MCE в системах Linux, поскольку mcelog устарел с 2017 года. mcelog – это демон Linux от Andi Kleen для обработки MCE для процессоров x86. Он также может декодировать машинные проверки. mcelog считается функционально устаревшим с 2017 года. Заменой mcelog для систем Linux является rasdaemon. Это программа для Linux от Dave Jones для декодирования MCE из процессоров AMD K7. mced (mcedaemon) – это программа для Linux, разработанная Tim Hockin для сбора MCE из ядра и оповещения заинтересованных приложений. Следует отметить, что она не пытается интерпретировать данные MCE, а просто уведомляет другие программы. mcat – это командная программа для Windows от AMD для декодирования MCE из процессоров AMD K8, семейств 0x10 и 0x11.