Логотип IntelIntel® Ethernet серии 700
Руководство по настройке производительности Linux
Группа облачных сетей NEX (NCNG)
Рев. 1.2
Декабрь 2024 г.

История изменений

Пересмотр Дата Комментарии
1.2 Декабрь 2024 г. · Добавлены дополнительные рекомендации по управлению питанием.
· Добавлена ​​технология Intel* Turbo Boost.
· Добавлен журнал ожидания сетевых устройств.
· Добавлены конфигурации и настройки для конкретных платформ.
· Добавлены масштабируемые процессоры Intel* %eon* 4-го поколения.
· Добавлен AMD EPYC.
· Обновлены возможности проверки оборудования системы.
· Обновлен iPerf2.
· Обновлен iPerf3.
· Обновлены очереди Tx/Rx.
· Обновлена ​​модерация прерываний.
· Обновленный размер кольца.
· Обновленная настройка платформы (неспецифична для i40e).
· Обновлены настройки BIOS.
· Обновленный контроль C-состояния.
· Обновлено масштабирование частоты ЦП.
· Обновлены настройки приложения.
· Обновлены настройки операционной системы/ядра.
· Обновлена ​​IP-переадресация.
· Обновлена ​​низкая задержка.
Август 2023 г. Изменения в этом документе включают:
· Добавлены сопутствующие ссылки.
· Добавлена ​​проверка правильности загрузки пакета DDP.
· Добавлен iPerf2.
· Добавлен iPerf3.
· Добавлен netperf.
· Обновлена ​​привязка IRQ.
· Добавлены очереди Tx/Rx.
· Обновленный размер кольца.
· Добавлены большие кадры.
· Добавлено присоединение адаптера.
· Добавлен инструмент Intel svr-info.
1.0 Март 2016 г. Первоначальный выпуск (Intel Public).

Введение

Это руководство предназначено для предоставления рекомендаций по настройке сред для оптимальной производительности сети с использованием сетевых адаптеров Intel ® Ethernet серии 700 в средах Linux. Оно фокусируется на аппаратных средствах, драйверах и условиях операционной системы, а также настройках, которые могут улучшить производительность сети. Следует отметить, что на производительность сети может влиять любое количество внешних факторов, в этом руководстве рассматриваются только самые распространенные и существенные из них.
1.1 Связанные ссылки

Начальный контрольный список

2.1 Обновление версий драйверов/прошивок
Проверьте версии драйверов/прошивок с помощью ethtool -i ethx.
При необходимости обновите следующее:

2.2 Прочитайте README
Проверьте наличие известных проблем и получите последние инструкции по настройке из файла README. file включен в исходный пакет i40e.
2.3 Убедитесь, что ваш слот PCI Express (PCIe) имеет тип x8
Некоторые слоты PCIe x8 на самом деле сконфигурированы как слоты x4. Эти слоты имеют недостаточную пропускную способность для полной скорости линии с двухпортовыми и четырехпортовыми устройствами. Кроме того, если вы вставите адаптер с поддержкой PCIe v3.0 в слот PCIe v2.x, вы не сможете получить полную пропускную способность. Программный драйвер устройства обнаруживает эту ситуацию и записывает следующее сообщение в системный журнал:
Пропускная способность PCI-Express, доступная для этой карты, недостаточна для оптимальной производительности. Для оптимальной производительности требуется слот x8 PCI-Express.
Если возникла эта ошибка, переместите адаптер в настоящий слот PCIe v3.0 x8, чтобы устранить проблему.
2.4 Проверка возможностей аппаратного обеспечения системы
При 10 Гбит/с, 25 Гбит/с и 40 Гбит/с Ethernet существуют некоторые минимальные требования к ЦП и системе. В целом, современного процессора серверного класса и оптимальной конфигурации памяти для вашей платформы должно быть достаточно, но потребности различаются в зависимости от вашей рабочей нагрузки. Все каналы памяти должны быть заполнены, а режим производительности памяти должен быть включен в BIOS. Убедитесь, что конфигурация ЦП и памяти способна поддерживать уровень производительности сети, необходимый для вашей рабочей нагрузки.
ПРИМЕЧАНИЕ
XL710 — это контроллер 40 GbE. Адаптер 2 x 40 GbE, использующий этот контроллер, не предназначен для 2 x 40 GbE, а для 1 x 40 GbE с активным резервным портом. При попытке использовать трафик на скорости линии, включающий оба порта, внутренний коммутатор перегружается, а объединенная пропускная способность между двумя портами ограничивается в общей сложности SO Гбит/с.
2.4.1 Параметры загрузки ядра
Если в BIOS включена технология Intel® Virtualization Technology for Directed I/O (Intel® VT-d), Intel рекомендует, чтобы IOMMU находился в режиме сквозного пропуска для оптимальной производительности хост-сети. Это устраняет накладные расходы DMA на трафик хоста, позволяя при этом виртуальным машинам (VM) по-прежнему использовать преимущества Intel® VT-d. Это достигается путем добавления следующей строки в параметры загрузки ядра: fommu-pt.
2.5 Убедитесь, что пакет DDP загружается правильно
Базовые драйверы 140ea и 140eb не имеют прямой поддержки Dynamic Device Personalization (DDP). Для использования DDP с устройствами серии 700 требуется DDP profile можно применять с приложением testpmd.
Подробная информация о DDP profiles, и как применить DDP profile с testpmd на устройствах серии 700 см. Руководство по технологии динамической персонализации устройств (DDP) Intel® Ethernet серии 700.
Чтобы проверить, является ли DDP профессионаломfile загружен успешно:
testpmd> ddp получить список 0 Profile номер: 1
ПРИМЕЧАНИЕ
Если профиfile число равно 0, пакет DDP не загружен. В случае ошибки загрузки пакета DDP устройство по умолчанию переходит в безопасный режим, и многие функции производительности недоступны. Если есть ошибки, связанные с загрузкой пакета DDP, это приведет к проблемам с производительностью. Действия по устранению неполадок см. в Руководстве по технологии Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP).

Методология измерения и настройки базовых показателей производительности

3.1 Показатели производительности сети
Перед началом настройки важно иметь хорошее базовое измерение производительности вашей сети. Обычно в дополнение к получению начального измерения производительности вашего конкретного приложения/рабочей нагрузки, хорошей идеей является также использование стандартного теста производительности сети, чтобы убедиться, что ваше сетевое устройство находится в хорошем состоянии.
Для оптимизации отдельной системы можно использовать netperf или iperf и NetPIPE — это надежные бесплатные инструменты с открытым исходным кодом, которые позволяют проверять соединение и диагностировать проблемы с производительностью.
Netperf хорош как для тестирования пропускной способности, так и для тестирования задержки. NetPIPE — это инструмент, ориентированный на задержку, но его можно скомпилировать для любой среды.
ПРИМЕЧАНИЕ
Тест TCP_RR в netperf возвращает задержку в значении транзакций/сек. Это число в обоих направлениях. Одностороннюю задержку можно рассчитать с помощью следующего уравнения:
Задержка (мкс) = (1⁄2) / [Транзакции/сек] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel рекомендует iperf2 вместо iperf3 для большинства ситуаций бенчмаркинга из-за простоты использования и поддержки нескольких потоков в одном экземпляре приложения. Intel рекомендует запускать с опцией -P с 2-4 потоками для соединений 25G и около 4-6 потоков для соединений 40G.

  • Для запуска однонаправленного трафика от клиента к серверу: команда сервера exampле: iperf2 -s
    Клиентская команда exampле: iperf2 -c -П
  • Для запуска двунаправленного трафика от клиента к серверу (и наоборот): команда сервера exampле: iperf2 –s –p
    Клиентская команда exampль:
    iperf2 -с -п -П -–полный дуплекс ИЛИ
    iperf2 -с -п -П –д

ПРИМЕЧАНИЕ
Оба параметра –full-duplex и -d в iperf2 позволяют пользователю выполнять двунаправленное тестирование. Однако параметр –full-duplex специально фокусируется на полнодуплексном тестировании.
ПРИМЕЧАНИЕ
При тестировании iperf2 на нескольких портах сервера можно добавить флаг -d к команде сервера, чтобы запустить все сеансы сервера в фоновом режиме из того же окна терминала. Флаг -d также можно использовать, когда команда сервера встроена в цикл for в скрипте.
ПРИМЕЧАНИЕ
При запуске теста пропускной способности сети с одним потоком/потоком (например,ample: P1), процессоры AMD могут не обеспечивать ожидаемой пропускной способности, особенно сетевые карты с более высокой пропускной способностью (если скорость >= 25G). В результате для достижения более высокой пропускной способности требуется закрепление приложений за определенными ядрами. См. Настройки приложений на стр. 22.
3.1.2 iPerf3
Если используется iperf3, для выполнения расширенного режима требуются несколько экземпляров приложения.tage многопоточности, RSS и аппаратных очередей. Intel рекомендует работать с 2-4 сеансами приложений для 25G-подключений и около 4-6 сеансов для 40G-подключений. Для каждого сеанса следует указать уникальное значение порта TCP с помощью параметра -p.

  • Для запуска однонаправленного трафика от клиента к серверу:
    Серверная команда exampль:
    iperf3 -s -p
    Клиентская команда exampль:
    iperf3 -с -п
  • Для запуска двунаправленного трафика от клиента к серверу (и наоборот):
    Серверная команда exampль:
    iperf3 –s –p
    Клиентская команда exampле: iperf3 -c -п -П –-бидир
  • Чтобы запустить несколько экземпляров (потоков) iperf3, рекомендуется использовать цикл for для сопоставления потоков с портами TCP и запустить iperf3 в фоновом режиме с помощью & для создания нескольких параллельных процессов.
    Серверная команда example, запустить 4 потока: port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -s -p $port &"; done; Клиентская команда example, запустить 4 потока – Тест передачи port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; done; Клиентская команда example, запустить 4 потока – Receive test port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; done; Для подключений 40G увеличьте цикл for, чтобы создать до 6 экземпляров/потоков.

ПРИМЕЧАНИЕ
При запуске теста пропускной способности сети с одним потоком/потоком (например,ample: P1), процессоры AMD могут не обеспечить ожидаемую пропускную способность, в частности более высокую пропускную способность
Сетевые карты (если скорость >= 25G пропускной способности). В результате для достижения более высокой пропускной способности требуется закрепление приложений за определенными ядрами. См. Настройки приложений на стр. 22 и AMD EPYC на стр. 26.
3.1.3 чистая производительность
Инструмент netperf — отличный выбор для тестирования как пропускной способности, так и задержки.

  • Тест TCP_STREAM в netperf измеряет пропускную способность устройства. Серверная команда example: команда клиента netserver example: netperf -t TCP_STREAM -l 30 -H
  • Тест TCP_RR в netperf возвращает задержку в значении транзакций/сек. Это число в обоих направлениях. Рекомендуется использовать опцию -T x,x, где x — это локальный ЦП устройства. Одностороннюю задержку можно рассчитать с помощью: Latency(usec)=(1⁄2)/ [Транзакции/сек]*1,000,\ Команда сервера exampле: сетевой сервер
    Клиентская команда example: netperf -t TCP_RR -l 30 -H -Т х,х
  • Чтобы запустить несколько экземпляров (потоков) netperf, рекомендуется использовать цикл for для сопоставления потоков с портами TCP и запускать netperf в фоновом режиме с помощью & для создания нескольких параллельных процессов.
    Серверная команда example, начнем 8 темы:
    port=""; for i in {0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; done;
    Клиентская команда example, запустить 8 потоков: port=""; for i in {0..7}; do port=520$i; bash -c "netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &"; done;

3.2 Методология настройки
Сосредоточьтесь на одном изменении настройки за раз, чтобы знать, какое влияние каждое изменение оказывает на ваш тест. Чем более методичным вы будете в процессе настройки, тем легче будет выявить и устранить причины узких мест производительности.

Настройка параметров драйвера i40e

4.1 Привязка IRQ
Настройка соответствия IRQ таким образом, чтобы прерывания для разных сетевых очередей были привязаны к разным ядрам ЦП, может оказать огромное влияние на производительность, особенно в многопоточных тестах пропускной способности.
Чтобы настроить соответствие IRQ, остановите irqbalance, а затем либо используйте скрипт set_irq_affinity из исходного пакета i40e, либо вручную закрепите очереди. Отключите балансировщик IRQ в пользовательском пространстве, чтобы включить закрепление очередей:

  • systemctl отключить irqbalance
  • systemctl остановить irqbalance
    Использование скрипта set_irq_affinity из исходного пакета i40e (рекомендуется):
  • Чтобы использовать все ядра:
    [путь-к-i40epackage]/scripts/set_irq_affinity -X все ethX
  • Чтобы использовать только ядра на локальном сокете NUMA: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
  • Вы также можете выбрать диапазон ядер. Избегайте использования cpu0, поскольку он запускает задачи таймера. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

ПРИМЕЧАНИЕ
Сценарий соответствия включает Transmit Packet Steering (XPS) как часть процесса закрепления, когда указана опция -x. Когда XPS включен, Intel рекомендует отключить irqbalance, так как балансировщик ядра с XPS может привести к непредсказуемой производительности. Сценарий соответствия отключает XPS, когда указана опция -X. Отключение XPS и включение симметричных очередей полезно для рабочих нагрузок, где наилучшая производительность достигается, когда трафик Tx и Rx обслуживается в одной и той же паре(ах) очередей.
Настройка симметричных очередей в Linux включает в себя настройку параметров драйвера сетевого интерфейса для включения симметричных очередей приема (Rx) и симметричных очередей передачи (Tx) для поддерживаемых сетевых адаптеров.
ПРИМЕЧАНИЕ

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

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

  1. Изменить конфигурацию сетевого интерфейса File: Используйте текстовый редактор (напримерample, vi, nano или gedit) для редактирования конфигурации сетевого интерфейса file. file обычно находится в каталоге /etc/sysconfig/network-scripts/ и имеет имя типа ifcfg-ethX, где ethX — имя вашего сетевого интерфейса.
  2. Добавьте параметры симметричной очереди. Добавьте следующие строки в конфигурацию сетевого интерфейса file: ETHTOOL_OPTS="rx-queues 8 tx-queues 8"
  3. Перезапустите сетевую службу.
    После внесения изменений перезапустите сетевую службу, чтобы применить новую конфигурацию. sudo systemctl restart network

Вручную:

  • Найдите процессоры, подключенные к каждому узлу, с помощью: numactl –hardware lscpu
  • Найдите битовые маски для каждого из процессоров:
  • Предположим, что ядра 0-11 для узла 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Найдите прерывания, назначенные порту, который вы назначаете: grep ethX /proc/interrupts и запишите значения прерываний. Например:ample, 181-192 для 12 загруженных векторов.
  • Отобразить значение привязки SMP в соответствующую запись IRQ. Обратите внимание, что это необходимо сделать для каждой записи IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Показать привязку IRQ:
  • Чтобы показать соответствие IRQ для всех ядер: /scripts/set_irq_affinity -s ethX
  • Чтобы отобразить только ядра на локальном сокете NUMA: /scripts/set_irq_affinity -s локальный ethX
  • Вы также можете выбрать ряд ядер: /scripts/set_irq_affinity -s 40-0-8,16 ethX

ПРИМЕЧАНИЕ
Скрипт set_irq_affinity поддерживает флаг -s в драйвере i40e версии 2.16.11 и более поздних.
4.2 Очереди Tx/Rx
Число очередей по умолчанию, включенное драйвером для каждого порта Ethernet при инициализации, равно общему числу ЦП, доступных на платформе. Это хорошо работает для многих платформ и конфигураций рабочей нагрузки. Однако на платформах с большим количеством ядер и/или высокой плотностью портов Ethernet эта конфигурация может вызвать конфликт ресурсов. Поэтому в некоторых случаях может потребоваться изменить значение по умолчанию для каждого порта в системе.
Число очередей Tx/Rx по умолчанию может варьироваться в зависимости от конкретной модели и версии драйвера. Число очередей можно настроить с помощью команды ethtool -L, указанной ниже.
ПРИМЕЧАНИЕ
В этих случаях Intel рекомендует уменьшить количество очередей по умолчанию для каждого порта до не более, чем количество ЦП, доступных в локальном узле NUMA для порта адаптера. В некоторых случаях при попытке сбалансировать ресурсы в реализациях с большим количеством портов может потребоваться уменьшить это число еще больше.
Чтобы изменить конфигурацию очереди:
Следующий примерample устанавливает порт на 32 очереди Tx/Rx: ethtool -L ethX combined 32
Exampвывод:
ethtool -l ethX
Параметры канала для ethX: Предустановленные максимальные значения:
Прием: 96
Техас: 96
Другое: 1
В совокупности: 96
Текущие настройки оборудования:
Прием: 0
Техас: 0
Другое: 1
В совокупности: 32
4.3 Прерывание модерации
Адаптивное управление прерываниями включено по умолчанию и предназначено для обеспечения сбалансированного подхода между низкой загрузкой ЦП и высокой производительностью. Однако вы можете попробовать настроить параметры прерываний вручную в соответствии с вашим вариантом использования.
Диапазон 0-235 микросекунд обеспечивает эффективный диапазон от 4,310 до 250,000 2 прерываний в секунду. Значение rx-μsecs-high может быть установлено независимо от rx-μsecs и tx-μsecs в той же команде ethtool, а также независимо от адаптивного алгоритма модерации прерываний. Базовое оборудование поддерживает гранулярность в интервалах XNUMX микросекунды, поэтому смежные значения могут привести к одинаковой частоте прерываний.

  • Чтобы отключить адаптивную модерацию прерываний: ethtool -C ethX adaptive-rx off adaptive-tx off
  • Чтобы включить адаптивную модерацию прерываний: ethtool -C ethX adaptive-rx on adaptive-tx on

Хорошим местом для начала общей настройки является 84 мкс или ~12000 прерываний/с. Если вы видите, что счетчики rx_dropped работают во время трафика (используя ethtool -S ethX), то, вероятно, у вас слишком медленный процессор, недостаточно буферов из-за размера кольца адаптера (ethtool -G) для хранения пакетов в течение 84 мкс или слишком низкая частота прерываний.

  • Чтобы установить модерацию прерываний на фиксированную частоту прерываний 84 мкс между прерываниями (12000 прерываний/с): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Следующее значение, которое следует попробовать, если вы не достигли предела использования ЦП, — 62 мкс. Это использует больше ЦП, но обслуживает буферы быстрее и требует меньше дескрипторов (размер кольца, ethtool -G).
  • Чтобы установить модерацию прерываний на фиксированную частоту прерываний в 62 мкс между прерываниями (16000 прерываний/с). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    Если счетчики rx_dropped увеличиваются во время трафика (используя ethtool -S ethX), у вас, вероятно, слишком медленный ЦП, недостаточно буферов из размера кольца адаптера (ethtool -G) или слишком низкая частота прерываний. Если вы не достигли максимального использования ЦП, вы можете увеличить частоту прерываний, уменьшив значение ITR. Это использует больше ЦП, но обслуживает буферы быстрее и требует меньше дескрипторов (размер кольца, ethtool -G).
    Если ваш ЦП загружен на 100%, то увеличивать частоту прерываний не рекомендуется. В определенных обстоятельствах, таких как нагрузка, связанная с ЦП, вы можете захотеть увеличить значение мкс, чтобы выделить больше времени ЦП для других приложений.
    Если вам требуется производительность с низкой задержкой и/или у вас достаточно ресурсов ЦП для обработки сетевых данных, вы можете полностью отключить модерацию прерываний, что позволит прерываниям срабатывать максимально быстро.
  • Чтобы отключить модерацию прерываний ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

ПРИМЕЧАНИЕ
При работе с отключенной модерацией прерываний частота прерываний в каждой очереди может быть очень высокой. Рассмотрите возможность включения параметра rx-usec-high для установки верхнего предела частоты прерываний. Следующая команда отключает адаптивную модерацию прерываний и допускает максимум 5 микросекунд до того, как будет указано, что прием или передача завершены. Вместо того, чтобы приводить к 200,000 50,000 прерываний в секунду, она ограничивает общее количество прерываний в секунду до 20 5 с помощью параметра rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 5 rx-usecs 80 txusecs 100 Попробуйте настроить таймер объединения передачи/приема/высокого приоритета выше (150/200/25/20) или ниже (10/5/XNUMX/XNUMX), чтобы найти оптимальное значение для рабочей нагрузки.
4.4 Размер кольца
Если вы видите счетчики rx_dropped в ethtool -S ethX (rx_dropped, rx_dropped.nic) или подозреваете давление кэша с несколькими активными очередями, вы можете попробовать изменить размер кольца со значения по умолчанию. Значение по умолчанию — 512, максимальное — 4096.

  • Чтобы проверить текущие значения: ethtool -g ethX
    Если есть подозрение, что отсутствие буферизации приводит к падению текущей частоты прерываний, можно сначала попробовать максимальное значение, затем минимальное, а затем продолжить двоичный поиск, пока не увидите оптимальную производительность.
    Если есть подозрение на нехватку кэша (активно много очередей), уменьшение буферов по умолчанию может помочь Intel ® Data Direct I/O (Intel ® DDIO) работать более эффективно. Intel рекомендует попробовать 128 или 256 на очередь, учитывая, что может потребоваться увеличение частоты прерываний с помощью ethtool -C, чтобы избежать увеличения rx_dropped.
  • Чтобы установить фиксированное значение размера кольца: ethtool -G eth12 rx 256 tx 256

ПРИМЕЧАНИЕ
Чтобы исправить потери пакетов Rx, обнаруженные с помощью ethtool -S ethX|grep drop, рассмотрите возможность увеличения размера кольца до 4096. Поэкспериментируйте, чтобы найти наилучшие настройки для рабочей нагрузки, но следите за чрезмерным использованием памяти при более высоких значениях.
4.5 Управление потоком
Управление потоком уровня 2 может значительно повлиять на производительность TCP и рекомендуется отключить для большинства рабочих нагрузок. Потенциальным исключением является пульсирующий трафик, когда пакеты непродолжительны.
Управление потоком по умолчанию отключено.

  • Чтобы включить управление потоком: ethtool -A ethX rx on tx on
  • Чтобы отключить управление потоком: ethtool -A ethX rx off tx off

ПРИМЕЧАНИЕ
Для успешного включения управления потоком вам необходимо иметь партнера по соединению, поддерживающего управление потоком.
4.6 Большие кадры
Если ожидаемая среда трафика состоит из больших блоков передаваемых данных, может быть полезно включить функцию jumbo-кадров. Поддержка jumbo-кадров включается путем изменения максимального блока передачи (MTU) на значение, превышающее значение по умолчанию 1500. Это позволяет устройству передавать данные более крупными пакетами в сетевой среде. Эта настройка может улучшить пропускную способность и снизить загрузку ЦП для больших рабочих нагрузок ввода-вывода. Однако она может повлиять на рабочие нагрузки с малыми пакетами или чувствительные к задержкам.
ПРИМЕЧАНИЕ
Необходимо правильно настроить большие кадры или большие параметры MTU в вашей сетевой среде.
Используйте команду ifconfig для увеличения размера MTU. Напримерample, введите следующее, где номер интерфейса: ifconfig mtu 9000 вверх
В качестве альтернативы вы можете использовать команду ip следующим образом: ip link set mtu 9000 dev настройка IP-ссылки dev

Настройка платформы (неспецифическая для i40e)

5.1 Настройки BIOS

  • Включите Intel® VT-d для рабочих нагрузок виртуализации.
  • Hyper-threading (логические процессоры) может влиять на производительность. Поэкспериментируйте с включением или выключением для вашей рабочей нагрузки.
  • Intel® Turbo Boost позволяет ядрам ЦП работать на более высокой частоте, чем базовая частота ЦП. Включение Intel® Turbo Boost может повысить производительность для многих рабочих нагрузок, но потребляет больше энергии для поддержания ядер на более высокой частоте. Поэкспериментируйте с выключением/включением Turbo Boost для вашей рабочей нагрузки.

ПРИМЕЧАНИЕ
Частоты Turbo не гарантируются, если платформа испытывает высокую общую загрузку ЦП. Более высокие частоты ядра Turbo снижаются по мере увеличения общей загрузки ЦП.
5.2 Управление питанием
Управление питанием может влиять на производительность, особенно при рабочих нагрузках с низкой задержкой. Если производительность имеет более высокий приоритет, чем снижение энергопотребления, Intel рекомендует вам поэкспериментировать с ограничением эффектов управления питанием. Существует множество различных способов ограничить управление питанием с помощью инструментов операционной системы, настроек BIOS и параметров загрузки ядра. Выберите наилучший метод и уровень, соответствующие вашей среде.
5.2.1 Управление C-состоянием
Ограничение входа в C-состояние до CO или C1 повышает производительность и увеличивает использование энергии.
Отключение записи состояния CPU Package C6 может улучшить производительность сети. Однако это увеличивает потребление энергии.
Доступны следующие варианты:

  • Динамическое управление входом в C-состояние:
    Открыть
    /dev/cpu_dma_latency и запишите в него максимально допустимую задержку.

ПРИМЕЧАНИЕ
Для выполнения именно этой задачи существует небольшая программа cpudmalatency.c, которую можно загрузить с сайта сообщества с открытым исходным кодом, скомпилировать и запустить из командной строки.
Следующий примерample допускает пять мкс времени пробуждения и, таким образом, допускает запись C1: cpudmalatency 5 &

  • Ограничьте максимальное C-состояние в настройках загрузки ядра:
    Для процессоров Intel: intel_idle.max_cstates=1
    Для процессоров не Intel: processor.max_cstates=1
  • Используйте команду cpupower для проверки и отключения состояния CPU C6: Проверьте: cpupower monitor или cpupower idle-info
    Отключить C6: cpupower idle-set -d3 или
    Отключить C-состояния: cpupower idle-set -D0

Примечания:

  1. Отключите C-состояния на ЦП, если на сервере установлены процессоры Intel® 4-го поколения Intel® Xeon® Scalable. Когда Hyper Threading включен или выключен, отключение состояний простоя (-D0) предотвращает переход ядер в состояния низкого энергопотребления во время периодов простоя и сокращает задержку ЦП при переходе между состояниями простоя и активности.
  2. Управление питанием процессора Intel® 4-го поколения Intel® Xeon® Scalable Processor чрезвычайно агрессивно. Чтобы избежать перехода ядер в состояние низкого энергопотребления, попробуйте уменьшить количество используемых ядер, чтобы они оставались активными дольше (ethtool -L комбинированный ). Также привяжите прерывания к определенным ядрам с помощью set irq affinity (чаще всего с помощью -x local или list of CPU cores) и обеспечьте выполнение рабочей нагрузки на тех же ядрах с помощью taskset или numactl. Это повышает производительность, сохраняя ядра активными и оптимизируя обработку прерываний.

Включить C6:
cpupower простоя-набор -d3
Включить C-состояния:
cpupower простоя-набор -E

  • Другой метод — использовать настроенный инструмент (входит в состав многих дистрибутивов Linux) для установки производительности.file. Эти проfiles изменить несколько настроек ОС, которые могут повлиять на производительность многих приложений. Было обнаружено, что производительность сетиfile обеспечивает улучшение большинства рабочих нагрузок.
    Проверять:
    настроенный-adm активен
    Набор:
    настроенный-adm profile пропускная способность сети
    ПРИМЕЧАНИЕ
    Для выполнения команд выше настроенная служба должна быть запущена. Для проверки/перезапуска настроенной: systemctl status настроенная systemctl restart настроенная
    Вы также можете запретить любую запись C-state, добавив следующее в строку загрузки ядра:
    простаивает=опрос
  • Ограничьте C-состояние с помощью настроек управления питанием BIOS системы, что может иметь влияние на производительность.file доступный.
    Для проверки или установки параметров управления питанием можно использовать такие инструменты, как turbostat или x86_energy_perf_policy.

5.2.2 Управление питанием PCIe
Active-State Power Management (ASPM) включает более низкое состояние питания для PCIe-соединений, когда они не используются активно. Это может привести к более высокой задержке на сетевых устройствах PCIe, поэтому Intel рекомендует отключить ASPM для чувствительных к задержке рабочих нагрузок. Отключите ASPM, добавив следующее в строку загрузки ядра: pcie_aspm=off
5.2.3 Масштабирование частоты процессора
Масштабирование частоты ЦП (или масштабирование скорости ЦП) — это метод управления питанием Linux, при котором тактовая частота системы регулируется «на лету» для экономии энергии и тепла. Как и C-состояния, это может вызвать нежелательную задержку в сетевых соединениях.
Инструмент cpupower также можно использовать для проверки и изменения значений по умолчанию и ограничений производительности ЦП:

  • Проверьте: cpupower monitor или
  • Установите процессор в режим производительности: cpupower frequency-set -g performance

ПРИМЕЧАНИЕ
Изменения ограничений частоты ЦП могут повлиять на многие рабочие нагрузки и привести к отключению других функций, таких как турборежим ЦП.
Чтобы отключить масштабирование частоты ЦП, отключите службу питания ЦП с помощью следующих команд:
systemctl остановить cpupower.service
systemctl отключить cpupower.service
5.2.4 Дополнительные рекомендации по управлению питанием
Дополнительные сведения приведены в этом обзоре высокого уровня.view многих функций управления питанием в процессорах Intel® Xeon® Scalable 3-го поколения, а также руководство по интеграции этих функций на уровне платформы: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost ускоряет процессор, когда это необходимо, но может потреблять дополнительную мощность. Отключение Turbo Boost поддерживает постоянную скорость процессора, обеспечивая вам постоянный уровень производительности для определенных рабочих нагрузок.
5.4 Брандмауэры
Межсетевые экраны могут влиять на производительность, особенно на показатели задержки.
Отключите iptables/firewalld, если это не требуется.
5.5 Настройки приложения
Часто одного потока (который соответствует одной сетевой очереди) недостаточно для достижения максимальной пропускной способности. Некоторые архитектуры платформ, такие как AMD, имеют тенденцию отбрасывать больше пакетов Rx с одним потоком по сравнению с платформами с процессорами на базе Intel.
Рассмотрите возможность использования таких инструментов, как taskset или numactl, для закрепления приложений на узле NUMA или ядрах ЦП, локальных для сетевого устройства. Для некоторых рабочих нагрузок, таких как ввод-вывод хранилища, перемещение приложения на нелокальный узел дает преимущество.
Поэкспериментируйте с увеличением количества потоков, используемых вашим приложением, если это возможно.
5.6 Версия ядра
Большинство современных встроенных ядер достаточно хорошо оптимизированы для производительности, но в зависимости от вашего варианта использования обновление ядра может обеспечить улучшенную производительность. Загрузка исходного кода также позволяет вам включать/отключать определенные функции перед сборкой ядра.
5.7 Настройки операционной системы/ядра
Для получения более подробной информации об общей настройке операционной системы обратитесь к руководствам по настройке операционной системы, например, к Руководству по настройке производительности сети Red Hat Enterprise Linux.
Некоторые общие параметры для настройки перечислены в следующей таблице. Обратите внимание, что это только предлагаемые отправные точки, и изменение их значений по умолчанию может увеличить ресурсы, используемые в системе. Хотя увеличение значений может помочь повысить производительность, необходимо экспериментировать с различными значениями, чтобы определить, что лучше всего подходит для данной системы, рабочей нагрузки и типа трафика.
Параметры ядра настраиваются с помощью утилиты sysctl в Linux, как указано ниже.
К view значения по умолчанию для rmem и wmem в системе:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Установите максимальные значения (16 МБ):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Размеры буфера сокета, также известные как буфер приема (rmem) и буфер передачи (wmem), являются системными параметрами, которые определяют объем памяти, зарезервированной для входящего и исходящего сетевого трафика.
Запуск sysctl без аргумента -w выводит список параметров с их текущим значением.

Настройка стека Описание
net.core.rmem_default Размер окна приема по умолчанию
net.core.wmem_default Размер окна передачи по умолчанию
net.core.rmem_max Максимальный размер окна приема
net.core.wmem_max Максимальный размер окна передачи
net.core.optmem_max Максимальные буферы опциональной памяти
net.core.netdev_max_backlog Задержка необработанных пакетов до начала падения ядра
net.ipv4.tcp_rmem Резерв памяти для буферов чтения TCP
net.ipv4.tcp_wmem Резерв памяти для буферов отправки TCP

Ядро, сетевой стек, обработчик памяти, скорость ЦП и параметры управления питанием могут иметь большое влияние на производительность сети. Распространенная рекомендация — применить к сетевой пропускной способности profile с помощью настроенной команды. Это изменяет несколько настроек ОС, чтобы предоставить предпочтение сетевым приложениям.
Проверять:
настроенный-adm активен
Набор:
настроенный-adm profile пропускная способность сети
5.8 Сетевое устройство невыполненных работ
Эта функция помогает улучшить производительность сети за счет эффективного управления входящим трафиком, снижения потерь пакетов, снижения задержек и повышения пропускной способности. Это приводит к улучшению пользовательского опыта и более быстрому отклику системы.
По умолчанию он включен в большинстве операционных систем Linux. Чтобы проверить значение по умолчанию:
sysctl net.core.netdev_max_backlog
Максимальное значение netdev_max_backlog может варьироваться в зависимости от таких факторов, как версия ядра, оборудование, память и рабочая нагрузка. Во многих случаях 8192 считается хорошим значением. sysctl -w net.core.netdev_max_backlog=8192
5.9 Конфигурации и настройка для конкретных платформ
5.9.1 Масштабируемые процессоры Intel® Xeon® 4-го поколения

Управление питанием процессора Intel® 4-го поколения Intel® Xeon® Scalable чрезвычайно агрессивно по сравнению с процессорами Intel® Xeon® Scalable 3-го поколения. Чтобы избежать перехода ядер в состояние низкого энергопотребления, попробуйте уменьшить количество используемых ядер, чтобы они оставались активными дольше.
Рекомендуемые настройки BIOS для максимальной производительности

  1. Включение/выключение гиперпоточности (в зависимости от требований рабочей нагрузки и целей производительности) на ЦП.
  2. Установить систему profile к Performance для максимальной производительности.
    ПРИМЕЧАНИЕ
    Это приводит к более высокому потреблению энергии.
  3. Установите управление питанием ЦП на «Максимальную производительность», чтобы отдать приоритет максимальной производительности ЦП над энергоэффективностью.
  4. Включить Turbo Boost. Отключение Turbo Boost в настройках BIOS системы обычно не позволяет ЦП динамически увеличивать тактовую частоту выше базовой частоты.
  5. ПРИМЕЧАНИЕ
    Отключение Turbo Boost может быть целесообразным в определенных случаях, когда постоянная производительность, энергоэффективность или управление температурой имеют приоритет над максимальной производительностью.
  6. Отключите функцию виртуализации ввода-вывода с одним корнем (SR-IOV), если система не использует технологии виртуализации.
  7. Отключите C-состояния, чтобы дать указание ЦП оставаться активным и не допустить перехода в более глубокие состояния простоя.
  8. Отключите C1E, чтобы гарантировать, что ЦП останется активным и не перейдет в состояние ожидания C1E.
  9. Установите максимальную частоту uncore, чтобы система работала на максимально возможной частоте.
  10. На платформах Dell установите для эмуляции ядра Multiple APIC Description Table (MADT) значение Linear (или Round-Robin в зависимости от BIOS), чтобы обеспечить четкое и предсказуемое сопоставление ядер ЦП.

Рекомендуемые настройки на уровне ОС для оптимизации производительности

  1. Установите регулятор масштабирования частоты ЦП на производительность. cpupower frequency-set -g performance cpupower frequency-info
  2. Отключить C-состояния. cpupower idle-set -D0
  3. Установить буферы Rx (rmem) и Tx (wmem) ядра на максимальное значение. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. Установить отставание сетевого устройства. sysctl -w net.core.netdev_max_backlog=8192
  5. Установить настроенный профиfile (рабочая нагрузка зависит от пропускной способности/задержки).
    настроенный-adm profile пропускная способность сети

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

  1. Ограничьте количество очередей для использования трафика приложений. Используйте минимальное количество очередей, необходимое для поддержания активности связанных ядер ЦП, чтобы предотвратить их переход в более глубокие состояния простоя (с учетом рабочей нагрузки): ethtool -L в совокупности 32
  2. Установить коэффициенты модерации прерываний. ethtool -C адаптивный-rx выключен адаптивный-tx выключен rx-usecs-high 50 rx-usecs 50 tx-usecs 50
    Попробуйте увеличить (80/100/150/200) или уменьшить (25/20/10/5) значение таймера передачи/приема/высокоприоритетного объединения, чтобы найти оптимальное значение для рабочей нагрузки.
  3. Установите размеры кольца Rx/Tx. ethtool -G прием 4096 передача 4096
    ПРИМЕЧАНИЕ
    Если вы видите отбрасывание пакетов Rx с помощью ethtool -S| grep drop, попробуйте уменьшить размер кольца до <4096. Попробуйте найти оптимальное значение для рабочей нагрузки, при котором пакеты не отбрасываются.
  4. Установите соответствие IRQ. Используйте ядра, локальные для NIC, или определенное сопоставление ядер (где количество ядер равно количеству очередей, заданному в 1 на странице 26. systemctl stop irqbalance set_irq_affinity -X local ИЛИ set_irq_affinity -X

5.9.2 AMD EPYC
Процессоры AMD EPYC — это мощные ЦП, предназначенные для серверов и центров обработки данных, построенные на архитектуре AMD Zen. Приведенные ниже настройки относятся к серии AMD EPYC 4-го поколения.
Рекомендуемые настройки BIOS для максимальной производительности

  1. Включите пользовательский режим, чтобы пользователи могли настраивать производительность ЦП, энергопотребление и другие параметры. Это помогает в тонкой настройке системы для достижения наилучшего баланса между производительностью и энергоэффективностью.
  2. Включите функцию повышения производительности ядра, чтобы процессор автоматически увеличивал свою скорость для обработки более ресурсоемких задач, повышая общую производительность.
  3. Отключите глобальное управление C-состояниями, чтобы предотвратить переход ЦП в состояния более глубокого энергосбережения, известные как C-состояния, которые могут поддерживать отзывчивость.
    ПРИМЕЧАНИЕ
    Отключение C-состояний может привести к дополнительному потреблению энергии и повышению температур. Контролируйте оба параметра для рабочей нагрузки.
  4. Включить/выключить одновременную многопоточность (SMT) на ЦП в зависимости от требований рабочей нагрузки и целей производительности. SMT эквивалентен Hyper Threading на ЦП Intel.
    ПРИМЕЧАНИЕ
    Для оптимизации производительности см. разделы Настройка параметров драйвера i40e на стр. 13 и Настройка платформы (неспецифическая для i40e) на стр. 19, где приведены рекомендуемые настройки на уровне ОС и адаптера.

Склеивание адаптера

Linux bonding — это мощная функция, которая может значительно улучшить производительность сети, избыточность и отказоустойчивость в серверных средах. Однако важно отметить, что для ее правильной работы требуется совместимое сетевое оборудование и правильная настройка как на сервере, так и на коммутаторе.
Драйвер связывания в Linux позволяет объединять несколько физических сетевых интерфейсов в связанный интерфейс. Этот связанный интерфейс выглядит как единый виртуальный сетевой интерфейс для операционной системы и приложений.
ПРИМЕЧАНИЕ
Связь представляет собой логический интерфейс, поэтому невозможно установить привязку ЦП непосредственно на интерфейсе связи (например,ample, bond0). То есть, он не имеет прямого контроля над обработкой прерываний или привязкой к ЦП. Привязка к ЦП должна быть настроена для базовых интерфейсов, которые являются частью связи.
Склеивание предусматривает несколько режимов работы, каждый из которых имеет свои особенности.

Режим  Тип
0 Круговой Робин
1 Активное резервное копирование
2 XOR
3 Транслировать
4 ЛАКП
5 Балансировка нагрузки передачи
6 Адаптивный баланс нагрузки

Существуют различные методы создания бондинга в Linux. Один из самых распространенных методов — использование конфигурации сети fileс (напримерample, /etc/network/interfaces или /etc/sysconfig/network-scripts/ifcfg-bondX).
Конфигурация с использованием сетевой конфигурации Files
Следующие шаги создают связь посредством конфигурации сети files.

  1. Выберите два или более портов NIC для объединения (например,ample, ethX и ethY)
  2. Открытая конфигурация сетевого адаптера Files в /etc/sysconfig/network-scripts/ для требуемого интерфейса сетевой карты (напримерample, vi ifcfg-ethX и vi ifcfg-ethY) и добавьте следующий текст:
    MASTER=bondN [Примечание: N — целое число, указывающее номер связи.] SLAVE=да
  3. Создать сценарий сети связей file с помощью vi /etc/sysconfig/networkscripts/ifcfg-bondN и введите следующий текст:
    DEVICE=bondN [Примечание: N — целое число, указывающее номер связи] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (или) none
    IPADDR=200.20.2.4 [обязательно, если BOOTPROTO=none] NETWORK=255.255.255.0 [обязательно, если BOOTPROTO=none] NETWORK=200.20.2.0 [обязательно, если BOOTPROTO=none] BROADCAST=200.20.2.255 [обязательно, если BOOTPROTO=none] BONDING_OPTS="mode=1 miimon=100"
    ПРИМЕЧАНИЕ
    Режим может быть любым целым числом от 0 до 6 в зависимости от требований.
  4. Перезапустите сетевые службы с помощью service network restart или systemctl restart NetworkManager.service

Устранение неполадок производительности

7.1 Загрузка ЦП
Проверьте загрузку ЦП на ядро ​​во время выполнения рабочей нагрузки.
Обратите внимание, что загрузка на ядро ​​более важна для производительности, чем общая загрузка ЦП, поскольку она дает представление об загрузке ЦП на сетевую очередь. Если у вас есть только несколько потоков, обрабатывающих сетевой трафик, то у вас может быть занято только несколько ядер. Однако если эти ядра загружены на 100%, то пропускная способность вашей сети, скорее всего, ограничена загрузкой ЦП, и пришло время выполнить следующее:

  1. Настройте модерацию прерываний/размер кольца, как подробно описано в разделе Модерация прерываний.
  2. Увеличьте количество потоков приложения, чтобы распределить нагрузку ЦП на большее количество ядер. Если все ядра загружены на 100%, то ваше приложение может быть ограничено ЦП, а не сетью.

Общедоступные инструменты:

  • вершина
    — Нажмите 1, чтобы развернуть список процессоров и проверить, какие из них используются.
    — Обратите внимание на уровень использования.
    — Обратите внимание, какие процессы указаны как наиболее активные (вверху списка).
  • mpstat
    Следующий примерampКомандная строка le была протестирована на Red Hat Enterprise Linux 7.x.
    Он отображает загрузку ЦП на ядро ​​(путем нахождения общего процента простоя и вычитания из 100) и выделяет красным значения выше 80%. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column
  • perf top Посмотрите, где тратятся циклы.

7.2 Счетчики i40e
Драйвер i40e предоставляет длинный список счетчиков для отладки и мониторинга интерфейса с помощью команды ethtool -S ethX. Может быть полезно наблюдать за выводом во время выполнения рабочей нагрузки и/или сравнивать значения счетчиков до и после выполнения рабочей нагрузки.

  • Чтобы получить полный дамп счетчиков i40e: ethtool -S ethX
  • Чтобы наблюдать только за ненулевыми счетчиками: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    Вот на что следует обратить внимание:
  • rx_dropped означает, что ЦП недостаточно быстро обслуживает буферы.
  • port.rx_dropped означает, что что-то недостаточно быстро в слоте/памяти/системе.

7.3 Сетевые счетчики
Проверьте netstat -s до/после запуска рабочей нагрузки.
Netstat собирает сетевую информацию со всех сетевых устройств в системе. Поэтому на результаты могут влиять сети, отличные от тестируемой сети. Вывод netstat -s может быть хорошим индикатором проблем производительности в операционной системе Linux или ядре. Ознакомьтесь с руководствами по настройке операционной системы, такими как Red Hat Enterprise Linux Network Performance Tuning Guide, для получения более подробной информации об общей настройке операционной системы.
7.4 Системные журналы
Проверьте системные журналы на наличие ошибок и предупреждений (/var/log/messages, dmesg).
7.5 Инструмент Intel svr-info
Intel предоставляет инструмент svr-info (см. https://github.com/intel/svr-info) для Linux, которая собирает соответствующие сведения об оборудовании и программном обеспечении с сервера. Вывод svr-info может быть чрезвычайно полезен для выявления узких мест системы или настроек/настроек, которые не оптимизированы для рабочей нагрузки. При открытии обращения в службу поддержки Intel по вопросам производительности, связанным с Ethernet, обязательно включите вывод svr-info (текст file) для каждого сервера Linux в тестовой конфигурации.

  1. Загрузите и установите svr-info:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
    ./svr-информация
    > имя_хоста.txt
  2. Соберите вывод:
    ./svr-info > имя_хоста.txt
  3. Прикрепить один текст (.txt) file для каждого сервера в службу поддержки Intel для анализа.

Рекомендации для общих сценариев производительности

8.1 IP-пересылка

  • Обновите ядро.
    Некоторые недавние ядра in-distro имеют ухудшенную производительность маршрутизации из-за изменений ядра в коде маршрутизации, начиная с удаления кэша маршрутизации из-за безопасности. Недавние ядра out-of-distro должны иметь исправления, которые смягчают влияние этих изменений на производительность и могут обеспечить улучшенную производительность.
  • Отключить гиперпоточность (логические ядра).
  • Отредактируйте параметры загрузки ядра.
    — Принудительно отключите iommu (intel_iommu=off или iommu=off) из строки загрузки ядра, если это не требуется для виртуализации.
    — Отключить управление питанием: processor.max_cstates=1 idle=poll pcie_aspm=off
  • Ограничьте количество очередей, чтобы оно было равно количеству ядер на локальном сокете (в данном случае 12).ampле). ethtool -L ethX в сочетании 12
  • Прикрепите прерывания только к локальному сокету. set_irq_affinity -X local ethX ИЛИ set_irq_affinity -X local ethX
    ПРИМЕЧАНИЕ
    В зависимости от рабочей нагрузки можно использовать -X или -x.
  • Измените размеры колец Tx и Rx по мере необходимости. Большее значение требует больше ресурсов, но может обеспечить лучшую скорость пересылки. ethtool -G ethX rx 4096 tx 4096
  • Отключите GRO при маршрутизации.
    Из-за известной проблемы ядра GRO необходимо отключить при маршрутизации/пересылке. ethtool -K ethX gro off, где ethX — это интерфейс Ethernet, который необходимо изменить.
  • Отключить адаптивную модерацию прерываний и установить статическое значение. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

ПРИМЕЧАНИЕ
В зависимости от типа процессора и рабочей нагрузки параметры объединения для RX и TX можно настроить для повышения производительности (или уменьшения потери кадров).

  • Отключите брандмауэр. sudo systemctl disable firewalld sudo systemctl stop firewalld
  • Включить переадресацию IP. sysctl -w net.ipv4.ip_forward=1
  • Настройте максимальные значения для размеров буфера сокета приема и отправки. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

ПРИМЕЧАНИЕ
В зависимости от рабочей нагрузки или требований эти значения можно изменить по сравнению с заданными по умолчанию.
8.2 Низкая задержка

  • Отключите гиперпоточность (логические ядра).
  • Убедитесь, что сетевое устройство является локальным по отношению к ядру numa 0.
  • Закрепите бенчмарк на ядре 0 с помощью taskset -c 0.
  • Отключите irqbalance с помощью systemctl stop irqbalance или systemctl disable irqbalance
  • Запустите скрипт affinity для распространения по ядрам. Попробуйте либо локально, либо все.
  • Отключить модерацию прерываний. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
  • Ограничьте количество очередей, чтобы оно было равно количеству ядер на локальном сокете (в данном случае 32).ampле). ethtool -L ethX в сочетании 32
  • Выводит прерывания только на локальный сокет (скрипт, упакованный с исходным кодом драйвера i40e). set_irq_affinity -X local ethX
  • Используйте проверенный бенчмарк, например netperf -t TCP_RR, netperf -t UDP_RR или NetPipe. netperf -t TCP_RR или netperf -t UDP_RR
  • Закрепить бенчмарк на одном ядре локального узла NUMA. taskset -c

Intel® Ethernet серии 700
Руководство по настройке производительности Linux
Декабрь 2024 г.
Документ №: 334019, Ред.: 1.2

Документы/Ресурсы

Настройка производительности Intel Ethernet серии 700 в Linux [pdf] Руководство пользователя
334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *