Расширенные настройки Windows NIC — RSS/LSO/EEE/Wake on LAN

· · Windows, Сети, NIC, Ethernet, Настройка производительности, Разработка Windows

Вкладка [Дополнительно] (Advanced) у сетевого адаптера Windows пестрит незнакомыми терминами. Jumbo Packet, Large Send Offload, Interrupt Moderation, Receive Side Scaling, Flow Control, Energy Efficient Ethernet. Судя по одним названиям, хочется включить всё сразу, но на практике правильный ответ зависит от того, что именно вы хотите получить.

  • Повысить пропускную способность при передаче больших объёмов данных?
  • Снизить задержку для мелких пакетов?
  • Снизить загрузку CPU?
  • Сделать стабильным выход из сна и работу Wake on LAN?
  • Изолировать проблему совместимости с драйвером или коммутатором?

Если оставить это неясным и просто «включить всё подряд», «на всякий случай выставить Jumbo 9014» или «раз медленно — зафиксировать 1Gbps Full», проблемы возникают совершенно рутинно.

В этой статье, ориентируясь в основном на проводные Ethernet-адаптеры Windows 10 / 11 и Windows Server, мы разберём подход к работе с расширенными настройками NIC на практике. Мы опишем, что означает каждая настройка, что обычно происходит при увеличении / уменьшении значения или включении / отключении параметра, и в каких ситуациях его стоит трогать — так, чтобы всё это можно было охватить одним взглядом.

Обратите внимание, что отображаемые имена настроек NIC и доступные значения сильно различаются в зависимости от производителя и драйвера. Jumbo Packet может называться Jumbo Frames, Receive BuffersReceive Descriptors, а Priority & VLANPacket Priority & VLAN. В этой статье мы рассматриваем близкие по смыслу настройки вместе.

1. Сначала — выводы

Сначала — только те выводы, которые редко подводят на практике.

  • Speed & Duplex по умолчанию должен быть Auto. При проблеме с падением скорости до 100Mbps сразу переходить к фиксации 1.0 Gbps Full Duplex — это последний, а не первый шаг.
  • Checksum Offload / RSS / LSO / RSC, как правило, должны быть включены или оставаться в значениях по умолчанию. Бездумное отключение всего подряд обычно приводит к лишней нагрузке на CPU.
  • Jumbo Packet имеет смысл использовать только тогда, когда параметр согласован end-to-end. Если выставить 9014 только на своём NIC, а путь между узлами останется на 1500, это станет ловушкой.
  • Interrupt Moderation — это перетягивание каната между пропускной способностью и задержкой. Более высокое значение снижает нагрузку на CPU, но увеличивает задержку.
  • Flow Control иногда помогает снизить количество отброшенных пакетов, но может и распространить перегрузку по сети.
  • EEE / Green Ethernet / Selective Suspend — это настройки энергосбережения, а не способ ускорить работу сети.
  • VMQ / SR-IOV предназначены для хостов Hyper-V и не являются волшебной кнопкой ускорения обычного настольного ПК.
  • Wake on Pattern Match часто становится причиной непреднамеренного пробуждения, поэтому, если нужен просто Wake on LAN, безопаснее ограничиться Magic Packet.
  • Устаревшие пункты вроде TCP Chimney Offload сегодня лучше не трогать.

Иными словами, расширенные настройки NIC — это не место, где нужно «включить всё, что выглядит мощным». Это место, где сначала нужно решить, за что вы боретесь — за пропускную способность, задержку, CPU, энергопотребление или совместимость, — и менять параметры по одному.

2. Где посмотреть настройки

2.1 Через графический интерфейс

Через «Сетевые подключения»

  1. Выполните ncpa.cpl
  2. Щёлкните правой кнопкой по нужному адаптеру
  3. СвойстваНастроить
  4. Вкладка Дополнительно (Advanced)

Через Диспетчер устройств

  1. Диспетчер устройств
  2. Сетевые адаптеры
  3. Щёлкните правой кнопкой по нужному NIC → Свойства
  4. Вкладка Дополнительно

Именно эти параметры — главные герои статьи. Однако настройки на вкладке Power Management (Управление электропитанием) тоже сильно влияют на практику, и мы разберём их во второй половине статьи.

2.2 Через PowerShell

С помощью PowerShell удобно посмотреть текущие значения списком и сделать резервную копию перед изменением.

Get-NetAdapter

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Sort-Object DisplayName |
  Format-Table DisplayName, DisplayValue, RegistryKeyword, RegistryValue -Auto

На некоторых NIC поле RegistryKeyword использует стандартизированные имена и может выглядеть как *RSS, *VMQ, *SRIOV, *EEE. Но DisplayName и DisplayValue зависят от драйвера. Перед тем как писать скрипт изменения настроек, безопаснее сначала посмотреть список на реальной машине.

3. Главные принципы перед тем, как что-то менять

Если пропустить эти пункты перед тем, как трогать настройки NIC, обычно увязаешь в болоте.

3.1 Сначала решите, «что именно вы хотите улучшить»

За одной и той же фразой «сеть работает медленно» могут скрываться совершенно разные проблемы.

  • Медленно копируются большие файлы → пропускная способность, RSS, RSC, LSO, Jumbo, буферы
  • Задержки при мелких запросах/ответах → Interrupt Moderation, RSC, EEE, глубина очереди
  • Высокая загрузка CPU → offload-настройки, RSS, RSC, прерывания
  • Странности после выхода из сна → Selective Suspend, Power Management, WoL
  • Периодические обрывы связи / переход на 100Mbps → кабель, оборудование на другом конце, Speed & Duplex, EEE, драйвер

Если трогать одни и те же настройки при разных целях, вместо улучшения можно получить ухудшение.

3.2 Сначала подозревайте физический уровень и оборудование на другом конце

Есть проблемы, которые настройками NIC совершенно не лечатся.

  • Неисправный кабель
  • Проблемы совместимости с коммутатором / роутером / док-станцией
  • Устаревшая прошивка
  • Недостаток питания у USB NIC
  • Ошибки на стороне порта
  • Потери пакетов и повторные передачи

Особенно при падении до 100Mbps, флаппинге линка и сбоях только при больших передачах быстрее сначала проверить физику и оборудование на другом конце, а не настройки.

3.3 Меняйте по одному параметру за раз

Если изменить Jumbo, LSO, RSC, RSS и EEE разом, вы не поймёте, что именно сработало. Базовое правило — записать настройки до изменения, менять их по одному пункту и измерять изменения.

3.4 Определите, что вы будете измерять

Как минимум стоит отслеживать следующее.

  • Скорость линка (1G / 2.5G / 10G и т.д.)
  • Пропускная способность
  • Задержка
  • Загрузка CPU
  • Статистика NIC (drop / error / нехватка буфера)
  • Стабильность выхода из сна

Изменения настроек убедительнее оценивать не на ощупь, а по цифрам.

4. Сводная таблица основных настроек

Сначала — таблица, где роль каждой настройки видна на одном экране.

Настройка Что делает Что обычно происходит при повышении / включении Что обычно происходит при понижении / отключении Базовая политика
Speed & Duplex Согласование / фиксация скорости линка и duplex При совпадении со старым оборудованием связь может наладиться, но при рассогласовании возникает duplex mismatch и падение скорости Возврат к Auto обычно стабилен с современным оборудованием По умолчанию Auto
Jumbo Packet / Jumbo Frames Использование фреймов больше стандартного MTU При больших передачах снижается нагрузка на CPU и накладные расходы на заголовки Выше совместимость, но больше число пакетов Только на выделенном пути, согласованном end-to-end
Checksum Offload Вычисление контрольных сумм IP/TCP/UDP на NIC CPU обычно снижается Больше вычислений на стороне ОС, CPU обычно растёт Как правило, включено
LSO / TSO Разбиение больших TCP-отправлений на NIC Помогает пропускной способности при интенсивной отправке и снижает CPU Нагрузка на CPU растёт, но удобно для изоляции проблем совместимости Обычно включено
RSC / LRO Объединение принимаемых TCP-сегментов на NIC Помогает пропускной способности приёма и снижает CPU Более мелкая гранулярность, что иногда выгодно для низкой задержки Включено, если важен приём
RSS Распределение обработки приёма по нескольким CPU На многоядерных системах растёт пропускная способность и масштабируемость Нагрузка концентрируется на одном CPU и создаёт затор По умолчанию включено на многоядерных системах
Interrupt Moderation Ограничение частоты прерываний Снижается нагрузка на CPU, но обычно растёт задержка Задержка снижается, но обычно растёт нагрузка на CPU/DPC Отправная точка — значение по умолчанию / Adaptive
Receive / Transmit Buffers Глубина кольцевых буферов Помогает устойчивости к всплескам и устойчивой пропускной способности Меньше расход памяти, но выше уязвимость к потере пакетов Увеличивать только при нехватке
Flow Control Отправка/приём pause-фреймов 802.3x Иногда снижает потери пакетов Иногда выгодно для tail latency Согласовывать с проектированием сети в целом
Priority & VLAN Тегирование 802.1p / 802.1Q Позволяет использовать VLAN/QoS Работает как простой L2 Только когда действительно нужно
VMQ / SR-IOV Поддержка NIC для Hyper-V / виртуализации Влияет на пропускную способность/CPU виртуальных машин Как обычный хост становится проще Для хостов Hyper-V
EEE / Green Ethernet Режим Low-Power Idle для энергосбережения Энергопотребление снижается, но иногда возникают проблемы совместимости Энергопотребление растёт, но иногда стабильнее Это не настройка скорости
Selective Suspend Перевод NIC в режим низкого энергопотребления при простое Снижает энергопотребление Иногда повышает стабильность выхода из сна Кандидат на отключение при устранении неполадок
Wake on Magic Packet / Pattern Match Условия пробуждения во время сна Позволяет удалённо включить компьютер Легче предотвратить нежелательное пробуждение Включать только при необходимости

5. Настройки, связанные с линком и размером фрейма

5.1 Speed & Duplex

Эта настройка отвечает за согласование скорости линка и режима полного/половинного дуплекса. Встречающиеся названия: Speed & Duplex, Link Speed, Link Speed & Duplex.

Что делает эта настройка

В Ethernet NIC и оборудование на другом конце договариваются, на какой скорости и в каком режиме дуплекса вести обмен.

Часто встречаются такие варианты:

  • Auto Negotiation
  • 100 Mbps Full Duplex
  • 1.0 Gbps Full Duplex
  • 2.5 Gbps Full Duplex
  • 10 Gbps Full Duplex

Что меняется при изменении настройки

Если выставить Auto

  • Между современными устройствами это, как правило, самый стабильный вариант
  • Начиная с 1000BASE-T Auto зачастую предполагается как режим по умолчанию
  • Это также хорошо согласуется с EEE и согласованием master/slave

Если зафиксировать вручную

  • Иногда улучшает совместимость со старыми коммутаторами или оборудованием, у которого режим зафиксирован принудительно
  • Однако состояние, при котором одна сторона зафиксирована, а другая — на Auto, — источник проблем
  • Duplex mismatch приводит к падению скорости, повторным передачам и аномальным задержкам

Базовая политика на практике

В обычном случае достаточно оставить Auto. «Раз не выходит 1Gbps — зафиксируем 1Gbps Full» выглядит решительно, но чаще всего бьёт мимо цели.

5.2 Jumbo Packet / Jumbo Frames

Это настройка использования Ethernet-фреймов большего, чем стандартный, размера. Встречающиеся названия: Jumbo Packet, Jumbo Frames, Jumbo Packet Size.

Что делает эта настройка

Обычный Ethernet чаще всего рассчитан на MTU 1500. При включении Jumbo Frame становится доступным использование крупных фреймов размером около 9000 байт.

Однако здесь много ловушек, связанных с названиями.

  • Драйвер может показывать размер фрейма, например 9014 Bytes
  • ОС и утилиты могут смотреть на это с точки зрения L3, например MTU 9000
  • Коммутатор может считать с учётом CRC и VLAN-тега

Если сравнивать эти числа просто «в лоб», попасться — совершенно обычное дело.

Что меняется при изменении настройки

Увеличение / включение

  • При передаче больших данных снижается число пакетов
  • Меньше обработок заголовков
  • CPU-нагрузка обычно снижается
  • В то же время время занятости канала одним пакетом увеличивается
  • Если где-то на пути настройка не поддерживается, это приводит к отбрасыванию пакетов или фрагментации

Возврат к стандарту / отключение

  • Максимальная совместимость
  • Больше число пакетов
  • При больших передачах обычно растут CPU-нагрузка и накладные расходы на заголовки

Базовая политика на практике

Jumbo имеет смысл только тогда, когда согласован end-to-end:

  • ваш собственный NIC
  • NIC на другой стороне
  • коммутаторы на пути
  • накладные расходы VLAN или виртуальных коммутаторов, если они есть на пути

Если хоть один из этих элементов остаётся на 1500, эффекта не будет — более того, это станет источником сбоев.

5.3 Gigabit Master / Slave Mode

Эта настройка для 1000BASE-T определяет, какая сторона выступает master и задаёт тактовую синхронизацию, а какая — slave. На обычном ПК её практически никогда не трогают.

Базовая политика

  • Базовый вариант — Auto
  • Оценивать изменение стоит только при проблемах с качеством линка с конкретным старым оборудованием
  • Пока нет указаний производителя, не рассматривайте её как рычаг настройки производительности

Настройки вроде Wait for Link определяют, ждёт ли драйвер успешного завершения auto negotiation перед тем, как сообщить состояние линка. Log Link State Event — диагностическая настройка, которая записывает события подключения/отключения линка в журнал событий.

Базовая политика

  • На обычном ПК можно оставить значения по умолчанию
  • Эти настройки важнее не для самой производительности, а для диагностики поведения при загрузке и failover
  • Не тот пункт, который стоит трогать в первую очередь

6. Настройки, влияющие на загрузку CPU, пропускную способность и задержку

Это область, которая выглядит наиболее «многообещающей». Она действительно часто влияет на результат, но направление эффекта чётко расходится в зависимости от параметра.

6.1 Checksum Offload

Настройка, переносящая вычисление контрольных сумм IP/TCP/UDP на NIC.

Базовая политика

  • Как правило, включено
  • Оставляйте включённым, если хотите снизить нагрузку на CPU
  • Ошибки контрольной суммы в захваченном трафике часто являются лишь следствием offload-обработки
  • Временное отключение для изоляции проблем совместимости допустимо

6.2 Large Send Offload (LSO) / TSO / Offload TCP Segmentation

Настройка, при которой большие TCP-отправления разбиваются на мелкие фреймы на стороне NIC.

На что влияет

  • Пропускная способность при интенсивной отправке
  • Снижение загрузки CPU
  • Крупные непрерывные передачи

Базовая политика

  • Обычно включено
  • При подозрении на проблему совместимости с конкретным приложением или драйвером временно отключите и сравните разницу

6.3 Receive Segment Coalescing (RSC) / Large Receive Offload

Настройка, объединяющая несколько TCP-сегментов на приёмной стороне.

На что влияет

  • Пропускная способность приёма
  • Снижение загрузки CPU

На что обратить внимание

  • Может быть невыгодной для низкой задержки или наблюдения на уровне отдельных пакетов
  • Немного меняет интерпретацию захваченного трафика и данных о времени

Базовая политика

  • Включайте, если важна пропускная способность приёма
  • Кандидат на оценку, если важна задержка мелких запросов/ответов

6.4 Новые offload-технологии для UDP (USO / URO)

На современных NIC и в новых версиях ОС для отправки/приёма UDP тоже могут появляться новые offload-настройки.

Базовая политика

  • Даже если такие пункты есть, для начала не отклоняйтесь от значений по умолчанию
  • Измеряйте эффект только когда драйвер достаточно новый, а целевая нагрузка чётко определена
  • При устранении неполадок не трогайте их без крайней необходимости

6.5 Receive Side Scaling (RSS)

Настройка, распределяющая обработку приёма по нескольким CPU. В многоядерных системах она весьма важна.

Базовая политика

  • По умолчанию включено на многоядерных системах
  • В первую очередь проверяйте её при симптомах «загрузки одного-единственного CPU»
  • Она часто выходит на первый план и перед Hyper-V, и перед задачами с высокой пропускной способностью

6.6 RSS Queues / RSS Processors / RSS Profile

Параметры, определяющие степень параллелизма RSS.

Базовая политика

  • Начинайте со значений по умолчанию
  • Увеличивайте только после того, как увидите загрузку CPU или перекос очередей
  • Бездумное увеличение до максимума может повысить нагрузку от прерываний и DPC

6.7 Interrupt Moderation / Interrupt Moderation Rate

Настройка, ограничивающая частоту прерываний и обменивающая нагрузку CPU на задержку.

Тенденции

  • Выше / Adaptive → CPU обычно разгружается, но задержка обычно растёт
  • Ниже / Off → Задержка обычно снижается, но обычно растёт нагрузка CPU/DPC

Базовая политика

  • Отправная точка — значение по умолчанию / Adaptive
  • Если беспокоит джиттер мелких пакетов, оцените Low / Off
  • Для больших передач значение по умолчанию обычно более разумный выбор

6.8 Receive Buffers / Receive Descriptors и Transmit Buffers / Transmit Descriptors

Настройка, изменяющая глубину кольцевых буферов.

На что влияет

  • Устойчивость к всплескам нагрузки
  • Устойчивая пропускная способность
  • Предотвращение потери пакетов

Побочные эффекты

  • Растёт расход памяти
  • Более глубокие очереди могут увеличивать задержку ожидания в очереди

Базовая политика

  • Увеличивайте только тогда, когда видны потери пакетов или нехватка буфера
  • Избегайте выставления максимума «на всякий случай»

6.9 Flow Control

Настройка, связанная с отправкой и приёмом pause-фреймов 802.3x.

Базовая политика

  • Кандидат, если нужно снизить потери пакетов
  • Однако pause-фреймы иногда распространяют перегрузку в другое место сети
  • В системах с низкой задержкой подходите к ней осторожно
  • Рассматривайте вместе с проектированием сети в целом

7. Настройки VLAN, QoS и виртуализации

7.1 Priority & VLAN / Packet Priority & VLAN / NDIS QoS

Область, отвечающая за 802.1Q VLAN и приоритеты 802.1p.

Базовая политика

  • Обращайте на неё внимание только при реальном использовании VLAN/QoS
  • В простой конфигурации access-порта можно оставить значения по умолчанию
  • Конфигурация, где теги проставляются самопроизвольно, усложняет диагностику — будьте внимательны

7.2 VMQ / VMMQ / SR-IOV

Эта настройка приобретает смысл только на хостах Hyper-V и платформах виртуализации.

Базовая политика

  • Не рассматривайте её как обычную настройку тюнинга десктопа
  • На хосте Hyper-V оценивайте её вместе с конфигурацией vSwitch, распределением очередей и настройками на стороне гостя
  • Глядя только на одну сторону, правильный ответ найти трудно

7.3 RDMA / DCB / PFC — отдельный мир

Эта область, включающая SMB Direct и lossless Ethernet, — совершенно отдельный мир.

Базовая политика

  • Рассматривайте отдельно от обычной настройки десктопных 1GbE/2.5GbE
  • Проверяйте вместе с материалами производителя и проектированием на стороне коммутатора

8. Настройки энергосбережения, сна и Wake on LAN

8.1 Energy Efficient Ethernet (EEE) / Green Ethernet

Настройка для снижения энергопотребления линка в режиме простоя, ради экономии энергии.

Как на неё смотреть

  • Это не настройка ускорения
  • Она влияет на энергопотребление
  • В зависимости от оборудования на другом конце и состояния кабеля она становится кандидатом на изоляцию при нестабильности линка или переходе на 100Mbps

Базовая политика

  • Для общего использования можно оставить значения по умолчанию
  • При нестабильности линка, переходе на 100Mbps или приоритете низкой задержки — в первую очередь кандидат на отключение при изоляции

8.2 Selective Suspend / Device Sleep / управление линком в режиме ожидания

Проще говоря, это настройка того, насколько глубоко NIC разрешено «засыпать» в режиме простоя или сна системы.

Базовая политика

  • На ноутбуках начинайте со значений по умолчанию
  • При проблемах с выходом из сна подозревайте её в первую очередь
  • На управляющих оборудованием ПК и при работе 24/7 зачастую понятнее просто отключить её

8.3 Wake on Magic Packet / Wake on Pattern Match

Настройка для пробуждения спящего ПК по сети.

Базовая политика

  • Если нужен Wake on LAN — включите Magic Packet
  • Если не нужен — отключите
  • Pattern Match — только когда необходимость очевидна

Совершенно обычное дело, когда включения только на NIC недостаточно для пробуждения. Проверяйте согласованность и на стороне BIOS/UEFI, и на вкладке Power Management.

8.4 ARP Offload / NS Offload

Настройка, при которой NIC берёт на себя минимальные ответы даже во время сна системы.

Базовая политика

  • Обычно достаточно включённого состояния / значения по умолчанию
  • Чаще всего её временно трогают при изоляции проблем совместимости, связанных со сном

8.5 Настройки на вкладке Power Management

Помимо вкладки Advanced, в свойствах NIC есть вкладка Power Management (Управление электропитанием). Она тоже неприметно, но важна.

Чаще всего встречаются такие три пункта:

  • Allow the computer to turn off this device to save power
  • Allow this device to wake the computer
  • Only allow a magic packet to wake the computer

Базовая политика

  • При проблемах с выходом из сна в первую очередь подозревайте Allow the computer to turn off this device...
  • Чтобы избежать ложных пробуждений, включите Only allow a magic packet...
  • Если Wake on LAN вообще не нужен, все настройки пробуждения можно отключить

9. Другие настройки, которые часто встречаются, но редко требуют вмешательства

9.1 Network Address / Locally Administered Address

Настройка для ручной перезаписи MAC-адреса.

Базовая политика

  • Обычно её не трогают
  • Это не настройка производительности
  • Используется только в лабораторных условиях или при особых требованиях

9.2 Adaptive Inter-Frame Spacing

Довольно старая настройка. В современном коммутируемом полнодуплексном Ethernet она не играет главной роли.

Базовая политика

  • В современной обычной локальной сети оставляйте значение по умолчанию
  • Трогайте только при наличии указаний производителя для старого оборудования или особых условий

9.3 Header Data Split

Настройка, в основном для серверов, которая помогает обработке CPU за счёт раздельной работы с заголовком пакета и полезной нагрузкой.

Базовая политика

  • Для серверов / для конкретных нагрузок
  • На обычных клиентских машинах оставляйте значение по умолчанию

9.4 Low Latency Interrupts

У некоторых производителей встречается пункт вроде Low Latency Interrupts.

Базовая политика

  • Используйте только тогда, когда измерения подтверждают выигрыш
  • Не та настройка, которую включают «по ощущениям»

9.5 Устаревшие пункты вроде TCP Chimney Offload / IPsec Task Offload

На старых NIC и драйверах такие пункты иногда встречаются.

Базовая политика

  • Правильный ответ сегодня — не трогать, не использовать
  • Не следуйте за старой документацией или соображениями совместимости из прошлого

10. Общие рекомендации по целям

10.1 Обычный настольный ПК / ноутбук

  • Speed & Duplex: Auto
  • MTU / Jumbo: 1500 / отключено
  • Checksum Offload: включено
  • LSO: включено
  • RSC: включено
  • RSS: включено
  • Interrupt Moderation: значение по умолчанию / Adaptive
  • Buffers: значения по умолчанию
  • Flow Control: значения по умолчанию
  • EEE / Green Ethernet: значения по умолчанию
  • Selective Suspend: значения по умолчанию
  • Wake on LAN: только при необходимости

Иными словами, базовое правило — для начала не отклоняться от значений по умолчанию.

10.2 NAS / резервное копирование / копирование больших объёмов

  • Speed & Duplex: Auto
  • Jumbo: оценить, если можно согласовать выделенный путь
  • Checksum Offload: включено
  • LSO: включено
  • RSC: включено
  • RSS: включено
  • RSS queues: немного увеличить при необходимости
  • Receive / Transmit Buffers: немного увеличить при наличии потерь пакетов
  • Interrupt Moderation: значение по умолчанию / чуть выше
  • EEE: оценить отключение, если важнее стабильность

При больших передачах обычно эффективны снижение числа пакетов, снижение нагрузки на CPU и предотвращение нехватки очередей.

10.3 Промышленные камеры / управление оборудованием / приоритет низкой задержки

  • Speed & Duplex: по умолчанию Auto; при необходимости зафиксировать в соответствии с оборудованием на другом конце
  • Jumbo: оценить, если согласованы камера / NIC / коммутатор
  • Checksum Offload: включить в первую очередь
  • LSO: временно оценить отключение при подозрении на проблему совместимости при отправке
  • RSC: кандидат на отключение, если приоритет — низкая задержка или наблюдение
  • Interrupt Moderation: оценить Low / Off
  • Buffers: не увеличивать чрезмерно
  • Flow Control: требуется оценка побочных эффектов pause-фреймов
  • EEE / Green Ethernet: кандидат на отключение
  • Selective Suspend / управление питанием: кандидат на отключение

Настройки, оптимизированные под пропускную способность, не всегда выгодны для низкой задержки.

10.4 Хосты Hyper-V

  • VMQ / VMMQ / SR-IOV: оценивать в зависимости от конфигурации
  • RSS: важен для трафика на стороне хоста
  • RSC: ограничен конфигурацией vSwitch
  • QoS / VLAN: согласовывать с проектированием vSwitch
  • Flow Control / PFC: рассматривать вместе с проектированием хранилища / RDMA

Это не настройка десктопа, а проектирование платформы виртуализации.

10.5 Временные настройки для устранения неполадок

При изоляции дефекта эффективно временно вернуться к простому базовому состоянию.

  • Speed & Duplex: Auto
  • MTU: 1500
  • Jumbo: отключено
  • EEE: отключено
  • LSO: временно отключено
  • RSC: временно отключено
  • Interrupt Moderation: значение по умолчанию или ниже
  • Wake / энергосбережение: отключено, если не нужно
  • Настройки до изменения: обязательно сохранить

При изоляции проблемы упрощение поведения важнее оптимизации производительности.

11. С чего начать проверку по типу симптома

11.1 Должно быть 1Gbps / 2.5Gbps, а получается 100Mbps

Порядок проверки примерно такой.

  1. Кабель
  2. Док-станция / USB NIC / переходник
  3. Порт на стороне коммутатора
  4. Обновление драйвера
  5. EEE / Green Ethernet
  6. Возврат Speed & Duplex к Auto
  7. Если ничего не помогло — попробовать фиксацию, согласованную с оборудованием на другом конце

Сразу переходить к ручной фиксации — это последний шаг, а не первый.

11.2 Большие передачи медленные, но ping в норме

Стоит проверить следующее.

  • Checksum Offload
  • LSO
  • RSC
  • RSS
  • Receive / Transmit Buffers
  • Jumbo Frame (если путь выделенный)
  • Потери пакетов / ошибки в статистике NIC

Это проблема класса пропускной способности, поэтому обычно помогают Jumbo, настройка очередей и offload.

11.3 Большая задержка мелких запросов/ответов, беспокоит джиттер

Стоит проверить следующие пять пунктов.

  • Interrupt Moderation
  • RSC
  • EEE
  • Flow Control
  • Не завышены ли буферы

В этой области оптимизации, ориентированные на пакетную обработку, могут, наоборот, увеличить ощутимую задержку.

11.4 После выхода из сна NIC исчезает / несколько секунд нет связи

В первую очередь, с фокусом на электропитание, стоит проверить эти пять пунктов.

  • Selective Suspend
  • Настройки, связанные с Device Sleep / Standby
  • Allow the computer to turn off this device... на вкладке Power Management
  • Прошивка док-станции / USB NIC
  • Комбинация настроек пробуждения

Проблемы с выходом из сна чаще связаны с управлением электропитанием, чем с самим NIC.

11.5 В захвате пакетов видно множество ошибок контрольной суммы

Прежде чем поспешно заявлять «линия сломана», проверьте следующее.

  • Включён ли Checksum Offload
  • Включён ли LSO
  • Захват выполнен до отправки или уже на канале
  • Совпадает ли картина при просмотре с другого хоста или через зеркальный порт

Ошибки контрольной суммы в локальном захвате действительно очень часто — это просто то, как выглядит offload-обработка.

11.6 Только виртуальные машины Hyper-V работают медленно / перекос по CPU

Смотреть нужно не только на «десктопный» RSS.

  • VMQ / VMMQ
  • SR-IOV
  • Привязка vSwitch
  • VLAN / QoS
  • Разделение работы между RSS на стороне хоста и очередями на стороне VM

В виртуализации проще разобраться, если изобразить схематично, кто именно обрабатывает пакеты.

12. Практические заметки при проверке и изменении настроек через PowerShell

12.1 Сначала сохраните текущее состояние

Резервная копия перед изменением важна.

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Select-Object Name, DisplayName, DisplayValue, RegistryKeyword, RegistryValue |
  Export-Csv .\nic-advanced-backup.csv -NoTypeInformation -Encoding UTF8

12.2 Просмотр списка

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Sort-Object DisplayName |
  Format-Table DisplayName, DisplayValue, RegistryKeyword -Auto

12.3 Просмотр RSS / RSC / статистики

Get-NetAdapterRss -Name "Ethernet"
Get-NetAdapterRsc -Name "Ethernet"
Get-NetAdapterStatistics -Name "Ethernet"

12.4 Примеры изменения

Реальные отображаемые имена различаются для каждого NIC, поэтому сначала посмотрите список, а затем меняйте.

# Пример: изменение Jumbo Packet (значение отличается для каждого NIC)
Set-NetAdapterAdvancedProperty -Name "Ethernet" `
  -DisplayName "Jumbo Packet" `
  -DisplayValue "9014 Bytes"
# Пример: настройка количества приёмных очередей RSS
Set-NetAdapterRss -Name "Ethernet" -NumberOfReceiveQueues 4

12.5 Проверка связи для Jumbo

# Эквивалент стандартного MTU 1500
ping <IP-адрес-получателя> -f -l 1472

# Эквивалент MTU 9000
ping <IP-адрес-получателя> -f -l 8972

1472 и 8972 — это размер полезной нагрузки за вычетом заголовков IP/ICMP. Эти числа в ping не совпадают с 9014 Bytes, которые показывает интерфейс драйвера.

12.6 Практические заметки

  • Для части настроек требуется отключение/включение адаптера или перезагрузка
  • DisplayName иногда бывает локализован
  • Даже у одного производителя названия пунктов могут меняться в зависимости от версии драйвера
  • Если автоматизируете через PowerShell, безопаснее сначала перечислить значения на реальной машине, а уже потом писать скрипт

13. Итог

Если смотреть только на названия пунктов, все расширенные настройки NIC в Windows выглядят «мощно». Но на деле это мир, где правильный ответ зависит от того, за что вы боретесь — пропускную способность, задержку, CPU, энергопотребление или совместимость.

Ключевые моменты этой статьи:

  • Speed & Duplex по умолчанию — Auto
  • Jumbo — только когда согласован end-to-end
  • Checksum / RSS / LSO / RSC: как правило, сильнее всего значения по умолчанию
  • Interrupt Moderation — компромисс между пропускной способностью и задержкой
  • Buffers — увеличивать ровно настолько, насколько нужно
  • EEE / Selective Suspend / настройки Wake — это вопрос энергопотребления и выхода из сна
  • VMQ / SR-IOV — вопрос Hyper-V
  • Устаревшие offload-пункты не трогать

И самое важное — вот эти три пункта.

  1. Решить, что именно вы хотите улучшить
  2. Менять по одному параметру за раз
  3. Сравнивать результат до и после по цифрам

Настройки NIC — это не волшебный переключатель ускорения. Однако, если цель выбрана верно, они дают заметный эффект. И наоборот, если цель выбрана неверно, они столь же откровенно бьют в обратную сторону.

14. Источники

Ниже перечислены официальные и вендорские материалы, на которые мы опирались при написании этой статьи. В терминологии Windows и драйверов NIC много расхождений, поэтому в конечном счёте безопаснее сверяться с названием и версией драйвера конкретно вашего NIC.

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

Не оборачивайте HttpClient в using ── практика HTTP-взаимодействия в бизнес-приложениях на C# (паттерны создания, тайм-ауты, повторные попытки)

HttpClient в C#, создаваемый через using при каждом запросе, приводит к исчерпанию сокетов, а статический HttpClient перестаёт учитывать ...

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

Технические консультации и ревью дизайна

Эта тема требует анализа не только самих настроек NIC, но и всего пути передачи данных, паттернов отправки/приёма приложения и условий длительной эксплуатации, поэтому она хорошо сочетается с технической консультацией и ревью архитектуры.

Частые вопросы

Вопросы, которые часто возникают при консультациях по теме статьи.

Стоит ли отключать Large Send Offload (LSO)?
Как правило, эту настройку стоит оставлять включённой. LSO — это механизм, при котором большие TCP-отправления разбиваются на мелкие фреймы на стороне NIC, что помогает пропускной способности при интенсивной отправке и снижает загрузку CPU. Бездумное отключение обычно приводит к лишней нагрузке на CPU. Отключение стоит рассматривать либо в целях изоляции — временно выключить и сравнить разницу при подозрении на проблему совместимости с конкретным приложением или драйвером, либо когда нужно оценить совместимость передачи данных, например, для промышленных камер или систем управления оборудованием. Даже если настройка была отключена в рамках изоляции проблемы, базовое правило — вернуть её к значению по умолчанию, как только выяснится, что причина в другом.
Что такое Receive Segment Coalescing (RSC)? Стоит ли его отключать?
RSC — это настройка, при которой несколько TCP-сегментов объединяются на стороне NIC на приёмной стороне; её также называют Large Receive Offload. Поскольку она снижает пропускную способность приёма и загрузку CPU, базовая политика — оставлять её включённой, если приём данных важнее. С другой стороны, она может быть невыгодна для низкой задержки или наблюдения на уровне отдельных пакетов, а также немного меняет интерпретацию захваченного трафика и данных о времени. Если нужно снизить задержку мелких запросов/ответов, или в средах, где приоритет отдаётся низкой задержке и наблюдению, отключение становится кандидатом для оценки. Текущее состояние можно проверить командой Get-NetAdapterRsc.
Должно быть 1Gbps, но линк устанавливается на 100Mbps — что проверить?
Сразу фиксировать Speed & Duplex вручную — это крайняя мера. Порядок проверки такой: сначала кабель, затем док-станция / USB NIC / переходник, порт на стороне коммутатора, обновление драйвера, изоляция EEE / Green Ethernet, возврат Speed & Duplex к Auto, и только если ничего не помогло — фиксация, согласованная с оборудованием на другом конце. Дело в том, что переход на 100Mbps и обрывы линка чаще вызваны физическим уровнем и оборудованием на другом конце, чем настройками NIC. Состояние, при котором одна сторона зафиксирована, а другая — на Auto, вызывает duplex mismatch и приводит к падению скорости, повторным передачам и аномальным задержкам.
В итоге какие расширенные настройки NIC в Windows стоит включать?
Для обычного настольного ПК или ноутбука базовое правило — для начала не отклоняться от значений по умолчанию. Speed & Duplex — Auto, Checksum Offload / LSO / RSC / RSS — как правило включены или на значениях по умолчанию, Jumbo Packet используется только тогда, когда NIC, оборудование на другом конце и промежуточные коммутаторы согласованы end-to-end. EEE и Selective Suspend — это настройки энергосбережения, а не способ ускорить работу. При внесении изменений железное правило — сначала решить, что именно вы хотите улучшить (пропускную способность, задержку, CPU, энергопотребление), затем менять только один параметр за раз и сравнивать результат до и после по цифрам.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.

Публичные ссылки

Вернуться в блог