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

Guia do Lag em Jogos › L11 Disco

Latência de seek do HDD HDD seek latency

ID da causa dk-hdd · Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura), Desenvolvimento do servidor (Equipe de desenvolvimento)

Abrir o card interativo, com figuras e simulações →

No HDD, a cabeça de leitura precisa se mover sobre o prato (seek), então cada leitura ou escrita de dados espalhados leva perto de 10 ms.

Por quê HDD em servidores antigos ou storage barato → Efeito Cerca de 10 ms por leitura ou escrita espalhada → Na tela Atraso geral em salvamentos e carregamentos

Sintomas
Input lag
Fatores
Latência
Quem é afetado
Servidor inteiro
Quando
Sempre
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Infraestrutura de banco de dados (Equipe de infraestrutura), Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Projetar priorizando escritas sequenciais.
O que fazer (Equipe de infraestrutura)
Servidores/SO: trocar por SSD (começando pelos discos de armazenamento com muitas leituras e escritas aleatórias). Servidores de BD: trocar primeiro por SSD os discos do BD com mais leituras e escritas aleatórias.
No gráfico
Sempre alto desde o início · Latência de leitura e escrita do disco (r_await, w_await)
Onde olhar
Verificar com lsblk -d -o NAME,ROTA se é disco rotativo (HDD) e ver r/s e w/s, r_await e w_await no iostat -x 1. Em máquina virtual, verificar o tipo de disco na especificação da nuvem ou do storage
Confirma se
Disco rotativo, e r_await e w_await sempre entre alguns ms e dezenas de ms, mesmo com só dezenas a pouco mais de cem requisições por segundo
Descarta se
SSD com latência alta: mais provável, fila saturada (dk-iops) ou créditos de burst esgotados (dk-burst)
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    Um seek de disco 10 ms, leitura sequencial de 1 MB do disco 20 ms
  2. Exos X18 Data Sheet Seagate
    HDD de 7.200 rpm: latência rotacional média de 4,16 ms, 170 IOPS em leitura aleatória de 4K
  3. lsblk(8) — Linux manual page util-linux
    -o escolhe as colunas de saída; as colunas de topologia do dispositivo incluem ROTA (se é rotativo)
  4. ABI stable symbols Linux kernel
    /sys/block/(disco)/queue/rotational: indica se o dispositivo é rotativo ou não rotativo
  5. iostat(1) — Linux manual page sysstat
    -x: r/s e w/s, r_await e w_await (tempo médio de atendimento por requisição, incluindo a espera na fila)

Veja também

Mesma camada: L11 Disco

Mesmo sintoma (Input lag) em outras camadas

Ver o card interativo, com figuras e simulações