Привет, сетевой друг!
Сегодня разберём ещё 5 полезных фишек для Cisco IOS, которые реально экономят время и нервы.
🟣net.core.busy_poll и busy_read - снижаем латентность за счёт активного опроса вместо прерываний:
sysctl -w net.core.busy_poll=50
sysctl -w net.core.busy_read=50
Ядро вместо ожидания прерывания активно опрашивает сетевую карту в течение заданного времени в микросекундах. На low-latency приложениях (торговые системы, real-time API) это убирает задержку на переключение контекста, но жрёт CPU - включать только там где латентность важнее энергоэффективности.🟣SACK и tcp_no_metrics_save - управляем тем как TCP запоминает состояние соединений между сессиями:
sysctl -w net.ipv4.tcp_sack=1
sysctl -w net.ipv4.tcp_no_metrics_save=1
tcp_no_metrics_save отключает кэширование метрик соединения (RTT, congestion window) для повторных подключений к тому же хосту. Без этого новое соединение после долгого простоя может унаследовать устаревшие метрики от предыдущей сессии и стартовать с заниженной скоростью.🟣Настройка conntrack timeout для разных состояний TCP отдельно - дефолты Linux избыточно консервативны:
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=15
По умолчанию established-соединение живёт в таблице conntrack до 5 дней. На серверах с высоким churn (много коротких соединений) таблица раздувается и жрёт память без реальной необходимости.🟣XPS (Transmit Packet Steering) - балансируем исходящий трафик по CPU, зеркально к RPS для входящего:
# Привязываем очередь TX0 к CPU 0-3
echo f > /sys/class/net/eth0/queues/tx-0/xps_cpus
# Проверяем текущую привязку
cat /sys/class/net/eth0/queues/tx-0/xps_cpus
Без XPS все ядра могут пытаться писать в одну и ту же TX-очередь одновременно, создавая contention на блокировках. Привязка снижает конкуренцию за очередь.🟣net.ipv4.tcp_slow_start_after_idle - TCP по умолчанию сбрасывает congestion window после периода бездействия соединения:
sysctl -w net.ipv4.tcp_slow_start_after_idle=0
Для keep-alive соединений с редкими, но объёмными передачами (например API с долгоживущими сессиями) это означает что каждая пауза откатывает скорость к началу slow start. Отключение сохраняет congestion window между паузами - актуально когда канал стабильный и потери не связаны с реальной перегрузкой.Серверная Админа | Zeroday | #Cisco