Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
SOFTIRQ_LATENCY_SPIKE Linux / DevOps

Диагностика задержек Softirq и высокой нагрузки ksoftirqd в Linux

Обновлено: 21.08.2026
  • Процессы ядра [ksoftirqd/0], [ksoftirqd/1] потребляют до 100% CPU.
  • В выводе top значение %si превышает 20-30%.
  • Задержки (Jitter) в обработке TCP/UDP пакетов, резкое падение сетевой пропускной способности.

1. Анализ распределения типов Softirq

watch -n 1 cat /proc/softirqs

Определите, какой вектор непрерывно растет: NET_RX (прием сети), NET_TX (передача), BLOCK (дисковый I/O), TIMER (таймеры ядра) или RCU.

2. Проверка сетевого аппаратного оффлоадинга сетевой карты

ethtool -k eth0 | grep -E "generic-|tcp-segmentation|receive-offload"

Включение аппаратной разгрузки очередей (GRO, GSO, TSO):

ethtool -K eth0 gro on gso on tso on

3. Увеличение размера очереди пакетов ядра

Отредактируйте /etc/sysctl.d/99-network-backlog.conf:

# Максимальное количество пакетов в очереди на обработку до передачи сокету
net.core.netdev_max_backlog = 10000

# Бюджет обработки пакетов softirq за один проход NAPI
net.core.netdev_budget = 600
net.core.netdev_budget_usecs = 4000
sysctl --system

4. Трассировка функций softirq через perf

perf top -e irq:softirq_entry
Практический опыт инженера: Если ksoftirqd утилизирует CPU из-за вектора NET_RX, увеличьте размер кольцевого буфера драйвера: ethtool -G eth0 rx 4096 tx 4096.

Частые вопросы (FAQ)

Какую роль выполняет демон ksoftirqd?

Когда отложенные прерывания (softirq) не успевают обработаться в аппаратном контексте прерывания за отведенный таймаут, ядро делегирует их демону ksoftirqd/X для обработки в контексте планировщика задач.

Почему NET_RX является самым частым виновником нагрузки ksoftirqd?

При сетевом SYN-флуде или обработке сотен тысяч мелких сетевых пакетов (Packet per Second, PPS) сетевая карта засыпает ядро прерываниями, перегружая кольцевые буферы драйвера (Ring Buffers).