게임 렉 백서 › L11 디스크
HDD 탐색 지연 HDD seek latency
원인 ID dk-hdd · 주 담당 인프라팀·서버 인프라 · 함께 인프라팀·DB 인프라, 게임개발팀·서버 개발
그림과 실험이 있는 원본 카드로 열기 →
HDD는 헤드가 플래터 위를 움직여야(탐색, seek) 해서 흩어진 데이터를 읽고 쓰는 데 한 번에 10ms 가까이 걸립니다.
왜 오래된 서버나 저가 스토리지에서 HDD 사용 → 그러면 흩어진 읽기·쓰기마다 약 10ms → 화면에서는 전반적인 저장·로딩 지연
- 증상
- 입력 지연
- 요인
- 지연
- 누가 겪나
- 서버 전체
- 언제
- 항상
- 담당
- 주 담당 인프라팀·서버 인프라 · 함께 인프라팀·DB 인프라, 게임개발팀·서버 개발
- 게임개발팀 할 일
- 순차 쓰기 위주 설계.
- 인프라팀 할 일
- 서버 장비·OS: SSD로 교체(흩어진 읽기·쓰기가 많은 저장 디스크부터). DB 장비: 흩어진 읽기·쓰기가 가장 많은 DB 디스크를 먼저 SSD로 교체.
- 그래프에서는
- 처음부터 늘 높음 · 디스크 읽기·쓰기 지연(r_await·w_await)
- 확인할 곳
- lsblk -d -o NAME,ROTA로 회전 디스크(HDD)인지 확인하고, iostat -x 1의 r/s·w/s와 r_await·w_await를 봄. 가상 서버는 클라우드·스토리지 사양에서 디스크 종류를 확인함
- 이러면 맞음
- 회전 디스크이고 초당 요청이 수십~백여 개 수준인데도 r_await·w_await가 늘 수 ms~수십 ms
- 이러면 아님
- SSD인데 지연이 높으면 대기열 포화(dk-iops)나 버스트 크레딧 소진(dk-burst) 쪽
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
출처
- Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
디스크 탐색 한 번 10ms, 디스크에서 1MB 순차 읽기 20ms - Exos X18 Data Sheet Seagate
7,200rpm HDD 평균 회전 지연 4.16ms, 4K 무작위 읽기 170 IOPS - lsblk(8) — Linux manual page util-linux
-o로 출력 열 선택, 장치 토폴로지 열에 ROTA(회전형 여부) 포함 - ABI stable symbols Linux kernel
/sys/block/(디스크)/queue/rotational: 장치가 회전형인지 비회전형인지 나타냄 - iostat(1) — Linux manual page sysstat
-x: r/s·w/s, r_await·w_await(대기열에서 기다린 시간을 포함한 요청당 평균 처리 시간)
함께 보면 좋은 원인
같은 층: L11 디스크
같은 증상(입력 지연)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기