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

Анатомия игровых лагов › L10 Память

Промах кэша CPU cache misses

ID причины mem-cache-miss · Основной ответственный Команда разработки · Разработка сервера

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

Если данные разбросаны по памяти, CPU каждый раз ждёт медленную RAM.

Почему Объекты разбросаны по памяти и связаны указателями, обращения к ним идут вразнобой → Следствие Данных нет в кэше CPU, и их каждый раз приходится читать из RAM (примерно в 100 раз медленнее) → На экране Та же работа обходится тику в несколько раз дороже, в тяжёлых случаях слоумо

Симптомы
Слоумо
Факторы
Остановка
У кого
Весь сервер
Когда
Всегда, При наплыве игроков
Ответственные
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Размещать данные, которые часто используются вместе, подряд в памяти (data-oriented design).
На графике
Высоко с самого начала · время тика, загрузка CPU
Где смотреть
Запустить perf stat -d -p PID на процессе игрового сервера, измерить число инструкций за такт (insn per cycle) и промахи кэшей L1 и LLC, смотреть вместе со временем тика и загрузкой CPU
Подтверждает
CPU постоянно загружен, но insn per cycle низкий и промахов LLC много. Если в сборке с изменённым размещением данных время тика при том же онлайне заметно падает, причина подтверждена
Опровергает
Если загрузка CPU низкая, а тик медленный, дело в ожидании вне CPU: блокировки, ожидание ввода-вывода
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    Кэш L1: 0,5 ns, кэш L2: 7 ns, основная память: 100 ns (данные 2009 года). Обращение к RAM на один-два порядка медленнее, чем к кэшу
  2. perf-stat(1) — Linux manual page perf
    С -p считает аппаратные события работающего процесса и показывает insn per cycle, -d добавляет события кэша данных L1 и LLC

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

Тот же слой: L10 Память

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

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