레이턴시는 관측 가능한 사건의 원인이 발생한 후 그 효과가 실제 관측되는 데까지 걸리는 시간입니다. 게임에서 레이턴시는 상당히 민감한 문제입니다. 만약, FPS 등의 게임에서 레이턴시가 높게 유지된다면 플레이어는 프레임 레이트가 아무리 높아도 반응이 느리다고 느낄 것입니다.
이러한 레이턴시가 발생하는 원인을 알아보겠습니다.
네트워크의 원인
멀티플레이 게임에서는 보통 발신지에서 출발한 패킷이 이동하는 과정에서 겪게 되는 지연이 레이턴시의 가장 큰 원인이 됩니다. 패킷이 생성되어 사라질 때까지 주로 겪는 지연 사항들입니다.
1. 처리 지연(processing delay)
발신 주소를 알아내고 적절한 경로를 결정하는데 시간이 걸리거나, 네트워크 주소 변환이나 암호화에 걸리는 시간입니다.
라우터의 처리 속도가 점점 더 빨라지는 추세이기 때문에 큰 문제가 되지는 않습니다.
2. 전송 지연(transmission delay)
라우터가 링크 계층을 거쳐 물리적인 매체로 패킷을 전달할 때, 물리적 매체에 비트를 기록하는 데 걸리는 시간입니다.
사용자가 연결된 링크 계층의 종류에 따라 결정되는 문제입니다. 대역폭이 높은 지역 근처에 서버가 있다면 전송 지연의 정도가 더 작아집니다.
패킷을 가능한 가장 큰 크기로 보내 헤더의 바이트 수를 줄이는 것도 방법입니다. 패킷 크기에서 헤더가 차지하는 비중이 크면 전송 지연에서 헤더가 차지하는 부분도 그만큼 커지기 때문입니다.
3. 큐잉(또는 버퍼링, 대기열) 지연(queueing delay)
라우터는 한 번에 제한된 양의 패킷만 처리할 수 있는데, 처리 가능한 용량보다 많은 패킷이 왔을 때 패킷이 대기열에 머무르는 시간입니다.
작은 패킷을 여러 번 보내는 것 보다 큰 패킷을 한 번 보내는 것으로 문제를 해결할 수 있습니다.
4. 전파 지연(propagation delay)
패킷이 전선을 타고 이동(=전파)하는데 걸리는 시간입니다.
최적화하기 가장 좋은 방법은 호스트를 가깝게 두는 것이지만, 그렇다고 항상 전파 지연이 최소화 되는 것은 아닙니다. 지역과 지역을 연결하는 직통 회선이 없다면 결국에는 우회하는 과정에서 지연이 발생하기 때문입니다.
네트워크 외의 원인
레이턴시의 주요 원인이 네트워크를 통해 패킷을 주고받는 과정에서 발생하는 부분이 크지만, 네트워크 외에도 유발하는 요소가 분명히 존재합니다. 그 중에는 사실상 해결 불가능한 것도 있습니다.
1. 입력 샘플링 레이턴시
사용자가 어떤 입력을 주었을 때 게임이 그것을 감지하는데 걸리는 시간입니다.
2. 렌더링 파이프라인 레이턴시
CPU가 렌더링 명령을 내린다고 GPU가 이를 바로 수행하지를 않습니다. 드라이버가 명령 버퍼에 렌더링 명령을 저장해두었다가, 적당한 시점에 GPU가 명령을 처리하게 됩니다. 때문에 많은 양을 렌더링 해야하면 GPU에 랙이 걸리게 되어 결국 레이턴시가 발생합니다.
3. 멀티스레드 렌더링 파이프라인 레이턴시
멀티스레드로 돌아가는 게임의 경우 렌더링 파이프라인 레이턴시가 더 심하게 발생할 수 있습니다. 하나 이상의 스레드는 게임 시뮬레이션과 월드 상태 업데이트를 하고, 그 결과를 하나 이상의 렌더링 스레드로 넘겨줍니다. 이렇게 하면 렌더링 스레드는 GPU에게 내릴 명령을 만드는 동안 시뮬레이션 스레드가 다음 작업을 계속 진행중입니다.
4. 수직 동기화
화면이 갈라진 것처럼 렌더링되는 현상을 막기 위해, 그래픽 카드의 프레임 생성 시간과 모니터의 프레임 출력 시간을 동기화하는 방법입니다. 이 방법을 사용하려면 GPU가 모니터의 다음 출력 시간까지 기다린 후 생성해야하는데, 렌더링에 오래 걸려 시간이 조금이라도 느려지게 되면 출력 시간을 놓치고 다음 출력 시간까지 지연이 발생하게 됩니다.
5. 디스플레이 랙
대부분의 HDTV나 LCD 모니터는 입력 화상을 실제로 띄우기 전에 소정의 영상 처리를 거칩니다. 이 처리에 십여 밀리초가 소모되어 레이턴시가 발생할 수 있습니다.
6. 픽셀 반응 시간
LCD 디스플레이를 구성하는 픽셀의 밝기와 색상이 변하는데도 약간의 시간이 소요됩니다. 대개 9밀리초 이하의 시간이지만, 오래된 디스플레이일수록 이 시간이 늘어나게 되어 레이턴시로 이어질 수 있습니다.
'Network > Network' 카테고리의 다른 글
[Network] 네트워크 토폴로지 (0) | 2022.05.19 |
---|---|
[Network] TCP/IP 스택 (0) | 2022.04.27 |
[Network] Packet Switching (패킷 스위칭) (0) | 2022.04.26 |