⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
DPC Latency ndis.sys Windows Server, AD и Роли

Высокие задержки DPC Latency в ndis.sys: оптимизация сетевого стека

Обновлено: 28.08.2026  ·  Официальная база знаний

Симптомы высоких задержек DPC в драйвере ndis.sys

На высоконагруженных сетевых серверах (Hyper-V хосты, шлюзы, веб-серверы) наблюдаются микрофризы, падение пропускной способности сети и неравномерное распределение нагрузки между ядрами CPU (одно ядро загружено на 100%, остальные простаивают). Утилиты анализа задержек (LatencyMon, DPC Latency Checker) фиксируют задержки свыше 2000–5000 мкс в модуле ndis.sys и tcpip.sys.

СимптомЛокацияПричина
LatencyMon: ndis.sys > 2000 µsЯдро NDISВсе входящие сетевые пакеты обрабатываются на одном ядре CPU (CPU0)
Потеря сетевых пакетов (Packet Drops)Сетевой адаптерПереполнение кольцевого буфера RX/TX (Ring Buffer) сетевой карты
Низкая скорость при 10/25/40GbEСетевой стек WindowsОтключена технология Receive Side Scaling (RSS) или Virtual Machine Queues (VMQ)

Пошаговая оптимизация задержек NDIS и сетевых прерываний

  1. Включите и оптимизируйте технологию масштабирования на стороне приема (RSS): распределите сетевые прерывания по разным ядрам процессора:
    Enable-NetAdapterRss -Name "*"; Set-NetAdapterRss -Name "Ethernet1" -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 -NumberOfReceiveQueues 8 -Profile NUMAScaling
  2. Увеличьте размеры очередей приема и передачи (Rx/Tx Buffers) сетевой карты:
    Set-NetAdapterAdvancedProperty -Name "Ethernet1" -DisplayName "*Receive Buffers*" -RegistryValue 2048; Set-NetAdapterAdvancedProperty -Name "Ethernet1" -DisplayName "*Transmit Buffers*" -RegistryValue 2048
  3. Отключите объединение прерываний (Interrupt Moderation) при требованиях к ультра-низким задержкам:
    Set-NetAdapterAdvancedProperty -Name "Ethernet1" -DisplayName "*Interrupt Moderation*" -RegistryValue 0
  4. Проверьте текущее распределение прерываний по процессорам:
    Get-NetAdapterRss | Format-List Name, Enabled, Profile, BaseProcessorNumber, MaxProcessorNumber

Важно: Не назначайте BaseProcessorNumber = 0 на серверах с высокой нагрузкой, так как ядро CPU0 уже занято системными задачами операционной системы.

Практический опыт инженера: Для сетевых карт 10G/25G (Mellanox, Intel X520/X710) обязательно задавайте правильный профиль RSS = NUMAScaling. По умолчанию Windows использует профиль Closest, что при росте трафика вызывает перегрузку одного NUMA-узла.

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

Что такое драйвер ndis.sys?

NDIS (Network Driver Interface Specification) — это системный драйвер ядра Windows, являющийся мостом между сетевыми протоколами (TCP/IP) и драйверами физических сетевых карт.

Чем отличаются прерывания ISR от DPC?

ISR (Interrupt Service Routine) — это быстрый аппаратный сигнал процессору о событии. DPC (Deferred Procedure Call) — отложенная процедура для длительной обработки переданных данных.

Как профиль NUMAScaling помогает снизить DPC задержки?

Профиль NUMAScaling гарантирует, что обработка сетевых пакетов происходит на том же сокете CPU (NUMA-ноде), к которому аппаратно подключена сетевая карта через шину PCI-E.

Может ли включенный VMQ вызывать задержки на 1Gbps картах?

Да, на медленных гигабитных контроллерах драйверная реализация VMQ часто содержит баги. На адаптерах 1Gbps рекомендуется отключать VMQ.

Telegram Telegram Max Max Позвонить Позвонить E-mail E-mail