proc/interrupts: когда устройство само съедает CPU Иногда ядра… — Admin Guides | Сисадмин — TG.ME

/proc/interrupts: когда устройство само съедает CPU

Иногда ядра загружены, хотя пользовательские процессы почти ничего не делают

Причина может быть в hardware interrupts - процессор постоянно получает прерывания от сетевой карты, диска, таймера или другого устройства

⏺Смотрим распределение IRQ

cat /proc/interrupts


В выводе каждое устройство имеет счётчик прерываний по CPU
Например, если у сетевой карты почти все события приходят на один CPU, нагрузка может распределяться очень неравномерно

⏺Ищем конкретное устройство

grep -Ei 'nvme|eth|ens|enp' /proc/interrupts


Можно увидеть, например, что NVMe или NIC генерирует огромное количество IRQ

⏺Смотрим динамику

watch -n 1 'grep -Ei "nvme|eth|ens|enp" /proc/interrupts'


Важны не сами большие числа, а то, как быстро они растут

Если за секунду один счётчик увеличивается на десятки тысяч, устройство активно генерирует прерывания

⏺Почему один CPU может быть перегружен

Сетевая карта может иметь несколько очередей, каждая из которых связана со своим IRQ

Если распределение получилось неудачным, один CPU будет заниматься обработкой почти всего сетевого трафика, пока остальные ядра простаивают

Проверить softirq:

grep NET_RX /proc/softirqs


Если одновременно растут IRQ сетевой карты и NET_RX на одном CPU, нагрузка уже уходит глубже обычного процесса

⚡️ Это полезный способ отличить высокую загрузку CPU приложением от нагрузки, которую создаёт само устройство и обработка его событий ядром
❤6🔥3
August 21, 2026 1.5K 33