Максимальное число очередей RSS — что это?
Максимальное число очередей RSS — настройка, позволяющая выставить обрабатываемое количеств потоков RNIC-адаптера.
Данная настройка определяет, сколько потоков можно использовать RNIC-адаптеру. Какое именно количество — можно узнать в характеристиках адаптера. Если выставит больше, чем нужно — может быть снижение сетевой производительности. Также были случаи некорректно работы опции при использовании неактуальных драйверов.
RNIC (RDMA Network Interface Controller) — сетевой адаптер с аппаратным ускорением технологии прямого доступа к памяти RDMA. Это удаленный доступ к оперативной памяти, который имеет сетевая карта. Данные технологии используются в серверных конфигурациях, на обычных домашних компьютерах эти настройки нет смысла использовать. Да и вряд ли они будут на обычных сетевых картах типа Realtek.
Надеюсь данная информация была полезна. Успехов.
Настройка производительности сетевых адаптеров
Используйте сведения в этом разделе, чтобы настроить сетевые адаптеры производительности для компьютеров под управлением 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 установлен для отключения управления питанием операционной системы.
Прерывания управления системой
Во многих аппаратных системах используются прерывания управления системой (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=
В приведенной выше команде значение> представляет новое значение для уровня автоматической настройки.
Дополнительные сведения об этой команде см. в командах 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
В приведенной выше команде значение> представляет новое значение для уровня автоматической настройки.
Дополнительные сведения об этих командлетах см. в следующих статьях:
Уровни автоматической настройки
Вы можете настроить автоматическое настройку окна на любой из пяти уровней. Уровень по умолчанию — «Обычный«. В следующей таблице описаны уровни.
Уровень | Шестнадцатеричное значение | Комментарии |
---|---|---|
Обычный (по умолчанию) | 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 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 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 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 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 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 больше не поддерживаются и игнорируются в более поздних версиях.
Все эти параметры расположены в следующем подразделе реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
Платформа фильтрации Windows
Windows Vista и Windows Server 2008 представили платформу фильтрации Windows (МПП). МПП предоставляет API независимым поставщикам программного обеспечения от Корпорации Майкрософт для создания фильтров обработки пакетов. Например, для брандмауэров и антивирусного ПО.
Плохо написанный фильтр МПП может значительно снизить производительность сети сервера. Дополнительные сведения см. в статье Перенос драйверов и приложений для обработки пакетов в МПП в Windows Центр разработки.
Ссылки на все разделы этого руководства см. в разделе «Настройка производительности сетевой подсистемы».
Общие сведения о масштабировании на стороне приема
Масштабирование на стороне приема (RSS) — это технология сетевого драйвера, которая обеспечивает эффективное распределение обработки приема по сети между несколькими ЦП в многопроцессорных системах.
Так как процессоры с гиперпотоками на одном ядерном процессоре совместно используют один и тот же механизм выполнения, эффект отличается от использования нескольких процессоров ядра. По этой причине RSS не использует гиперпотоковые процессоры.
Для эффективной обработки полученных данных функция получения прерываний драйвера мини-порта планирует отложенный вызов процедуры (DPC). Без RSS типичная DPC указывает все полученные данные в вызове DPC. Таким образом, вся обработка получения, связанная с прерыванием, выполняется на ЦП, где происходит прерывание приема. Общие сведения об обработке получения, отличной от RSS, см. в разделе Обработка получения не RSS.
RSS позволяет сетевому адаптеру и драйверу мини-порта планировать получение DPC на других процессорах. Конструкция RSS гарантирует, что обработка, связанная с данным соединением, будет оставаться на назначенном ЦП. Сетевой адаптер реализует хэш-функцию, а полученное хэш-значение помогает выбрать ЦП.
На следующем рисунке показан механизм RSS для определения ЦП.
Сетевая карта использует функцию хэширования для вычисления хэш-значения по определенной области (типу хэша) в полученных сетевых данных. Определенная область может быть несвязанной.
Для индексирования таблицы косвенного обращения используется несколько наименее значимых битов (LSB) хэш-значения. Значения в таблице косвенного обращения используются для назначения полученных данных ЦП.
Дополнительные сведения об указании таблиц косвенного обращения, хэш-типов и функций хэширования см. в разделе Конфигурация RSS.
При поддержке прерываний с сигналом о сообщениях (MSI) сетевой адаптер также может прервать работу связанного ЦП. Дополнительные сведения о поддержке NDIS для MSIs см. в разделе NDIS MSI-X.
Поддержка оборудования для RSS
На следующем рисунке показаны уровни поддержки оборудования для RSS.
Существует три возможных уровня поддержки оборудования для RSS:
- Вычисление хэша с одной очередью. Сетевой адаптер вычисляет хэш-значение, а драйвер мини-порта назначает полученные пакеты очередям, связанным с ЦП.
- Вычисление хэша с несколькими очередями получения. Сетевой адаптер назначает буферы полученных данных очередям, связанным с ЦП.
- Прерывания с сигналом сообщения (MSIs): сетевой адаптер прерывает работу ЦП, который должен обрабатывать полученные пакеты.
Сетевой адаптер всегда передает 32-разрядное хэш-значение.
Как RSS повышает производительность системы
RSS может повысить производительность сетевой системы за счет снижения:
- Задержки обработки путем распределения обработки получения от сетевого адаптера между несколькими ЦП. Распределение обработки получения помогает гарантировать, что ЦП не загружается интенсивно, пока другой ЦП неактивен.
- Накладные расходы на блокировку, увеличивая вероятность того, что программные алгоритмы, которые совместно используют данные, выполняются на одном ЦП. Накладные расходы на спин-блокировку возникают, например, когда функция, выполняющаяся на ЦП0, имеет блокировку спина на данных, к которым должна получить доступ функция, работающая на ЦП1. ЦП1 вращается (ожидает), пока ЦП0 не спустит блокировку.
- Перезагрузите кэши и другие ресурсы, увеличив вероятность того, что программные алгоритмы, которые совместно используют данные, выполняются на одном ЦП. Такая перезагрузка происходит, например, когда функция, которая выполняет и обращается к общим данным на cpu0, выполняется на ЦП1 в последующем прерывании.
Для достижения этих улучшений производительности в безопасной среде RSS предоставляет следующие механизмы:
- Распределенная обработка RSS распределяет обработку показаний получения от заданного сетевого адаптера в DPC на несколько ЦП.
- Обработка в порядке RSS сохраняет порядок доставки полученных пакетов данных. Для каждого сетевого подключения RSS-процессы получают указания на связанном ЦП. Дополнительные сведения об обработке получения RSS см. в разделе Указание данных получения RSS.
- Динамическая балансировка нагрузки RSS предоставляет средства для перераспределения нагрузки на обработку сети между ЦП по мере того, как нагрузка на систему узла меняется. Чтобы сбалансировать нагрузку, избыточные драйверы могут изменить таблицу косвенного обращения. Дополнительные сведения об указании таблиц косвенного обращения, хэш-типов и функций хэширования см. в разделе Конфигурация RSS.
- Масштабирование на стороне отправки RSS позволяет стекам драйверов обрабатывать данные на стороне отправки и получения для заданного подключения на том же ЦП. Как правило, избыточный драйвер (например, TCP) отправляет часть блока данных и ожидает подтверждения перед отправкой остатка данных. Затем подтверждение активирует последующие запросы на отправку. Таблица косвенного обращения RSS определяет конкретный ЦП для обработки данных приема. По умолчанию обработка отправки выполняется на том же ЦП, если она активируется подтверждением получения. Драйвер также может указать ЦП (например, если используется таймер).
- Безопасный хэш RSS включает сигнатуру, которая обеспечивает дополнительную безопасность. Эта сигнатура защищает систему от вредоносных удаленных узлов, которые могут попытаться привести систему в несбалансированное состояние.
- Поддержка MSI-X RSS с поддержкой MSI-X запускает подпрограмму службы прерываний (ISR) на том же ЦП, который позже выполняет DPC. Это снижает затраты на спин-блокировку и перезагрузку кэшей.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation
Как включить Receive Side Scaling (RSS) на сетевом интерфейсе
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали, как производится чистая установка Windows 12 с последующей настройкой. Идем далее и сегодня я хочу с вами разобрать одну интересную опцию, которая присутствует на современных сетевых картах, призванную сильно повысить производительность скачивания данных. Речь пойдет про Receive Side Scaling (RSS) или как его еще называют в российской локализации «Состояние масштабирования на стороне приема». Уверен, будет интересно, я покажу когда вас может сильно выручать данный функционал.
Что такое Receive Side Scaling (RSS)
Receive-Side Scaling (RSS) State, или состояние масштабирования на стороне приема, является функцией сетевых адаптеров и операционных систем, которая позволяет распределить обработку входящих сетевых пакетов по нескольким ядрам процессора. Это позволяет повысить производительность сетевой обработки и улучшить масштабируемость системы.
RSS State применяется в высоконагруженных сетевых средах, где требуется обработка большого количества входящих сетевых пакетов. В таких сценариях одно ядро процессора может стать узким местом и ограничивать пропускную способность сети. RSS State позволяет распределить нагрузку на несколько ядер процессора, что позволяет более эффективно использовать ресурсы и повысить производительность. Это может привести к улучшению задержки, более низким значениям процентов использования процессора и более высокой скорости передачи данных. По сути пакеты дробятся на потоки и за каждый поток отвечает свой ЦП.
Однако следует отметить, что эффективность RSS State может зависеть от конкретной сетевой архитектуры и настроек системы. В некоторых случаях, когда сетевые пакеты приходят в неупорядоченном порядке или требуют обработки на одном ядре процессора (например, для обеспечения целостности данных), RSS State может не давать значительного прироста производительности.
Примеры использования RSS
Представим себе обычное, рабочее окружение, где есть лес Active Directory и виртуальная инфраструктура. На части виртуальных машин было замечено:
-
- Высокая загрузка CPU
- Низкая производительность сети и/или большое время отклика на пинг
- Могут наблюдаться тайм-ауты и сбои подключения.
- Количество виртуальных и физических сетевых карт на этот вопрос не влияет
- Эта проблема возникает с различными типами виртуальных сетевых адаптеров ( E1000, VMXNET2 и VMXNET3)
Начиная с Windows 8.1 и выше, а также Windows Server 2012 R2 и выше, технология состояния масштабирования на стороне приема включена по умолчанию
Как проверить и включить RSS через графический интерфейс
Самый понятный для большинства метод определения текущего состояния Receive Side Scaling на вашем сетевом интерфейсе, это использование оснастки «Диспетчера устройств«. Его можно запустить кликнув правой кнопкой мыши по кнопке «Пуск«.
В итоге у вас откроется окно со списком всех ваших устройств. Вам необходимо найти пункт «Сетевые адаптеры«. В списке выберите необходимый сетевой интерфейс и откройте его свойства. Перейдите на вкладку «Дополнительно«. В поле свойство найдите строку Receive Side Scaling. Выбрав ее вы увидите текущее значений. В моем случае видно, что она активирована.
Как проверить и включить RSS через командную строку
Сразу оговорюсь, что это настройка глобальная для операционной системы Windows и если она активна, это не означает, что на уровне отдельной сетевой карты RSS не отключен, я приведу такой пример, когда буду описывать PowerShell.
netsh int tcp show global
Тоже самое можно посмотреть и для списка удаленных серверов. Для этого достаточно иметь список имен и воспользоваться PowerShell. Вот пример скрипта:
# Путь к файлу со списком серверов
$serverListPath = «C:\Temp\servers.txt»# Чтение списка серверов из файла и помещение их в переменную
$servers = Get-Content $serverListPath# Цикл для выполнения команды на каждом сервере
foreach ($server in $servers) # Выполнение команды netsh на сервере и сохранение вывода в переменную
$output = Invoke-Command -ComputerName $server -ScriptBlock netsh int tcp show global
># Парсинг вывода команды для получения строки с Receive-Side Scaling State
$receiveSideScalingState = $output | Where-Object# Вывод результата в виде имя сервера, имя сетевого интерфейса и строки с Receive-Side Scaling State
$receiveSideScalingState | ForEach-Object #$interfaceName = ($_ -split «:\s+»)[0]
$state = ($_ -split «:\s+»)[1]
Write-Host «Сервер: $server, Receive-Side Scaling State: $state»
>
>Теперь, чтобы включить глобально Receive Side Scaling (RSS), вам нужно выполнить вот такую команду:
netsh int tcp set global rss =enabled
netsh int tcp set global rss =disabledКак видите все прекрасно работает и состояние масштабирования на стороне приема поменяло статус.
Как проверить и включить Receive Side Scaling с помощью PowerShell
Для того, чтобы получить статус RSS по всем сетевым интерфейсам, вы должны открыть PowerShell от имени администратора и ввести вот такую команду:
Get-NetAdapterRss -Name «*»
За место «*» вы можете указать точное имя сетевого интерфейса, тогда информация будет только по нему.
Как видно в моем примере, состояние масштабирования на стороне приема имеет значение «False«. Значит оно выключено.
Если вы хотите массово проверить большой список серверов на состояние Receive Side Scaling, то подготовьте список в отдельном текстовом файле, где каждая строка это отдельное имя. После этого выполните данный скрипт.
# Указываем путь к файлу, содержащему список серверов
$serverListFile# Читаем список серверов из файла и помещаем их в переменную
$servers = Get-Content $serverListFile# Проходимся по каждому серверу в списке
foreach ($server in $servers) # Получаем состояние работы RSS на сервере
$rssStatus = Get-NetAdapterRss -CimSession $server# Проходимся по каждому сетевому интерфейсу на сервере
foreach ($interface in $rssStatus) # Выводим результат в виде имени сервера, имени сетевого интерфейса и состояния работы RSS
Write-Host «Сервер: $server, Интерфейс: $($interface.Name), Состояние RSS: $($interface.Enabled)»
>
>На выходе получаем вот такую таблицу.
Для включения RSS есть командлет Enable-NetAdapterRss. Чтобы активировать данный функционал, выполните.
Enable-NetAdapterRss -Name «*»
В данном примере RSS будет активирован на всех сетевых картах, если хотите выполнить на определенной сетевой карте, то команда будет такой:
Enable-NetAdapterRss -Name «Имя сетевого адаптера»
Вот еще дополнительные команды, которые могут пригодится.
- ✅Показать все свойства RSS для указанного сетевого адаптера
Get-NetAdapterRss -Name «Имя конкретного интерфейса» | Format-List -Property «*»
- ✅Вывести все сетевые адаптеры с поддержкой RSS и его включенным состоянием
Get-NetAdapterRss -Name «*» | Where-Object -FilterScript < $_.Enabled >
- Чтобы выключить Receive Side Scaling вам необходимо воспользоваться командлетом Disable-NetAdapterRss. В данном примере я отключу RSS на всех сетевых интерфейсах.
Disable-NetAdapterRss -Name «*»
RSS-очереди
RSS-очереди (RSS queues) — это механизм, используемый для организации и обработки потоков данных в асинхронной системе. Они представляют собой специальные структуры данных, которые позволяют эффективно управлять и распределять задачи между различными компонентами системы.
Основная идея RSS-очередей заключается в том, что они служат промежуточным хранилищем для задач, ожидающих выполнения. Когда задача поступает в систему, она помещается в очередь, где ожидает своей очереди на обработку. Затем компоненты системы могут извлекать задачи из очереди и выполнять их в соответствии с определенными правилами и логикой.
По умолчанию количество NumberOfReceiveQueues равно, количеству ваших сокетов.
Поменять «Maximum Number of RSS Queues» можно через диспетчер устройств.
Или же через PowerShell. Чтобы изменить количество очередей RSS на адаптере сетевой карты, используйте команду Set-NetAdapterRss с параметром -NumberOfReceiveQueues
Set-NetAdapterRss -Name * -NumberOfReceiveQueues 4
Чтобы указать диапазон CPU, который сетевой адаптер может использовать для RSS, используйте команду Set-NetAdapterRss с параметрами -BaseProcessorNumber и -MaxProcessorNumber, чтобы указать нижний и верхний пределы диапазона CPU. Изменение диапазона эффективно изменяет количество ядер CPU, используемых сетевой картой для RSS.
Set-NetAdapterRss -Name * -BaseProcessorNumber 4 -MaxProcessorNumber 6
В случаях, когда использование всех доступных CPU нежелательно, пользователь может ограничить количество одновременно используемых ЦП. По сути, этот параметр изменяет количество одновременно используемых очередей RSS, оставляя некоторые очереди неиспользуемыми.
Set-NetAdapterRss -Name * -MaxProcessors 2
- https://kb.vmware.com/s/article/2008925
- http://forum.oszone.net/post-925527-22.html
- https://learn.microsoft.com/en-us/powershell/module/netadapter/get-netadapterrss
- https://learn.microsoft.com/en-us/powershell/module/netadapter/enable-netadapterrss
- https://www.broadcom.com/support/knowledgebase/
Популярные Похожие записи:
- Как включить боковую панель в Chrome, за два клика
- Словарь системного администратора
- Центр обработки данных, основные понятия
- Как отключить телеметрию в Linux
- Различия между физическими ядрами и логическими процессорами
- Как отключить Intel Intelligent Display