Введение
Тип компьютерной аппаратной ошибки
Исключение машинного контроля (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. Некритичные неисправные устройства ввода-вывода и контроллеры можно идентифицировать, отключив их, если это возможно, или отключив соответствующие устройства в системе, чтобы проверить, исчезнет ли проблема. Если сбои обычно возникают вскоре после загрузки операционной системы, либо не возникают вообще, либо происходят лишь спустя несколько дней, это может указывать на проблему с блоком питания. При проблемах с блоком питания сбой часто происходит в момент пиковой нагрузки при запуске операционной системой внешних устройств.
Poor CPU cooling due to a CPU heatsink and case fans (or filters) that's clogged with dust or has come loose. Overclocking beyond the highest clock rate at which the CPU is still reliable. Failing motherboard. Failing processor. Failing memory. Failing I/O controllers, on either the motherboard or separate cards. Failing I/O devices. Inadequate or failing power supply. Cooling problems are usually obvious upon inspection. A failing motherboard or processor can be identified by swapping them with functioning parts. Memory can be checked by booting to a diagnostic tool, like memtest86. Non essential failing I/O devices and controllers can be identified by unplugging them if possible or disabling the devices to see if the problem disappears. If the failures typically only occur fairly soon after the OS is booted or not at all or not for days, it may be suggestive of a power supply issue. With a power supply problem, the failure often occurs when power demand peaks as the OS starts up any external devices for use.
Декодирование 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.