Найти тему

Non-Maskable Interrupt — кнопка NMI

Часто работаю с серверами. Почти на каждом есть маленькая кнопочка NMI. Иногда такую же кнопку можно обнаружить в программных инструментах управления сервером. Например, в iLO сервера HPE.

-2

Прерывания

NMI — Non-maskable interrupt, читается как "немаскируемое прерывание".

Разберёмся сначала что такое прерывание.

Прерывание (interrupt, INT) — это приостановка центральным процессором выполнения приоритетной программы для обработки события, которое поступило от одного из устройств.

Механизм прерываний:

  • Если в устройстве возникает событие, требующее вмешательства процессора, то устройство, которое вызвало данное событие, посылает специальный сигнал — запрос на прерывание.
  • Запрос на прерывание обрабатывается контроллером прерываний. Контроллер прерываний (Programmable Interrupt Controller, PIC) — это микросхема или встроенный в процессор модуль, который выполняет обработку запросов на прерывание от устройств.
  • Сигнал обрабатывается контроллером прерываний и передается процессору. Процессор приостанавливает выполнение основной программы (сохраняя при этом текущее состояние своих регистров в оперативную память) и обрабатывает данное прерывание. После обработки прерывания процессор продолжает выполнять основную программу.
  • В случае возникновение одного прерывания во время обработки процессором другого, выполняется прерывание, у которого приоритет выше.

Простой пример аппаратного прерывания: нажатие на клавишу.

Существуют маскируемые и немаскируемые прерывания, которые обрабатываются контроллером прерываний.

Маскируемые (аппаратные) прерывания. В эту группу относят прерывания от периферийных устройств.

Немаскируемые прерывания (Non-Maskable Interrupt, NMI). Прерывания с высшим приоритетом. Прерывания данного типа обрабатываются в случаях возникновения аварийных ситуаций, вызванных ошибками в работе памяти или других устройств.

Так зачем же нужна кнопка NMI?

Бывает так, что сервер зависает. Вот ни у кого не зависает, а у вас зависает. На мышку с клавиатурой не реагирует, команды не воспринимает. Можно только перезагрузить или выдернуть питание. Сервер работает, работает, а потом опять зависает. Обычно после этого мы звоним в техподдержку, обновляем прошивки, переустанавливаем системы, протираем пыль. А сервер всё равно зависает. Вот тут то и приходит на помощь кнопочка NMI.

При получении сигнала Non-Maskable Interrupt от кнопки или из iLO сервера процессор выходит из того бесконечного цикла, в который он попал и начинает обработку немаскируемого прерывания. Настройки сервера могут быть разные, кто-то может просто продолжить работу, кто-то перезагрузится, где-то можно настроить поведение сервера в BIOS. Обычно процессор сбрасывает дамп памяти на диск и после этого выполняет перезагрузку. Этот дамп можно отправить в поддержку, где уже специально обученные люди разберутся в источнике проблемы.

Обобщим

Из документации HPE:

Аварийный дамп NMI позволяет администраторам создавать файлы аварийного дампа, если система зависла и не реагирует на традиционные методы отладки. Анализ журнала аварийного дампа является неотъемлемой частью диагностики проблем с надежностью, таких как зависание операционных систем, драйверов устройств и приложений. Многие сбои приводят к зависанию системы, и единственное, что в такой ситуации могут сделать администраторы, — это выключить и снова включить питание системы. При сбросе системы стирается информация, необходимая для анализа проблемы. Функция NMI сохраняет эту информацию в дампе памяти, прежде чем выполнять сброс оборудования. Чтобы вызвать обработчик NMI с помощью ОС и создать журнал аварийного дампа, администратор может использовать функцию iLO Virtual NMI.

Не только в серверах HPE есть кнопка NMI. В серверах IBM, Dell, Fujitsu, Supermicro, Huawei, Lenovo тоже есть кнопка NMI или перемычка на материнской плате.

Для Cisco UCS — NMI можно отправить через IPMI:

ipmitool -I lan -H <RemoteServerBMCAddress> -U <Username> -a chassis power diag

Или интерфейс командной строки UCS Manager:

diagnostic-interrupt

Я не буду сильно углубляться в тему прерываний и вариантов их использования. Как админу мне это не нужно, да и не настолько сильно я в этом разбираюсь. Кнопка нужная, в редких случаях полезная, не знаешь — не нажимай.

Источник:

Кнопка NMI — Non-Maskable Interrupt | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.