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

Анатомия игровых лагов › L11 Диск

Задержка позиционирования HDD HDD seek latency

ID причины dk-hdd · Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД, Команда разработки · Разработка сервера

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

У HDD головка должна перемещаться над пластинами (позиционирование, seek), поэтому каждое чтение или запись разбросанных данных занимает почти 10 ms.

Почему HDD на старых серверах или в дешёвых хранилищах → Следствие Около 10 ms на каждое случайное чтение или запись → На экране Сохранение и загрузка в целом идут медленно

Симптомы
Задержка ввода
Факторы
Задержка
У кого
Весь сервер
Когда
Всегда
Ответственные
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД, Команда разработки · Разработка сервера
Команда разработки: задачи
Проектировать запись так, чтобы она была в основном последовательной.
Команда инфраструктуры: задачи
Серверы и ОС: заменить на SSD (начиная с дисков для сохранений, где больше всего случайного чтения и записи). Серверы БД: в первую очередь перевести на SSD диски БД с наибольшим объёмом случайного чтения и записи.
На графике
Высоко с самого начала · задержка чтения и записи на диск (r_await, w_await)
Где смотреть
Проверить через lsblk -d -o NAME,ROTA, вращающийся ли это диск (HDD), и смотреть r/s, w/s, r_await и w_await в iostat -x 1. Для виртуального сервера тип диска смотреть в характеристиках облака или хранилища
Подтверждает
Диск вращающийся, и при нагрузке всего от десятков до сотни с небольшим запросов в секунду r_await и w_await постоянно держатся на уровне от единиц до десятков ms
Опровергает
Если диск SSD, а задержка высокая, вероятнее насыщение очереди (dk-iops) или исчерпание burst-кредитов (dk-burst)
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    Одно позиционирование головки диска 10 ms, последовательное чтение 1 MB с диска 20 ms
  2. Exos X18 Data Sheet Seagate
    Средняя задержка вращения HDD 7 200 rpm 4,16 ms, случайное чтение блоками 4K 170 IOPS
  3. lsblk(8) — Linux manual page util-linux
    -o выбирает выводимые столбцы, среди столбцов топологии устройства есть ROTA (вращающееся ли устройство)
  4. ABI stable symbols Linux kernel
    /sys/block/(диск)/queue/rotational: показывает, вращающееся устройство или нет
  5. iostat(1) — Linux manual page sysstat
    -x: r/s и w/s, r_await и w_await (среднее время обработки запроса, включая ожидание в очереди)

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

Тот же слой: L11 Диск

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

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