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

Анатомия игровых лагов › L9 Процесс игрового сервера

Перегрузка однопоточной локации (хотспот) Single-threaded hot zone

ID причины sp-hotzone · Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Серверная инфраструктура

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

Если каждую локацию обслуживает один поток, то при скоплении игроков в одном месте на 100% загружается только одно ядро.

Почему Одну локацию (канал) обслуживает один поток → Следствие Когда игроки собираются в одном месте, загружено только это ядро, остальные свободны → На экране Лагает только эта локация, в других всё нормально

Симптомы
Слоумо, Задержка ввода
Факторы
Остановка
У кого
Одна локация или канал
Когда
При наплыве игроков
Ответственные
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Серверная инфраструктура
Команда разработки: задачи
Распределять игроков по каналам, распараллелить обработку внутри локации, ограничить число игроков.
Команда инфраструктуры: задачи
Добавить загрузку CPU по ядрам в мониторинг и алерты (в среднем по серверу перегрузка одного ядра теряется).
Цифры для ориентира
На 16-ядерном сервере одно ядро на 100% даёт общую загрузку CPU всего около 6%. Найти это можно, только глядя на загрузку по ядрам.
На графике
Растёт вслед за онлайном и нагрузкой · загрузка CPU по ядрам, CPU по потокам
Где смотреть
Посмотреть загрузку по ядрам через mpstat -P ALL 1 и CPU по потокам игрового процесса через pidstat -t 1, сравнить с числом игроков в зоне, которую обслуживает самый загруженный поток
Подтверждает
Общая загрузка CPU низкая, но один поток (одно ядро) держится около 100%, и в это время в зоне этого потока скопились игроки
Опровергает
Если равномерно загружены многие ядра, это общая перегрузка сервера. Если высок только %soft (обработка приёма) на одном ядре, дело в том, что прерывания NIC сосредоточены на одном ядре
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
Другие локации в порядке, только если тики в каждой локации идут независимо. Если потоки локаций каждый тик ждут друг друга, чтобы вместе перейти к следующему тику, самая загруженная локация замедляет тики всего сервера.
Реальные инциденты
CCP Games 2014: EVE Online: перегрузка сервера во время масштабной битвы флотов в HED-GP

Источники

  1. Time Dilation – How’s That Going? CCP Games
    Time Dilation в EVE Online действует на весь узел, поэтому замедляются и далёкие звёздные системы на том же узле. Крупные сражения обрабатывают на усиленных узлах, где размещены только 4 системы
  2. mpstat(1) — Linux manual page sysstat
    Показывает загрузку по процессорам и общее среднее отдельно (-P ALL). %soft: доля времени на обработку программных прерываний
  3. pidstat(1) — Linux manual page sysstat
    -t дополнительно выводит статистику по потокам процесса (загрузку CPU и т. п.)

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

Тот же слой: L9 Процесс игрового сервера

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

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