Настройка производительности сетевых адаптеров

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, версии 21H2 и 20H2

Используйте сведения в этом разделе, чтобы настроить сетевые адаптеры производительности для компьютеров под управлением Windows Server 2016 и более поздних версий. Если сетевые адаптеры предоставляют параметры настройки, эти параметры можно использовать для оптимизации пропускной способности сети и использования ресурсов.

Правильные параметры настройки сетевых адаптеров зависят от следующих переменных:

  • сетевой адаптер и набор его функций;
  • Тип рабочей нагрузки, выполняемой сервером
  • аппаратные и программные ресурсы сервера;
  • задачи настройки сервера.

В следующих разделах описывается ряд параметров настройки производительности.

Включение функций разгрузки

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

Внимание

Не используйте функции разгрузки IPsec Task Offload или TCP Chimney Offload. Эти технологии устарели в Windows Server 2016 и могут негативно повлиять на производительность сервера и сети. Кроме того, эти технологии могут не поддерживаться корпорацией Майкрософт в будущем.

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

Примечание.

Для некоторых сетевых адаптеров требуется включить функции разгрузки независимо от пути отправки и получения.

Включение масштабирования на стороне получения (RSS) для веб-серверов

RSS способно повысить веб-масштабируемость и производительность, когда число сетевых адаптеров меньше количества логических процессоров на сервере. Когда весь веб-трафик проходит через сетевые адаптеры с поддержкой RSS, сервер может обрабатывать входящие веб-запросы из разных подключений одновременно по разным ЦП.

Внимание

Избегайте использования сетевых адаптеров, отличных от RSS, и сетевых адаптеров с поддержкой RSS на одном сервере. Из-за логики распределения нагрузки в RSS и протоколе http производительность может быть значительно снижена, если сетевой адаптер, не поддерживающий RSS, принимает веб-трафик на сервере с одним или несколькими сетевыми адаптерами с поддержкой RSS. В этом случае следует использовать сетевые адаптеры с поддержкой RSS или отключить RSS на вкладке "Дополнительные свойства сетевого адаптера".

Чтобы определить, поддерживается ли сетевой адаптер RSS, можно просмотреть сведения о RSS на вкладке "Дополнительные свойства сетевого адаптера".

Профили RSS и очереди RSS

Стандартный профиль RSS — NUMAStatic, который отличается от используемого по умолчанию предыдущих версий Windows. Прежде чем приступить к использованию профилей RSS, просмотрите доступные профили, чтобы понять, когда они полезны и как они применяются к сетевой среде и оборудованию.

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

Увеличение ресурсов сетевого адаптера

Для сетевых адаптеров, которые позволяют вручную настраивать ресурсы, такие как получение и отправка буферов, следует увеличить выделенные ресурсы.

В некоторых сетевых адаптерах устанавливаются небольшие буферы приема для экономии выделенной памяти от узла. Это ведет к потере пакетов и снижению производительности. Поэтому для сценариев с интенсивным приемом рекомендуется увеличить буфер приема до максимума.

Примечание.

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

Включение модерации прерываний

Для управления модерацией прерываний некоторые сетевые адаптеры предоставляют различные уровни модерации прерываний, различные параметры объединения буферов (иногда отдельно для буферов отправки и получения) или обоих.

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

Настройка производительности для обработки пакетов с низкой задержкой

Многие сетевые адаптеры позволяют настраивать параметры для оптимизации системной задержки. Задержка — это время между обработкой входящего пакета сетевым драйвером и отправкой этого пакета обратно. Обычно это время измеряется в микросекундах. Для сравнения время передачи пакетов на длинные расстояния обычно измеряется в миллисекундах (порядка величины больше). Эта настройка не сокращает время прохождения пакета.

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

  • Установите для компьютера BIOS высокий уровень производительности с отключенными состояниями C. Однако имейте в виду, что это зависит от системы и BIOS, и некоторые системы обеспечивают большую производительность, если операционная система управляет электропитанием. Вы можете проверка и настроить параметры управления питанием из Параметры или с помощью команды powercfg. Дополнительные сведения см. в разделе "Параметры командной строки Powercfg".

  • Задайте для профиля управления питанием операционной системы высокий уровень производительности.

    Примечание.

    Этот параметр не работает должным образом, если системный BIOS установлен для отключения управления питанием операционной системы.

  • Включите статические разгрузки. Например, включите параметры контрольной суммы UDP, контрольных сумм TCP и отправки больших отключений (LSO).

  • Если трафик многопотоковый, например при получении многопотокового многоадресного трафика, включите RSS.

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

  • Обрабатывайте прерывания сетевого адаптера и DPC на основном процессоре, который совместно использует процессорный кэш с ядром, которое используется программой (пользовательским потоком), обрабатывающей пакет. Для передачи процесса конкретным логическим процессорам можно использовать настройку фиксации ЦП вместе с настройкой RSS. Использование одного ядра для прерываний, DPC и пользовательского потока ведет к снижению производительности из-за увеличения нагрузки, поскольку ISR, DPC и поток будут конкурировать за ядро.

Прерывания управления системой

Во многих аппаратных системах используются прерывания управления системой (SMI) для различных функций обслуживания, таких как сообщения об ошибках в памяти кода исправления ошибок (ECC), поддержание устаревшей совместимости USB, управление вентилятором и управление параметрами питания, контролируемыми BIOS.

SMI является самым приоритетным прерыванием в системе и помещает ЦП в режим управления. Этот режим преумножет все остальные действия, пока SMI запускает подпрограмму службы прерываний, обычно содержащуюся в BIOS.

К сожалению, это поведение может привести к всплескам задержки в 100 микросекундах или более.

Когда необходимо обеспечить минимальную задержку, следует запросить у поставщика оборудования версию BIOS, в которой прерывания SMI имеют наименьший возможный приоритет. Эти версии BIOS часто называются "низкой задержкой BIOS" или "SMI free BIOS". В некоторых случаях для аппаратной платформы невозможно полностью исключить активность SMI, так как она используется для управления важными функциями (например, вентиляторами охлаждения).

Примечание.

Операционная система не может управлять SMIs, так как логический процессор работает в специальном режиме обслуживания, что предотвращает вмешательство операционной системы.

Настройка производительности TCP

Для настройки производительности TCP можно использовать следующие элементы.

Автоматическая настройка окна получения TCP

В Windows Vista, Windows Server 2008 и более поздних версиях Windows стек сети Windows использует функцию, которая называется уровнем автоматической настройки окна приема TCP для согласования размера окна получения TCP. Эта функция может согласовывать определенный размер окна получения для каждого tcp-соединения во время подтверждения TCP.

В более ранних версиях Windows сетевой стек Windows использовал окно получения фиксированного размера (65 535 байт), которое ограничивало общую пропускную способность для подключений. Общая достижимая пропускная способность TCP-подключений может ограничить сценарии использования сети. Автоматическое настройку окна приема TCP позволяет этим сценариям полностью использовать сеть.

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

Общая достижимая пропускная способность в байтах размера окна получения TCP в байтах = * (1 / задержка подключения в секундах)

Например, для подключения с задержкой в 10 мс общая достижимая пропускная способность составляет всего 51 Мбит/с. Это значение разумно для крупной корпоративной сетевой инфраструктуры. Однако с помощью автоматической настройки окна получения подключение может достичь полной скорости подключения 1 Гбит/с.

Некоторые приложения определяют размер окна получения TCP. Если приложение не определяет размер окна получения, скорость связи определяет размер следующим образом:

  • Менее 1 мегабит в секунду (Мбит/с): 8 килобайт (КБ)
  • 1 Мбит/с до 100 Мбит/с: 17 КБ
  • 100 Мбит/с до 10 гигабит в секунду (Гбит/с): 64 КБ
  • 10 Гбит/с или быстрее: 128 КБ

Например, на компьютере с установленным сетевым адаптером размером 1 Гбит/с размер окна должен быть 64 КБ.

Эта функция также обеспечивает полное использование других функций для повышения производительности сети. К этим функциям относятся остальные параметры TCP, определенные в RFC 1323. С помощью этих функций компьютеры под управлением Windows могут согласовывать размеры окна приема TCP, которые меньше, но масштабируются по определенному значению в зависимости от конфигурации. Это поведение упрощает обработку размеров сетевых устройств.

Примечание.

Вы можете столкнуться с проблемой, при которой сетевое устройство не соответствует параметру масштабирования окна TCP, как определено в RFC 1323 и, следовательно, не поддерживает коэффициент масштабирования. В таких случаях обратитесь к этому КБ 93430, сетевое подключение завершается сбоем при попытке использовать Windows Vista за устройством брандмауэра или обратитесь в службу поддержки для поставщика сетевых устройств.

Проверка и настройка уровня автоматической настройки окна получения TCP

Команды netsh или командлеты Windows PowerShell можно использовать для проверки или изменения уровня автоматического настройки окна получения TCP.

Примечание.

В отличие от версий Windows с предварительной датой Windows 10 или Windows Server 2019, вы больше не можете использовать реестр для настройки размера окна получения TCP. Дополнительные сведения о устаревших параметрах см. в разделе "Устаревшие параметры TCP".

Примечание.

Подробные сведения о доступных уровнях автоматической настройки см. в разделе "Уровни автоматического настройки".

Использование netsh для проверки или изменения уровня автоматической настройки

Чтобы просмотреть текущие параметры, откройте окно командной строки и выполните следующую команду:

netsh interface tcp show global

Выходные данные этой команды должны выглядеть следующим образом:

Querying active state...

TCP Global Parameters
-----
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
Fast Open : enabled
Fast Open Fallback : enabled
Pacing Profile : off

Чтобы изменить параметр, выполните следующую команду в командной строке:

netsh interface tcp set global autotuninglevel=<Value>

Примечание.

В приведенной выше команде <значение> представляет новое значение для уровня автоматической настройки.

Дополнительные сведения об этой команде см. в командах Netsh для протокола управления передачей интерфейса.

Использование PowerShell для проверки или изменения уровня автонастройки

Чтобы просмотреть текущие параметры, откройте окно PowerShell и выполните следующий командлет.

Get-NetTCPSetting | Select SettingName,AutoTuningLevelLocal

Выходные данные этого командлета должны выглядеть следующим образом.

SettingName           AutoTuningLevelLocal
-----------          --------------------
Automatic
InternetCustom       Normal
DatacenterCustom     Normal
Compat               Normal
Datacenter           Normal
Internet             Normal

Чтобы изменить этот параметр, выполните следующий командлет в командной строке PowerShell.

Set-NetTCPSetting -AutoTuningLevelLocal <Value>

Примечание.

В приведенной выше команде <значение> представляет новое значение для уровня автоматической настройки.

Дополнительные сведения об этих командлетах см. в следующих статьях:

Уровни автоматической настройки

Вы можете настроить автоматическое настройку окна на любой из пяти уровней. Уровень по умолчанию — "Обычный". В следующей таблице описаны уровни.

Уровень Шестнадцатеричное значение Комментарии
Обычный (по умолчанию) 0x8 (коэффициент масштабирования 8) Установите окно получения TCP для увеличения размера, чтобы соответствовать почти всем сценариям.
Выключено Нет доступных коэффициентов масштабирования Задайте окно получения TCP по умолчанию.
С ограниченным доступом 0x4 (коэффициент масштабирования 4) Задайте для окна получения TCP значение по умолчанию, но ограничивает такой рост в некоторых сценариях.
Строго ограниченное 0x2 (коэффициент масштабирования 2) Задайте для окна получения TCP значение, превышающее значение по умолчанию, но сделайте это очень консервативно.
Экспериментальный 0xE (коэффициент масштабирования 14) Установите окно получения TCP, чтобы вырасти для удовлетворения экстремальных сценариев.

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

  • Уровень автонастройки: обычный (состояние по умолчанию)

    Frame: Number = 492, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2667, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60975, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=4075590425, Ack=0, Win=64240 ( Negotiating scale factor 0x8 ) = 64240
    SrcPort: 60975
    DstPort: Microsoft-DS(445)
    SequenceNumber: 4075590425 (0xF2EC9319)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x8 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x8 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 8 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Уровень автонастройки: отключен

    Frame: Number = 353, Captured Frame Length = 62, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2576, Total IP Length = 48
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60956, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2315885330, Ack=0, Win=64240 ( ) = 64240
    SrcPort: 60956
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2315885330 (0x8A099B12)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 112 (0x70)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( ) = 64240 ----------------------------------------> TCP Receive Window set as 64K as per NIC Link bitrate. Note there is no Scale Factor defined. In this case, Scale factor is not being sent as a TCP Option, so it will not be used by Windows.
    Checksum: 0x817E, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Уровень автонастройки: ограниченный

    Frame: Number = 3, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2319, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60890, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1966088568, Ack=0, Win=64240 ( Negotiating scale factor 0x4 ) = 64240
    SrcPort: 60890
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1966088568 (0x75302178)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x4 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x4 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 4 -------------------------------> Scale factor, defined by AutoTuningLevel.
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Уровень автонастройки: высокий уровень ограниченного доступа

    Frame: Number = 115, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2388, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60903, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1463725706, Ack=0, Win=64240 ( Negotiating scale factor 0x2 ) = 64240
    SrcPort: 60903
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1463725706 (0x573EAE8A)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x2 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x2 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 2 ------------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Уровень автонастройки: экспериментальный

    Frame: Number = 238, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2490, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60933, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2095111365, Ack=0, Win=64240 ( Negotiating scale factor 0xe ) = 64240
    SrcPort: 60933
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2095111365 (0x7CE0DCC5)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0xe ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0xe Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 14 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    

Устаревшие параметры TCP

Следующие параметры реестра из Windows Server 2003 больше не поддерживаются и игнорируются в более поздних версиях.

  • TcpWindowSize
  • NumTcbTablePartitions
  • MaxHashTableSize

Все эти параметры расположены в следующем подразделе реестра:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Платформа фильтрации Windows

Windows Vista и Windows Server 2008 представили платформу фильтрации Windows (МПП). МПП предоставляет API независимым поставщикам программного обеспечения от Корпорации Майкрософт для создания фильтров обработки пакетов. Например, для брандмауэров и антивирусного ПО.

Примечание.

Плохо написанный фильтр МПП может значительно снизить производительность сети сервера. Дополнительные сведения см. в статье Перенос драйверов и приложений для обработки пакетов в МПП в Windows Центр разработки.

Ссылки на все разделы этого руководства см. в разделе "Настройка производительности сетевой подсистемы".