Как ускорить сетевой стек без лишнего тюнинга и случайных побочных эффектов
Первый шаг — не менять параметры наугад, а снять базовую картину. Анализ показал, что узкие места обычно сидят не в «сети вообще», а в одном из уровней: очереди NIC, обработка прерываний, планировщик пакетов, conntrack, буферы сокета или пользовательский код.
Дальше проверяем три группы метрик:
— дропы и ретрансмиты на интерфейсе;
— загрузку CPU по softirq и ksoftirqd;
— задержки в очередях и рост латентности на p95/p99.
Если растет softirq, но линк не забит, проблема часто в распределении нагрузки: RPS/RFS, IRQ affinity, размер ring buffer, очереди передачи. Если высокий retransmit без потери пакетов на линке, смотрим MTU, MSS, буферы и состояние congestion control. Если узел обслуживает много коротких соединений, проверьте лимиты файла, backlog и параметры accept-очереди.
Отдельно полезно отключать «улучшения» только после измерения. Часто агрессивный offload, jumbo frames или увеличение буферов дают прирост в одном сценарии и деградацию в другом. Рекомендуется обратить внимание на метрику не только throughput, но и tail latency: именно она показывает, стал ли стек реально лучше.
Оптимизация сетевого стека начинается с наблюдаемости: сначала фиксируем узкое место, затем меняем одну переменную и снова измеряем.
Прокси-инфра
@proxy_infra_desk_arb
Как ускорить сетевой стек без лишнего тюнинга и случайных побочных эффектов
Этот пост опубликован в Telegram-канале Прокси-инфра. Подписаться можно по ссылке: @proxy_infra_desk_arb.