ksoftirqd
s потоки ядра вождение ... мягкие IRQ, такие вещи, как TIMER_SOFTIRQ
, SCSI_SOFTIRQ
, TASKLET_SOFTIRQ
, и что относится к вашему делу, NET_TX_SOFTIRQ
и NET_RX_SOFTIRQ
. Они реализованы в нижних половинах ядра, так как отложенная работа от верхних половин - фактических обработчиков прерываний в драйверах устройств, где задержка является критической.
Фактический обработчик прерываний или аппаратный IRQ для сетевой карты связан с получением данных на устройство как можно быстрее. Он ничего не знает о NAT и другой обработке TCP / IP. Он знает об обработке своей шины (скажем, PCI), специфике карты (кольцевые буферы, регистры управления / конфигурации), DMA и немного об Ethernet. Он передает / получает пакеты (точнее, skbuf
s) через очереди в / из нижней половины.
Взгляните на ethtool(8)
, если вы еще этого не сделали. Посмотрите, можете ли вы настроить аппаратное обеспечение / драйверы для выгрузки контрольной суммы / сегментации и т.д.
Надеюсь, это немного поможет.
Edit:
Как уже упоминалось в комментариях, проверьте оборудование NIC для уменьшения прерываний и драйвер поддержки для поддержки NAPI .