Производительность сетевых адаптеров
Всегда существуют компромиссы при определении аппаратных функций, которые следует реализовать на сетевом адаптере. Все более важно добавить функции разгрузки задач, которые позволяют модерировать прерывания, динамическую настройку на оборудовании, улучшать использование шины PCI и поддерживать кадры Jumbo. Эти функции разгрузки важны для высокоуровневого сетевого адаптера, который используется в конфигурациях, требующих высокой производительности.
- Поддержка разгрузки контрольной суммы TCP и IP
- Поддержка разгрузки больших объемов отправки (LSO)
- Поддержка разгрузки ip-безопасности (IPSec)
- Улучшение модерации прерываний
- Эффективное использование шины PCI
- Поддержка кадров jumbo
Поддержка разгрузки контрольной суммы TCP и IP
Для большинства распространенных сетевых трафика выгрузка контрольной суммы на оборудование сетевого адаптера обеспечивает значительное преимущество производительности, уменьшая количество циклов ЦП, необходимых для каждого байта. Расчет контрольной суммы является самой дорогой функцией в сетевом стеке по двум причинам:
- Он способствует длине длинного пути.
- Это приводит к возникновению последствий обработки кэша (обычно на отправителем).
Выгрузка вычисления контрольной суммы отправителю повышает общую производительность системы, уменьшая нагрузку на ЦП узла и повышая эффективность кэша.
В лаборатории производительности Windows мы измеряли улучшения пропускной способности TCP на 19 % при отключении контрольной суммы во время сетевых интенсивных рабочих нагрузок. Анализ этого улучшения показывает, что 11% общего улучшения обусловлено сокращением длины пути, и 8% из-за повышения эффективности кэша.
Выгрузка контрольной суммы на получателе имеет те же преимущества, что и разгрузка контрольной суммы на отправителя. Увеличение преимуществ можно увидеть в системах, которые действуют как клиентом, так и сервером, например прокси-сервер сокетов. В системах, где ЦП не обязательно занят, например клиентская система, преимущество разгрузки контрольной суммы может быть видно в лучшее время реагирования на сеть, а не в заметно улучшенной пропускной способности.
Поддержка разгрузки больших объемов отправки (LSO)
Windows предлагает возможность сетевого адаптера или драйвера объявлять максимальный размер сегмента (MSS), чем MTU до 64K. Это позволяет 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
Поддержка более крупных единиц передачи (MTUs) и, таким образом, более крупных размеров кадров, в частности Jumbo Frame, снижает затраты на сетевой стек, связанные с байтами. Увеличение пропускной способности TCP на 20 % измеряется при изменении MTU с 1514 по 9000. Кроме того, значительное сокращение использования ЦП достигается из-за меньшего количества вызовов из сетевого стека к сетевому драйверу.