한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Анатомия игровых лагов › L6 Сетевая карта сервера

Ожидание объединения пакетов в GRO/LRO GRO/LRO batching

ID причины nic-offload · Основной ответственный Команда инфраструктуры · Серверная инфраструктура

Открыть карточку в основной версии с иллюстрациями и экспериментами →

GRO и LRO объединяют несколько пакетов в один, чтобы снизить нагрузку на CPU. При некоторых настройках маленький игровой пакет ненадолго ждёт следующий, чтобы объединиться с ним.

Почему NIC или ядро ОС объединяет пришедшие пакеты и обрабатывает их вместе → Следствие Если включено аппаратное объединение (LRO) или задано время ожидания объединения, пакет ненадолго ждёт следующий → На экране Небольшой рост задержки (обычно не больше нескольких десятков µs)

Симптомы
Задержка ввода
Факторы
Задержка
У кого
Весь сервер
Когда
Всегда
Ответственные
Основной ответственный Команда инфраструктуры · Серверная инфраструктура
Команда инфраструктуры: задачи
Подстроить под игровой трафик (выключить LRO, проверить настройку времени ожидания объединения), эффект обычно мал, поэтому проверять после других причин.
На графике
Высоко с самого начала · время туда и обратно внутри одного ЦОД
Где смотреть
Проверить состояние lro и gro через ethtool -k и значение gro_flush_timeout в настройках устройства в sysfs, сравнить время туда и обратно для маленьких пакетов внутри ЦОД до и после изменения
Подтверждает
LRO включён или gro_flush_timeout больше 0, и если выключить LRO или поставить 0, время туда и обратно для маленьких пакетов сокращается
Опровергает
Если разница после изменения в пределах единиц µs, причина в другом
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. NAPI Linux kernel
    Большой gro_flush_timeout даёт пакетную обработку, но при низкой нагрузке добавляет задержку
  2. Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters (ixgbe) Linux kernel
    GRO объединяет входящий трафик в крупные блоки ради экономии CPU, это более развитый вариант LRO
  3. ethtool(8) — Linux manual page ethtool
    Настройки gro и lro on|off в ethtool -K

Смотрите также

Тот же слой: L6 Сетевая карта сервера

Причины с тем же симптомом (Задержка ввода) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами