1:13 · frame time · RTT · server tick · diagnosis

렉 걸렸다. 서버 탓일까, 내 탓일까?

이 영상에 나오는 용어 15개.

락 경합
여러 스레드가 같은 자원을 잡으려고 서로 기다리는 상태다. 서버 틱 처리시간을 늘리는 흔한 원인이다.
렉
입력한 뒤 결과가 화면에 나타나기까지 늦어지는 체감 지연을 통틀어 부르는 말이다. 원인은 클라, 네트워크, 서버 어디에도 있을 수 있다.
메인 스레드 블로킹
게임 루프를 돌리는 스레드가 파일 읽기나 긴 연산에 묶여 다음 프레임을 처리하지 못하는 상태다.
앱 핑
서버의 게임 로직 큐와 틱을 거친 뒤 응답하는 핑이다. 전송 핑과의 차이가 서버 내부 대기 시간이다.
영향 범위
같은 증상을 겪는 사람이 나 혼자인지, 같은 망인지, 채널 전체인지를 뜻한다. 서버 회선 문제면 네트워크렉도 전체로 번지므로 핑과 함께 본다.
전송 핑
커널 · 소켓 단에서 재는 TCP RTT다. 게임 로직도, 클라 앱의 프레임 루프도 거치지 않으므로 순수한 네트워크 왕복 시간에 가깝다.
지터
RTT가 일정하지 않고 들쭉날쭉한 정도다. 평균 핑이 낮아도 지터가 크면 움직임이 끊겨 보인다.
틱 / 틱레이트
서버가 게임 상태를 한 번 갱신하는 주기가 틱이고, 초당 틱 수가 틱레이트다. 20Hz면 한 틱 예산이 50ms다.
틱 예산
한 틱 안에 처리를 끝내야 하는 시간 한도다. 처리시간이 이를 넘기면 다음 틱이 밀리고 틱레이트가 떨어진다.
패킷 손실
전송 중 패킷이 사라지는 비율이다. 영상의 네트워크렉 구간에서 0%에서 12%로 오른다.
프레임타임
클라가 화면 한 장(프레임)을 만드는 데 걸린 시간이다. 60fps를 유지하려면 프레임당 16.7ms 안에 끝나야 한다.
히치
평소 정상이던 프레임 중 하나가 갑자기 수백 ms 걸려 화면이 순간 멈추는 현상이다.
FPS
초당 그리는 프레임 수다. 프레임타임의 역수이며 영상에서는 정상 60, 히치 중 4로 표시된다.
GC 스파이크
가비지 컬렉터가 메모리를 정리하느라 실행을 잠시 멈추는 구간이다. 클라에서는 히치, 서버에서는 틱 지연으로 나타난다.
RTT (핑)
패킷이 클라에서 서버까지 갔다가 응답이 돌아오는 왕복 시간이다.