Логотип IntelIntel ® Ethernet серії 700
Керівництво з налаштування продуктивності Linux
NEX Cloud Networking Group (NCNG)
Ред. 1.2
грудень 2024 р

Історія версій

Ревізія Дата Коментарі
1.2 грудень 2024 р · Додано додаткові вказівки з керування живленням.
· Додано Intel* Turbo Boost.
· Додано Backlog Network Device.
· Додано конфігурації та налаштування для певної платформи.
· Додано масштабовані процесори Intel* %eon* 4-го покоління.
· Додано AMD EPYC.
· Оновлена ​​перевірка апаратних можливостей системи.
· Оновлено iPerf2.
· Оновлено iPerf3.
· Оновлені черги Tx/Rx.
· Оновлена ​​модерація переривань.
· Оновлений розмір кільця.
· Оновлена ​​настройка платформи (i40e Non-Specific).
· Оновлені налаштування BIOS.
· Оновлений контроль C-State.
· Оновлене масштабування частоти ЦП.
· Оновлені налаштування програми.
· Оновлені параметри операційної системи/ядра.
· Оновлена ​​IP-переадресація.
· Оновлена ​​низька затримка.
Серпень 2023 Зміни до цього документа передбачають:
· Додано відповідні посилання.
· Додано Переконайтеся, що пакет DDP завантажується належним чином.
· Додано iPerf2.
· Додано iPerf3.
· Додано netperf.
· Оновлено Affinity IRQ.
· Додано черги Tx/Rx.
· Оновлений розмір кільця.
· Додано Jumbo Frames.
· Додано з’єднання адаптерів.
· Додано інструмент 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 Перевірте апаратні можливості системи
Для Ethernet 10 Гбіт/с, 25 Гбіт/с і 40 Гбіт/с є деякі мінімальні вимоги до ЦП і системи. Загалом, сучасного процесора серверного класу та оптимальної конфігурації пам’яті для вашої платформи має бути достатньо, але потреби відрізняються залежно від вашого робочого навантаження. Усі канали пам’яті мають бути заповнені, а в BIOS має бути ввімкнено режим продуктивності пам’яті. Переконайтеся, що ваш ЦП і конфігурація пам’яті здатні підтримувати рівень продуктивності мережі, необхідний для вашого робочого навантаження.
ПРИМІТКА
XL710 — це контролер 40 GbE. Адаптер 2 x 40 GbE, який використовує цей контролер, призначений не як 2 x 40 GbE, а як 1 x 40 GbE з активним резервним портом. Під час спроби використати трафік лінійної швидкості, що включає обидва порти, внутрішній комутатор насичується, а сумарна пропускна здатність між двома портами обмежена загальним значенням SO Гбіт/с.
2.4.1 Параметри завантаження ядра
Якщо в BIOS увімкнено технологію віртуалізації Intel® для спрямованого введення-виведення (Intel® VT-d), Intel рекомендує, щоб IOMMU був у наскрізному режимі для оптимальної продуктивності хост-мережі. Це усуває накладні витрати DMA на трафік хоста, водночас дозволяючи віртуальним машинам (ВМ) користуватися перевагами 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 див. Посібник з технології Intel® Ethernet 700 Series Dynamic Device Personalization (DDP).
Щоб перевірити, чи DDP profile успішно завантажено:
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 повертає значення затримки у транзакціях/с. Це номер в обидві сторони. Односторонню затримку можна розрахувати за допомогою такого рівняння:
Затримка (usec) = (1⁄2) / [Транзакції/сек] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel рекомендує iperf2 замість iperf3 для більшості ситуацій порівняльного аналізу через простоту використання та підтримку кількох потоків в одному екземплярі програми. Intel рекомендує працювати з параметром -P із 2–4 потоками для підключень 25G і приблизно 4–6 потоками для підключень 40G.

  • Щоб запустити односпрямований трафік від клієнта до сервера: Команда сервера example: iperf2 -s
    Команда клієнта напрample: iperf2 -c -П
  • Щоб запустити двонаправлений трафік від клієнта до сервера (і навпаки): Команда сервера example: iperf2 –s –p
    Команда клієнта напрampле:
    iperf2 -c -стор -П -–повнодуплексна АБО
    iperf2 -c -стор -П –d

ПРИМІТКА
Параметри –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.

  • Щоб запустити односпрямований трафік від клієнта до сервера:
    Команда сервера напрampле:
    iperf3 -s -p
    Команда клієнта напрampле:
    iperf3 -c -стор
  • Щоб запустити двонаправлений трафік від клієнта до сервера (і навпаки):
    Команда сервера напрampле:
    iperf3 –s –p
    Команда клієнта напрample: iperf3 -c -стор -П –-бідір
  • Щоб запустити кілька екземплярів (потоків) iperf3, рекомендується використовувати цикл for для відображення потоків у TCP-порти та запускати iperf3 у фоновому режимі за допомогою & для створення кількох процесів паралельно.
    Команда сервера напрample, запустити 4 потоки: port=””; для i в {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; зроблено; Команда клієнта напрample, запустіть 4 потоки – Передайте тестовий порт=””; для i в {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; зроблено; Команда клієнта напрample, запустити 4 потоки – отримати тестовий порт=””; для i в {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; зроблено; Для підключень 40G збільште цикл for, щоб створити до 6 екземплярів/потоків.

ПРИМІТКА
Під час тестування пропускної здатності мережі з одним потоком/потоком (наприклад,ample: P1), процесори AMD можуть не забезпечувати очікувану пропускну здатність, особливо вищу пропускну здатність
NIC (якщо швидкість >= 25G пропускної здатності). Як наслідок, для досягнення більшої пропускної здатності потрібне закріплення програми на певних ядрах. Див. Параметри програми на сторінці 22 і AMD EPYC на сторінці 26.
3.1.3 netperf
Інструмент netperf є сильним вибором як для тестування пропускної здатності, так і для тестування затримки.

  • Тест TCP_STREAM у netperf вимірює пропускну здатність пристрою. Команда сервера напрample: команда клієнта netserver напрample: netperf -t TCP_STREAM -l 30 -H
  • Тест TCP_RR у netperf повертає значення затримки у транзакціях за секунду. Це номер в обидві сторони. Рекомендується використовувати опцію -T x,x, якщо x є локальним процесором пристрою. Односторонню затримку можна розрахувати за допомогою: Latency(usec)=(1⁄2)/ [Transactions/sec]*1,000,\ Server command example: мережевий сервер
    Команда клієнта напрample: netperf -t TCP_RR -l 30 -H -T x,x
  • Щоб запустити кілька екземплярів (потоків) netperf, рекомендується використовувати цикл for для зіставлення потоків із портами TCP і запускати netperf у фоновому режимі за допомогою & для створення кількох процесів паралельно.
    Команда сервера напрample, почати 8 потоки:
    port=””; для i в {0..7}; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; зроблено;
    Команда клієнта напрample, запустити 8 потоків: port=””; для i в {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; зроблено;

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

Налаштування драйвера i40e

4.1 Спорідненість IRQ
Налаштування спорідненості IRQ таким чином, щоб переривання для різних мережевих черг були пов’язані з різними ядрам ЦП, може мати величезний вплив на продуктивність, особливо багатопотокових тестів пропускної здатності.
Щоб налаштувати IRQ affinity, зупиніть irqbalance, а потім або скористайтеся сценарієм set_irq_affinity з вихідного пакета i40e, або закріпіть черги вручну. Вимкніть балансувальник IRQ простору користувача, щоб увімкнути закріплення черги:

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

ПРИМІТКА
Сценарій спорідненості вмикає керування пакетами передачі (XPS) як частину процесу закріплення, якщо вказано параметр -x. Якщо XPS увімкнено, Intel рекомендує вимкнути irqbalance, оскільки балансування ядра з XPS може призвести до непередбачуваної продуктивності. Сценарій спорідненості вимикає XPS, якщо вказано параметр -X. Вимкнення XPS і ввімкнення симетричних черг є корисним для робочих навантажень, де найкраща продуктивність досягається, коли трафік Tx і Rx обслуговується в тій самій парі черги.
Налаштування симетричних черг у Linux передбачає налаштування параметрів драйвера мережевого інтерфейсу, щоб увімкнути симетричні черги отримання (Rx) і симетричні черги передачі (Tx) для підтримуваних мережевих адаптерів.
ПРИМІТКА

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

Щоб налаштувати симетричні черги, виконайте такі загальні дії:

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

Вручну:

  • Знайдіть процесори, підключені до кожного вузла, використовуючи: numactl –hardware lscpu
  • Знайдіть бітові маски для кожного з процесорів:
  • Припускаючи ядра 0-11 для вузла 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Знайдіть IRQ, призначені призначеному порту: grep ethX /proc/interrupts і запам’ятайте значення IRQ, наприклад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 affinity:
  • Щоб показати спорідненість 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 комбінований 32
Exampвихід файлу:
ethtool -l ethX
Параметри каналу для ethX: Попередньо встановлені максимуми:
RX: 96
TX: 96
Інше: 1
Разом: 96
Поточні налаштування обладнання:
RX: 0
TX: 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 frame. Підтримка Jumbo Frames увімкнена шляхом зміни максимальної одиниці передачі (MTU) на значення, що перевищує стандартне значення 1500. Це дозволяє пристрою передавати дані більшими пакетами в мережевому середовищі. Цей параметр може покращити пропускну здатність і зменшити використання ЦП для великих навантажень вводу-виводу. Однак це може вплинути на невеликі пакети або чутливі до затримки навантаження.
ПРИМІТКА
Великі кадри або більше значення MTU мають бути належним чином налаштовані у вашому мережевому середовищі.
Використовуйте команду ifconfig, щоб збільшити розмір MTU. наприкладample, введіть наступне, де це номер інтерфейсу: ifconfig mtu 9000 вгору
Крім того, ви можете використати команду ip таким чином: ip link set mtu 9000 dev ip link set up dev

Налаштування платформи (i40e неспецифічний)

5.1 Параметри BIOS

  • Увімкніть Intel® VT-d для робочих навантажень віртуалізації.
  • Гіперпотоковість (логічні процесори) може вплинути на продуктивність. Увімкніть або вимкніть його відповідно до навантаження.
  • Intel® Turbo Boost дозволяє ядрам ЦП працювати на вищій частоті, ніж базова частота ЦП. Увімкнення Intel® Turbo Boost може підвищити продуктивність для багатьох робочих навантажень, але споживає більше енергії, щоб підтримувати ядра на вищій частоті. Поекспериментуйте з увімкненням/вимкненням Turbo Boost відповідно до робочого навантаження.

ПРИМІТКА
Turbo-частоти не гарантуються, якщо платформа зазнає високого загального використання ЦП. Більш високі турбо частоти ядра знижуються, оскільки загальне використання ЦП зростає.
5.2 Керування живленням
Управління живленням може вплинути на продуктивність, особливо при навантаженні з низькою затримкою. Якщо продуктивність має вищий пріоритет, ніж зниження енергоспоживання, Intel рекомендує поекспериментувати з обмеженням впливу керування живленням. Існує багато різних способів обмежити керування живленням за допомогою інструментів операційної системи, налаштувань BIOS і параметрів завантаження ядра. Виберіть найкращий метод і рівень відповідно до вашого середовища.
5.2.1 Контроль C-State
Обмеження входу в стан C до CO або C1 покращує продуктивність і збільшує споживання енергії.
Вимкнення запису стану CPU Package C6 може покращити продуктивність мережі. Однак це збільшує споживання енергії.
Доступні такі варіанти:

  • Динамічно контролювати запис C-state:
    ВІДЧИНЕНО
    /dev/cpu_dma_latency і запишіть у нього максимально допустиму затримку.

ПРИМІТКА
Існує невелика програма під назвою cpudmalatency.c, яку можна завантажити зі спільноти з відкритим кодом, скомпілювати та запустити з командного рядка, щоб зробити саме це.
Наступний прикладample дозволяє п'ять мкс часу пробудження, і таким чином дозволяє запис C1: cpudmalatency 5 &

  • Обмежте максимальний C-state у налаштуваннях завантаження ядра:
    Для процесорів 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-States: cpupower idle-set -D0

Примітки:

  1. Вимкніть C-стани на ЦП, якщо на сервері встановлено процесор(и) Intel® Intel® Xeon® 4-го покоління. Коли Hyper Threading увімкнено або вимкнено, вимкнення станів простою (-D0) запобігає переходу ядер у стани низького енергоспоживання під час періодів простою та зменшує затримку для переходу ЦП між неактивним та активним станами.
  2. Управління живленням масштабованого процесора Intel® 4-го покоління Intel® Xeon® надзвичайно агресивне. Щоб уникнути переходу ядер у стан низького енергоспоживання, спробуйте зменшити кількість використовуваних ядер, щоб вони довше залишалися активними (ethtool -L комбіновані ). Крім того, прив’яжіть переривання до певних ядер, використовуючи встановлену приналежність до irq (найчастіше за допомогою -x local або списку ядер ЦП), і переконайтеся, що робоче навантаження виконується на тих самих ядрах за допомогою taskset або numactl. Це покращує продуктивність, зберігаючи ядра активними та оптимізуючи обробку переривань.

Увімкнути C6:
cpupower idle-set -d3
Увімкнути C-States:
cpupower idle-set -E

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

5.2.2 Керування живленням PCIe
Управління живленням у активному стані (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 Network Performance Tuning Guide, щоб отримати більше інформації про загальне налаштування операційної системи.
Деякі загальні параметри для налаштування наведено в наступній таблиці. Зауважте, що це лише запропоновані початкові точки, і зміна їх за замовчуванням може збільшити ресурси, які використовуються системою. Хоча збільшення значень може допомогти підвищити продуктивність, необхідно поекспериментувати з різними значеннями, щоб визначити, що найкраще працює для даної системи, робочого навантаження та типу трафіку.
Параметри ядра можна налаштувати за допомогою утиліти 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 за допомогою налаштованої команди. Це змінює кілька параметрів ОС, щоб надати перевагу мережевим програмам.
перевірити:
tuned-adm активний
Набір:
tuned-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® 3-го покоління Scalable. Щоб ядра не переходили в стани низького енергоспоживання, спробуйте зменшити кількість використовуваних ядер, щоб вони довше залишалися активними.
Рекомендовані параметри BIOS для найвищої продуктивності

  1. Увімкнути/вимкнути Hyper-threading (на основі вимог до робочого навантаження та цільової продуктивності) на ЦП.
  2. Налаштуйте систему проfile до продуктивності для максимальної продуктивності.
    ПРИМІТКА
    Це призводить до більшого споживання електроенергії
  3. Встановіть для керування живленням ЦП значення Максимальна продуктивність, щоб надати перевагу максимальній продуктивності ЦП над енергоефективністю.
  4. Увімкніть Turbo Boost. Вимкнення Turbo Boost у системних налаштуваннях BIOS зазвичай запобігає динамічному збільшенню тактової частоти ЦП вище базової частоти.
  5. ПРИМІТКА
    Вимкнення Turbo Boost може бути придатним для певних випадків використання, коли постійна продуктивність, енергоефективність або керування температурою мають пріоритет над максимальною продуктивністю.
  6. Вимкніть функцію Single Root I/O Virtualization (SR-IOV), якщо система не використовує технології віртуалізації.
  7. Вимкніть C-states, щоб наказати ЦП залишатися активним і запобігти переходу в більш глибокий стан простою.
  8. Вимкніть C1E, щоб переконатися, що ЦП залишається активним і не переходить у стан очікування C1E.
  9. Встановіть базову частоту на максимум, щоб система працювала на найвищій доступній частоті.
  10. На платформах Dell установіть для емуляції ядра Multiple APIC Description Table (MADT) значення Linear (або Round-Robin залежно від BIOS), щоб забезпечити чітке та передбачуване відображення ядер ЦП.

Рекомендовані налаштування рівня ОС для оптимізації продуктивності

  1. Встановіть регулятор частоти процесора на продуктивність. cpupower частотний набір -g продуктивність cpupower частотна інформація
  2. Вимкнути C-States. 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 (робоче навантаження залежить від пропускної здатності/затримки).
    tuned-adm profile пропускна здатність мережі

Рекомендовані налаштування рівня адаптера для оптимізації продуктивності

  1. Обмеження кількості черг для використання трафіку програми. Використовуйте мінімальну кількість черг, необхідну для підтримання пов’язаних ядер ЦП активними, щоб запобігти переходу їх у глибші стани простою (з урахуванням робочого навантаження): ethtool -L комбінований 32
  2. Встановіть швидкість модерування переривань. ethtool -C adaptive-rx вимкнено adaptive-tx вимкнено rx-usecs-high 50 rx-usecs 50 tx-usecs 50
    Спробуйте налаштувати таймер об’єднання передавання/отримання/високого пріоритету вище (80/100/150/200) або нижче (25/20/10/5), щоб знайти оптимальне значення для робочого навантаження.
  3. Встановіть розміри кільця Rx/Tx. ethtool -G rx 4096 tx 4096
    ПРИМІТКА
    Якщо ви бачите, що пакет Rx падає за допомогою ethtool -S| grep drop, спробуйте зменшити розмір кільця до <4096. Спробуйте знайти оптимальне значення для робочого навантаження, коли пакети не відкидаються.
  4. Встановіть спорідненість IRQ. Використовуйте ядра, локальні для мережевої карти, або спеціальне відображення ядра (де # ядер дорівнює кількості черг, встановленій у 1 на сторінці 26. systemctl stop irqbalance set_irq_affinity -X local АБО set_irq_affinity -X

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

  1. Увімкніть спеціальний режим, щоб дозволити користувачам регулювати продуктивність ЦП, енергоспоживання та інші налаштування. Це допомагає налаштувати систему для найкращого балансу між продуктивністю та енергоефективністю.
  2. Увімкніть підвищення продуктивності ядра, щоб ЦП автоматично збільшував свою швидкість для виконання більш інтенсивних завдань, покращуючи загальну продуктивність.
  3. Вимкніть глобальне керування C-state, щоб запобігти переходу ЦП у глибші стани енергозбереження, відомі як C-state, які можуть підтримувати чуйність.
    ПРИМІТКА
    Вимкнення C-станів може призвести до додаткового споживання електроенергії та підвищення теплових температур. Слідкуйте за навантаженням обох.
  4. Увімкніть/вимкніть одночасну багатопотоковість (SMT) на ЦП на основі вимог до робочого навантаження та цільової продуктивності. SMT еквівалентний Hyper Threading на процесорах Intel.
    ПРИМІТКА
    Щоб отримати оптимізовану продуктивність, зверніться до Налаштування параметрів драйвера i40e на сторінці 13 і Налаштування платформи (i40e Non-Specific) на сторінці 19 щодо рекомендованого налаштування рівня ОС і адаптера.

Склеювання адаптера

Linux bonding — потужна функція, яка може значно покращити продуктивність мережі, резервування та відмовостійкість у серверних середовищах. Однак важливо зазначити, що для належної роботи потрібне сумісне мережеве обладнання та належна конфігурація як на сервері, так і на комутаторі.
Драйвер зв’язування в Linux дозволяє вам об’єднувати декілька фізичних мережевих інтерфейсів у зв’язаний інтерфейс. Цей об’єднаний інтерфейс виглядає як єдиний віртуальний мережевий інтерфейс для операційної системи та програм.
ПРИМІТКА
Зв’язок є логічним інтерфейсом, тому неможливо встановити спорідненість ЦП безпосередньо на інтерфейсі зв’язку (наприклад,ample, bond0). Тобто він не має прямого контролю над обробкою переривань або спорідненістю ЦП. CPU affinity має бути налаштовано для основних інтерфейсів, які є частиною зв’язку.
Бондінг передбачає кілька режимів роботи, кожен зі своїми особливостями.

Режим  Тип
0 Кругова система
1 Активне резервне копіювання
2 XOR
3 Трансляція
4 LACP
5 Баланс навантаження передачі
6 Адаптивний баланс навантаження

Існують різні методи створення зв’язку в Linux. Одним із найпоширеніших методів є використання конфігурації мережі files (наприклад,ample, /etc/network/ інтерфейси або /etc/sysconfig/network-scripts/ifcfg-bondX).
Конфігурація за допомогою конфігурації мережі Files
Наступні кроки створюють зв’язок через конфігурацію мережі files.

  1. Виберіть два або більше портів NIC для з’єднання (наприклад,ample, ethX і ethY)
  2. Відкрийте налаштування NIC Files у /etc/sysconfig/network-scripts/ для необхідного інтерфейсу NIC (наприклад,ample, vi ifcfg-ethX і vi ifcfg-ethY) і додайте такий текст:
    MASTER=bondN [Примітка: N є цілим числом для згадування номера зв’язку.] SLAVE=yes
  3. Створіть сценарій мережі зв’язку file за допомогою vi /etc/sysconfig/networkscripts/ifcfg-bondN і введіть такий текст:
    DEVICE=bondN [Примітка: N є цілим числом для згадування номера зв’язку] ONBOOT=так USERCTL=ні BOOTPROTO=dhcp (або) немає
    IPADDR=200.20.2.4 [потрібно, якщо BOOTPROTO=немає] NETMASK=255.255.255.0 [потрібно, якщо BOOTPROTO=немає] NETWORK=200.20.2.0 [потрібно, якщо BOOTPROTO=немає] BROADCAST=200.20.2.255 [потрібно, якщо BOOTPROTO=немає] BONDING_OPTS=”режим=1 miimon=100″
    ПРИМІТКА
    Режим може бути будь-яким цілим числом від 0 до 6 залежно від вимоги.
  4. Перезапустіть мережеві служби за допомогою служби перезавантаження мережі або перезапуску системи через NetworkManager.service

Усунення несправностей продуктивності

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

  1. Налаштуйте модерування IRQ/розмір дзвінка, як описано в розділі Модерування переривань.
  2. Збільште кількість потоків програми, щоб розподілити навантаження ЦП на більше ядер. Якщо всі ядра працюють на 100%, ваша програма може бути прив’язана до ЦП, а не до мережі.

Загальнодоступні інструменти:

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

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

  • Щоб отримати повний дамп лічильників i40e: ethtool -S ethX
  • Щоб спостерігати лише за ненульовими лічильниками: watch -d (ethtool -S ethX) | egrep -v :\ 0 | колонка
    Деякі речі, на які варто звернути увагу:
  • 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-info
    > hostname.txt
  2. Зберіть результат:
    ./svr-info > hostname.txt
  3. Вкласти один текст (.txt) file для кожного сервера до вашого запиту підтримки Intel для аналізу.

Рекомендації щодо загальних сценаріїв продуктивності

8.1 IP-переадресація

  • Оновіть ядро.
    Деякі нещодавні ядра у дистрибутивах погіршили продуктивність маршрутизації через зміни ядра в коді маршрутизації, починаючи з видалення кешу маршрутизації через міркування безпеки. Останні ядра поза дистрибутивом повинні мати виправлення, які зменшують вплив цих змін на продуктивність і можуть забезпечити покращену продуктивність.
  • Вимкнути гіперпотоковість (логічні ядра).
  • Відредагуйте параметри завантаження ядра.
    — Примусово вимкнути iommu (intel_iommu=off або iommu=off) із рядка завантаження ядра, якщо це не потрібно для віртуалізації
    — Вимкніть керування живленням: processor.max_cstates=1 idle=poll pcie_aspm=off
  • Обмежте кількість черг, щоб вона дорівнювала кількості ядер у локальному сокеті (12 у цьому прикладіample). ethtool -L ethX комбінований 12
  • Закріплення переривань лише для локального сокета. set_irq_affinity -X локальний ethX АБО set_irq_affinity -X локальний 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 вимкнути брандмауер sudo systemctl зупинити брандмауер
  • Увімкнути 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 core 0.
  • Закріпіть тест на ядрі 0 за допомогою набору завдань -c 0.
  • Вимкніть irqbalance за допомогою systemctl stop irqbalance або systemctl disable irqbalance
  • Запустіть сценарій спорідненості, щоб поширити між ядрам. Спробуйте або місцеве, або все.
  • Вимкніть модерацію переривання. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
  • Обмеження кількості черг дорівнює кількості ядер у локальному сокеті (32 у цьому прикладіample). ethtool -L ethX комбінований 32
  • Закріплення переривань лише для локального сокета (сценарій упаковано з джерелом драйвера i40e). set_irq_affinity -X локальний ethX
  • Використовуйте встановлений тест, наприклад netperf -t TCP_RR, netperf -t UDP_RR або NetPipe. netperf -t TCP_RR або netperf -t UDP_RR
  • Закріпіть контрольний тест на одному ядрі в локальному вузлі NUMA. набір завдань -c

Intel ® Ethernet серії 700
Керівництво з налаштування продуктивності Linux
грудень 2024 р
Док. №: 334019, ред.: 1.2

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

Налаштування продуктивності Linux серії Intel Ethernet 700 [pdfПосібник користувача
334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *