Kernel panic: Hard LOCKUP / NMI watchdog detected lockup on CPU — Решение
Архитектура ошибки и симптомы сбоя
Сбой «Kernel panic - not syncing: Hard LOCKUP / NMI watchdog detected lockup on CPU» регистрируется сторожевым таймером NMI (Non-Maskable Interrupt Watchdog). Ошибка свидетельствует о том, что конкретное процессорное ядро (CPU core) зависло в цикле или deadlock с выключенными локальными прерываниями более чем на установленный таймаут (по умолчанию 10 секунд), перестав реагировать на базовые системные события.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| NMI Watchdog | APIC Perf Event | Использует немаскируемые прерывания счетчиков производительности CPU для детекции глухих зависаний. |
| Hard Lockup | CPU State | Ядро процессора не способно обработать даже стандартные аппаратные таймеры. |
| kernel.watchdog_thresh | 10 (sec) | Пороговое время отсутствия ответа ядра перед вызовом Kernel Panic. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Анализ трассировки регистров и стека CPU
В дампе консоли обратите внимание на строку NMI backtrace for cpu X и имя функции в RIP:
- Если стек указывает на функции блокировок (
native_queued_spin_lock_slowpath) — имеет место взаимная блокировка (deadlock) драйвера. - Если стек указывает на функции энергосбережения (
intel_idle,acpi_idle) — проблема в C-states процессора.
Сценарий 2: Отключение глубоких C-States процессора в GRUB
На многих серверах Intel/AMD зависание происходит при переходе ядер в режим энергосбережения:
# Добавьте в /etc/default/grub в строку GRUB_CMDLINE_LINUX:
intel_idle.max_cstate=1 processor.max_cstate=1 idle=poll
# Обновите конфигурацию GRUB:
sudo update-grub # Для Ubuntu/Debian
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Для CentOS/RHELСценарий 3: Обновление микрокода CPU (Microcode)
# Для Ubuntu/Debian:
sudo apt-get install intel-microcode # или amd64-microcode
# Для RHEL/CentOS:
sudo dnf install microcode_ctlITSTM проводит аудит аппаратной стабильности серверных платформ, тюнинг параметров ядра и внедрение систем предиктивного мониторинга.
Частые вопросы (FAQ)
В чем разница между Hard Lockup и Soft Lockup?
При Soft Lockup процессор зависает в контексте ядра, но прерывания остаются включенными. При Hard Lockup ядро зависает с полностью отключенными аппаратными прерываниями, и обнаружить такой сбой способен только NMI watchdog.
Можно ли отключить NMI watchdog для предотвращения паники?
Команда 'sysctl -w kernel.nmi_watchdog=0' отключит сторожевой таймер, но это не устранит причину зависания — сервер просто повиснет намертво без вывода диагностического сообщения.