Строка вида IOAPIC[0]: apic_id 24, version 32, address 0xfec00000, GSI 0-23 или похожее сообщение с формулировкой «ioapic 24 119 entries» появляется в выводе dmesg при загрузке Linux и относится к инициализации контроллера прерываний — это штатное информационное сообщение ядра, а не ошибка. Числа в строке описывают параметры контроллера IO-APIC: его идентификатор, адрес в памяти и количество линий прерываний (entries), которые он обслуживает.

Если вы встретили эту запись при изучении логов загрузки, при диагностике зависаний или при поиске причины сбоев — важно понимать, что само по себе сообщение не указывает на неисправность. Оно лишь фиксирует, что ядро обнаружило контроллер прерываний и настроило его. Проблемы начинаются только тогда, когда рядом появляются ошибки вида «APIC error», «irq nobody cared» или система зависает на этапе инициализации APIC.

Что такое IO-APIC и зачем он нужен

IO-APIC (Input/Output Advanced Programmable Interrupt Controller) — это аппаратный контроллер, который принимает сигналы прерываний от устройств (дисков, сетевых карт, USB-контроллеров) и распределяет их между ядрами процессора. В современных многопроцессорных и многоядерных системах он пришёл на смену старому контроллеру PIC 8259A, который поддерживал ограниченное число линий и не умел работать с несколькими процессорами.

Слово entries в сообщении ядра означает количество входных линий прерываний (redirection entries), доступных данному контроллеру. Типичные значения — 24, но на серверных платах и материнских платах с расширенной периферией встречаются контроллеры с большим числом линий, а также несколько IO-APIC одновременно. Каждой линии соответствует глобальный номер прерывания — GSI (Global System Interrupt).

Число «119» или подобное в таких строках обычно указывает на верхнюю границу диапазона GSI, который обслуживает контроллер, либо на идентификатор в таблице ACPI. Точная интерпретация зависит от конкретного формата строки в вашей версии ядра, поэтому сверяться стоит с полным фрагментом лога, а не с отдельным числом.

💡

Сообщение «ioapic ... entries» — это нормальная запись об инициализации контроллера прерываний при загрузке ядра Linux, а не признак ошибки.

Как выглядит сообщение в логах

Запись об IO-APIC появляется на раннем этапе загрузки, сразу после инициализации локального APIC процессора. Посмотреть её можно командой:

dmesg | grep -i apic

Типичный вывод содержит несколько строк:

  • 🖥️ ACPI: IOAPIC (id[0x18] address[0xfec00000] gsi_base[0]) — данные из таблицы ACPI;
  • 🔌 IOAPIC[0]: apic_id 24, version 32, address 0xfec00000, GSI 0-23 — регистрация контроллера ядром;
  • ⚙️ ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) — переназначение legacy-прерываний;
  • 🧩 PCI: Using ACPI for IRQ routing — маршрутизация прерываний PCI-устройств.

Обратите внимание: количество строк IOAPIC зависит от оборудования. На обычном десктопе чаще всего один контроллер, на серверных платформах их может быть несколько — по одному на группу слотов PCIe или на процессорный сокет.

Опасно ли это сообщение

Короткий ответ — нет. Запись об инициализации IO-APIC присутствует в логах практически любой работающей Linux-системы с многоядерным процессором. Её отсутствие было бы куда более тревожным признаком: это означало бы, что система загрузилась в устаревшем режиме PIC или с отключённым APIC.

Реальное внимание стоит обращать на соседние строки лога. Тревожные сигналы выглядят иначе:

  • 🚨 APIC error on CPU0: ... — аппаратная ошибка локального APIC;
  • ⏱️ irq N: nobody cared — устройство генерирует прерывания, которые никто не обрабатывает;
  • 🔁 Disabling IRQ #N — ядро принудительно отключило «зашумлённую» линию прерывания;
  • ❄️ зависание загрузки на строке с упоминанием APIC или IO-APIC.
⚠️ Внимание: если система зависает именно на этапе инициализации APIC, возможная причина — конфликт прошивки BIOS/UEFI с ядром или неисправность оборудования. Не спешите менять параметры ядра вслепую: сначала проверьте обновления BIOS для вашей платы и протестируйте память.
📊 Где вы встретили сообщение про IOAPIC?
В dmesg при обычной проверке
При зависании загрузки системы
В журнале при сбоях оборудования
Просто изучаю логи из интереса

Когда IO-APIC действительно становится проблемой

Контроллер прерываний сам по себе редко выходит из строя, но его некорректная работа проявляется характерными симптомами. Возможные сценарии: система периодически «замирает» на доли секунды, отваливается сетевая карта или USB-устройства под нагрузкой, в логах растёт счётчик ошибок APIC, а при пиковой нагрузке появляются сообщения о потерянных прерываниях.

Проверить распределение прерываний можно так:

cat /proc/interrupts

В выводе видно, какие устройства на каких линиях сидят и как растут счётчики. В колонке с типом контроллера встречаются обозначения IO-APIC-edge и IO-APIC-fasteoi — это типы триггеров прерываний. Если счётчик какой-то линии растёт аномально быстро без нагрузки на соответствующее устройство — это повод копать глубже.

💡

Команда watch -n1 cat /proc/interrupts покажет изменение счётчиков прерываний в реальном времени — так легко найти «зашумлённую» линию.

Диагностика: пошаговый порядок действий

Если вы подозреваете, что проблемы системы связаны с обработкой прерываний, действуйте от простого к сложному. Все перечисленные шаги безопасны и обратимы.

☑️ Проверка подсистемы прерываний

Выполнено: 0 / 5

Первым делом сохраните полный лог загрузки: dmesg > ~/boot.log — и изучите контекст вокруг строк с APIC. Одиночная информационная запись без ошибок рядом не требует никаких действий.

Если ошибки есть, обновите прошивку материнской платы — таблицы ACPI, по которым ядро настраивает IO-APIC, формируются именно BIOS/UEFI, и их ошибки производители нередко исправляют в новых версиях. Порядок обновления зависит от производителя платы, поэтому сверяйтесь с официальной инструкцией к вашей модели.

⚠️ Внимание: параметры ядра вроде noapic или nolapic — это диагностический инструмент, а не постоянное решение. Загрузка с noapic переводит систему в устаревший режим обработки прерываний и может снизить производительность и стабильность. Используйте такие параметры только чтобы подтвердить или исключить связь сбоя с APIC.

Параметры ядра, связанные с APIC

Для диагностики иногда применяют загрузочные параметры ядра. Они добавляются в конфигурацию загрузчика (например, в строку GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub с последующим обновлением конфигурации GRUB). Ниже — обзор основных вариантов.

ПараметрДействиеКогда применяют
noapicОтключает IO-APIC, прерывания идут через legacy PICДиагностика зависаний на этапе инициализации APIC
nolapicОтключает локальный APIC процессораРедкие случаи несовместимости, только для теста
acpi=offПолностью отключает подсистему ACPIКрайняя мера при подозрении на битые таблицы ACPI
irqpollОпрос всех линий при необработанных прерыванияхПри сообщениях «irq nobody cared»
pci=noacpiМаршрутизация IRQ без использования ACPIКонфликты прерываний PCI-устройств

Меняйте параметры по одному и проверяйте результат после каждой загрузки — иначе вы не поймёте, какой именно вариант сработал. Если ни один параметр не устраняет сбой, причина, скорее всего, не в подсистеме прерываний, и стоит вернуть конфигурацию загрузчика в исходное состояние.

Почему в строке встречаются разные числа

Формат сообщения зависит от версии ядра и оборудования. Обычно в строке фигурируют: идентификатор контроллера (apic_id), версия микросхемы, физический адрес регистров (типично 0xfec00000) и диапазон глобальных прерываний GSI. Количество entries равно числу входных линий конкретного контроллера — на серверных платах их может быть заметно больше, чем 24.

Когда обращаться за помощью

Самостоятельная диагностика оправдана при программных подозрениях: ошибках в логах, конфликтах после обновления ядра, проблемах после смены настроек BIOS. Но если система не загружается даже с параметром noapic, сыплет аппаратными ошибками на разных ядрах Linux или ведёт себя нестабильно и в других ОС — вероятна аппаратная неисправность платы, процессора или памяти.

В таком случае полезно собрать информацию перед обращением в сервис: полный вывод dmesg, содержимое /proc/interrupts, версию ядра (uname -r) и точную модель материнской платы. Это существенно ускорит диагностику.

💡

Строка «ioapic ... entries» в логах — норма. Действия нужны только при сопутствующих ошибках APIC, отключении IRQ ядром или зависаниях загрузки.

Часто задаваемые вопросы

Что означает «ioapic 24 119 entries» в dmesg?

Это информационная запись ядра Linux об инициализации контроллера прерываний IO-APIC. Числа описывают параметры контроллера: идентификатор, количество линий прерываний и диапазон GSI. Сообщение не является ошибкой.

Нужно ли что-то исправлять, если я вижу эту строку?

Нет, если рядом нет ошибок вида «APIC error», «irq nobody cared» или «Disabling IRQ». Одиночная запись об инициализации присутствует в логах любой исправной системы.

Что делать, если загрузка зависает на строке с APIC?

Попробуйте загрузиться с параметром ядра noapic для диагностики, проверьте наличие обновлений BIOS/UEFI и протестируйте оперативную память. Если сбоит и с параметром — вероятна аппаратная причина.

Опасно ли использовать параметр noapic постоянно?

Постоянная работа с noapic переводит систему в устаревший режим обработки прерываний, что может снизить производительность и стабильность. Это временный диагностический инструмент, а не решение проблемы.

Почему на сервере несколько строк IOAPIC?

Серверные и рабочие станции с большим числом устройств и процессорных сокетов оснащаются несколькими контроллерами IO-APIC. Каждый из них регистрируется ядром отдельной строкой — это нормальное поведение.