Еще в 2007 году в системе Windows Server 2003 SP2 появился набор функций, управляющих производительностью сети и известных под общим названием Scalable Networking Pack (SNP). Данный пакет использовал аппаратное ускорение при обработке сетевых пакетов для обеспечения более высокой пропускной способности. До появления пакета SP2 эти функции были доступны через дополнительное обновление для версии SP1 и были описаны в статье компании Microsoft «The Microsoft Windows Server 2003 Scalable Networking Pack release» (support.microsoft.com/kb/912222), но не завоевали особой популярности среди клиентов. .

Исторические проблемы

Из-за неполадок в компонентах операционной системы, в драйверах сетевой карты или в системе BIOS у клиентов, которые устанавливали систему Server 2003 SP2 на оборудование, поддерживающее любую из трех названных функций, часто возникали проблемы. Многие клиенты решали их путем отключения данных функций в системе Server 2003, а компания Microsoft выпустила обновление, описанное в статье «An update to turn off default SNP features is available for Windows Server 2003 based and Small Business Server 2003 based computers» (support.microsoft.com/kb/948496), которое отключает эти три функции. Последующее обновление «A Scalable Networking Pack (SNP) hotfix rollup package is available for Windows Server 2003» (support.microsoft.com/kb/950224) позволило клиентам при необходимости включать их, но Microsoft рекомендует оставлять эти функции отключенными, если нет необходимости повысить с их помощью производительность сети. В общем, клиенты, нуждающиеся в повышении производительности, должны использовать системы Windows Server 2008 или Server 2008 R2, так как в их состав входит стек TCP/IP следующего поколения.

Недоверие в ИТ-сообществе

Из-за проблем с пакетом SNP в системе Server 2003 SP2 ИТ-сообщество быстро взяло за правило заранее или по ходу дела отключать эти функции. Для системы Server 2003 такой подход имеет смысл. Но в системах Server 2008 и Server 2008 R2 отключение данных функций зачастую может привести к снижению производительности сети и пропускной способности сервера. Эти функции весьма стабильны в системе Server 2008 R2 (с пакетом SP1 или без него), а достичь той же стабильности системы Server 2008 можно путем установки пакета SP2 и новых дополнительных исправлений. К сожалению, отключение функций как один из первых шагов в решении сетевых проблем по-прежнему является очень распространенной практикой устранения неполадок, при том что многие проблемы таким образом не решаются.

Многие клиенты также начали отключать дополнительные механизмы разгрузки, которые стабильно работают во многих версиях операционных систем. Эти механизмы, как правило, имеют названия TCP Checksum Offload, IP Checksum Offload, Large Send Offload и UDP Checksum Offload. Их можно настраивать в дополнительных свойствах сетевого адаптера или в его настройках. Эти механизмы не аналогичны функциям из пакета SNP, но клиенты часто путают их из-за схожих названий. Кроме того, множеству других средств повышения производительности эти механизмы требуются для работы.

Receive-side scaling

До появления пакета SNP сетевая обработка на стороне принимающего в многоядерных компьютерах считалась узким местом, так как один процессор обслуживал все прерывания от сетевого адаптера. Технология RSS решает эту проблему путем предоставления сетевому адаптеру возможности распределения нагрузки сетевой обработки между несколькими ядрами в многоядерных компьютерах.

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

Чтобы технология RSS могла обеспечивать масштабируемость, она должна быть включена в операционной системе, которая имеет глобальное влияние на все сетевые адаптеры, и ее также необходимо включить на отдельных сетевых адаптерах через их дополнительные свойства или настройки конфигурации. По умолчанию в системах Server 2008 и Server 2008 R2 технология RSS включена. Вы можете узнать, включена технология или нет, анализируя результат следующей команды:

C:\Users\Admin>netsh interface
tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State                        : enabled
Chimney Offload State                               : automatic
NetDMA State                                            : enabled
Direct Cache Acess (DCA)                         : disabled
Receive Window Auto-Tuning Level          : normal
Add-On Congestion Control Provider         : none
ECN Capability                                           : disabled
RFC 1323 Timestamps                              : disabled

Если RSS отключена, вы можете увидеть показатели, аналогичные показанным на экране 1. Это изображение из закладки Performance в диспетчере Task Manager, и вы можете видеть, что загрузка процессора 0 держится на 100%, в то время как остальные процессоры работают с более низкой загрузкой. То, что процессор 0 имеет более высокую загрузку, свидетельствует о том, что технология RSS может быть не включена на сервере. После включения механизмов RSS вы можете увидеть на экране 2, что около 3:00 утра разница в использовании процессоров нивелировалась и значение загрузки для процессора 0 теперь довольно близко к показателям других процессоров.

 

Проверяем, включена ли технология RSS на сервере
Экран 1. Проверяем, включена ли технология RSS на сервере

 

Разница после включения RSS
Экран 2. Разница после включения RSS

RSS также зависит от разгрузок сетевого адаптера (о которых я упоминал ранее и которые включены «по умолчанию»), известных под названиями TCP Checksum Offload, IP Checksum Offload, Large Send Offload и UDP Checksum Offload (для протоколов IPv4 и IPv6). Так что, если они были отключены на сетевом адаптере, технология RSS не будет для него использоваться.

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

TCP Chimney Offload

Технология TCP Chimney Offload (часто называемая производителями TOE) передает обработку трафика TCP от процессора компьютера сетевому адаптеру, который поддерживает TOE. Передача TCP обработки с центрального процессора на сетевой адаптер может освободить процессор для выполнения функций, больше связанных с работой приложений. TOE может разгрузить обработку как для TCP/IPv4, так и для TCP/IPv6 соединений, если сетевой адаптер это поддерживает.

Из-за задержек, связанных с передачей обработки TCP/IP сетевому адаптеру, технология TOE максимально эффективна для приложений, которые устанавливают долговременные соединения и передают большие объемы данных. Серверы, выполняющие долговременные соединения, такие как репликация базы данных, работа с файлами или выполнение функций резервного копирования, являются примерами компьютеров, которые могут получить выгоду от использования TOE. Серверы с недолгими соединениями, такие как веб-серверы или почтовые серверы, могут не получить от данной технологии никакой пользы.

По умолчанию в системе Server 2008 технология TOE отключена. В системе Server 2008 R2 TOE по умолчанию использует новый автоматический режим. Вы можете определить, в какой режим — автоматический, включенный или отключенный — настроены механизмы, с помощью следующей команды, проанализировав содержимое строки Chimney Offload State в выходных данных:

C:\Users\Admin>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State                    : enabled
Chimney Offload State                           : automatic
NetDMA State                                        : enabled
Direct Cache Acess (DCA)                     : disabled
Receive Window Auto-Tuning Level       : normal
Add-On Congestion Control Provider     : none
ECN Capability                                       : disabled
RFC 1323 Timestamps                          : disabled

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

В автоматическом режиме в системе Server 2008 R2 использование TOE предполагает разгрузку обработки соединения только при условиях, приведенных ниже. Это позволяет TCP Chimney разгружать соединения выборочно, а не все сразу.

  • Подключение установлено через 10-Гбит адаптер Ethernet.
  • Средняя задержка связи приема-передачи менее 20 миллисекунд.
  • Через соединение был произведен обмен данными объемом по крайней мере в 130 Kбайт.

Вы можете взглянуть на статистику использования TOE для соединения с помощью команды Netsh netsh interface tcp show chimneystats. Если вы заметили чрезвычайно низкую производительность сети, которая значительно повышается при отключении механизмов Chimney, посмотрите статью Microsoft «The SACK option is always set to ‘true’ even if network adapter does not support SACK for offloaded connections in Windows 7 or in Windows Server 2008 R2» (support.microsoft.com/kb/2525390).

Рекомендации по оптимальному использованию

Методом проб и ошибок мы выработали несколько общих рекомендаций, которые были с большим успехом применены в некоторых клиентских системах. Например, следуя нашим рекомендациям, одному из корпоративных клиентов Microsoft удалось увеличить производительность и стабильность своей организации Exchange Server до недостижимого прежде уровня. В таблице приведен список рекомендаций для каждой версии системы Server.

 

Таблица. Рекомендации по использованию RSS и TOE для каждой версии системы Server Windows Server 2008
Рекомендации по использованию RSS и TOE для каждой версии системы Server Windows Server 2008

Для работы с функциями пакета SNP мы настоятельно рекомендуем оставить технологию RSS включенной в операционной системе и в настройках сетевых адаптеров. Мы также советуем оставить технологию TCP Chimney установленной в автоматический режим в системе Server 2008 R2 и отключенной в системе Server 2008.

Если вы используете механизмы NIC Teaming, пожалуйста, используйте последние версии драйверов сетевой карты и дополнительного программного обеспечения, которое необходимо для создания групп из ваших сетевых карт, а также следуйте рекомендациям производителя относительно использования технологии Chimney TCP. Старые версии некоторых программ NIC Teaming не работают с RSS, но в более новых версиях такой проблемы нет.

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

Тод Эдвардс (tod.edwards@microsoft.com) — старший менеджер программы поддержки в Microsoft, специализируется на выявлении и устранении сетевых проблем в Windows Server