Поделиться через


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

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

Поддержка разгрузки контрольной суммы TCP и IP

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

  • Это влияет на длину пути.
  • Это вызывает эффекты оттока кэша (как правило, на отправителя).

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

В лаборатории производительности Windows мы измерили повышение пропускной способности TCP на 19 % при разгрузке контрольной суммы во время ресурсоемких сетевых рабочих нагрузок. Анализ этого улучшения показывает, что 11 % общего улучшения происходит из-за сокращения длины пути, а 8 % — за счет повышения эффективности кэшей.

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

Поддержка разгрузки больших отправляемых сообщений (LSO)

Windows предлагает сетевому адаптеру или драйверу возможность объявлять максимальный размер сегмента (MSS), чем MTU для TCP до 64 КБ. Это позволяет TCP выделить драйверу буфер размером до 64 КБ, который делит большой буфер на пакеты, которые помещаются в пределах MTU сети.

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

Для многих тестируемых сетевых адаптеров было мало улучшений для чисто сетевых действий, когда ЦП узла был более мощным, чем оборудование сетевого адаптера. Однако для типичных бизнес-рабочих нагрузок было измерено общее повышение производительности системы до 9 % пропускной способности, так как ЦП узла использует большую часть своих циклов для выполнения транзакций. В таких случаях разгрузка сегментации TCP на оборудование освобождает ЦП узла от нагрузки сегментации, что позволяет ему выполнять дополнительные циклы для выполнения дополнительных транзакций.

Разгрузка поддержки БЕЗОПАСНОСТИ IP (IPSec)

Windows предлагает возможность разгрузки работы шифрования IPSec на оборудование сетевого адаптера. Шифрование, особенно 3 DES (также известное как тройной DES), имеет очень высокое соотношение циклов и байтов. Поэтому неудивительно, что разгрузка IPSec на оборудование сетевого адаптера повысила производительность на 30 % в безопасных тестах Интернета и VPN.

Улучшение модерации прерываний

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

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

Эффективное использование шины PCI

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

  • Оптимизируйте передачи DMA путем агрегирования целевых страниц, где это необходимо.

  • Сократите нагрузку на протокол PCI, выполняя DMA большими блоками (не менее 256 байт). Если это возможно, время потока данных, чтобы все пакеты передавалися в одной транзакции PCI. Однако подумайте, как должна происходить передача. Например, не дожидайтесь поступления всех данных перед началом передачи, так как ожидание увеличит задержку и поглотит дополнительное буферное пространство.

  • Лучше заполнить передачу пакетов DMA дополнительными байтами, а не требовать короткой дополнительной передачи для "очистки" путем передачи последних нескольких байтов пакета.

  • Используйте транзакции "Чтение памяти", "Строка чтения памяти" и "Несколько операций чтения памяти" в соответствии со спецификацией PCI.

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

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

  • Используйте сопоставленные в памяти ввод-вывод вместо запрограммированных операций ввода-вывода. Это также относится к драйверам.

Поддержка кадров jumbo

Поддержка большего максимального числа единиц передачи (MTU) и, следовательно, больших размеров кадров, в частности кадров Jumbo, позволит сократить затраты на сетевой стек в байтах. При изменении MTU с 1514 на 9000 было измерено увеличение пропускной способности TCP на 20 %. Кроме того, значительно снижается загрузка ЦП из-за меньшего количества вызовов сетевого стека к сетевому драйверу.