랙(컴퓨터)
- 유희왕의 카드는 레이텐시 문서 참조.
1. 개요
Latency (레이턴시)라고도 불린다. 어감 차이가 약간 있긴 한데, lag은 주로 시간차에 대해서 "먹통"이라고 말할 때 사용하며, latency는 해당 시간차에 대한 수치를 약간 중립적인 입장에서 설명할 때 "지연시간"의 뜻으로 사용한다.
2. 상세
컴퓨터상의 랙. 간단하게 설명하자면 일시적인 지연 현상을 뜻한다. 특히 받은 입력을 처리하여 관련 출력을 낼 때까지 걸리는 랙에 관련할 때 인풋랙이라고도 한다.
lag이라는 단어의 몇 가지 뜻 중에서 '시간차이'라는 의미를 가져와서 활용하는 용어이다.
서버와 클라이언트간의 시간차이[1] . 디바이스간의 입력과 출력 시간 차이등 여러가지 경우에 사용된다.
사실 일반pc사용자들 사이에서는 랙이라고 하면, 온라인 게임 혹은 웹서핑 등의 인터넷 환경에서 서버나 클라이언트, 혹은 다른 클라이언트간에 시간적인 차이가 얼마나 발생하는지에 대해서 언급하는 경우라고 보면 된다.
현재 일반적인 컴퓨터의 경우 어떤 장치들을 어떤 방식으로 연결했던지 간에 동기화를 아무리 잘해도 장치들 간의 미세한 시간차이는 존재 할 수 밖에 없으며[2][3][4] , 당연히 이 시간차이가 크면 클수록 문제가 되므로 이 때 랙이 있다, 심하다 등으로 표현하게 된다.
컴퓨터의 성능이 프로그램이 요구하는 사항을 따라가지 못 하거나, 혹은 하드 디스크 드라이브에서 한 번에 많은 데이터를 읽어올 때 화면이 끊기는 현상(하드스왑)도 일반적으로 랙이라고 불린다. 이 경우는 흔히 '''컴랙'''이라고 불리는데, 컴퓨터를 '''3~5년마다 한번씩 바꿔야 하는''' 주요 원인이 되기도 했으나 2010년대부터 SSD가 대중화되고 나서부턴 시들해지긴 했다. 사실 컴퓨터의 하드웨어가 뒤떨어져서 컴퓨터의 처리 속도가 게임이 요구하는 수준을 따라가지 못해 생기는 현상이니 lag이라는 단어 자체의 뜻에 부합하기는 하지만. 이쪽 의미의 처리 속도 지연은 보통 프리징이라고 한다.
랙이 걸릴 경우, 프로그램(주로 게임)에 따라 온갖 진귀한 이상 현상들의 향연이 펼쳐지는 경우가 많다. 애초에 랙이 걸리는 모든 상황을 고려해서 예외 처리를 해 가면서 프로그래밍을 하기가 매우 힘들기 때문에 예측할 수 없는 버그가 나오게 되는데, 몇몇 온라인 게임들은, 이런 랙을 이용한 버그를 악용하여, 일부러 랙을 걸어서 온라인 게임 상에서 부당한 방법으로 이익을 얻는 경우도 있다.(대표적으로 초기 리니지 1 공성전의 '''랜선 뽑고 적 성 안에 들어가 왕좌에 앉기''' 버그가 있고 외국에서는 헤일로2에서 랜선 뽑아 순간 이동 버그가 있다.)
각종 온라인 게임에서 어떤 유저가 이것에 걸리면 주위 사람들이 짜증을 내게 되며, 반응속도가 매우 중요한 대전액션게임과 리듬게임은 이게 심해버리면 아무리 게임성이 좋아도 버림받게 된다. 이는 인터넷 브라우저들도 못 피해가는 문제. 랙이 자주 유발된다는 이유로 인터넷 브라우저를 갈아타기도 하고, 랙이 유독 잘 걸리는 특정 사이트나 서버는 자연히 사람들이 꺼리게 되기도 한다. 시중에 랙을 해결하기 위한 여러 방안들을 담은 자료들이 블로그나 유튜브 영상 등으로 돌아다니나 사실 잘 해결될 확률이 100%라고 하긴 힘들다. 무선랜 자체를 다른 기기로 갈아야 하는 문제, 혹은 컴퓨터 저사양의 문제 등 하드웨어 자체의 문제라면 제아무리 소프트웨어 쪽을 건드린다 해도 무용지물이기 때문.
3. 원인(서버-클라이언트 방식 기준)
랙이 일어나는 주요 원인은 서버나 클라이언트 중 어느 한 쪽 혹은 양쪽이 원활하게 데이터를 주고 받는데 문제가 있는 경우이다. 이 경우 서버-클라이언트 간의 회선에 문제가 생기거나, 혹은 서버에 문제가 생겨 제때제때 정보를 클라이언트로 전송하지 못하거나 하는 문제로 발생한다.
이런 현상을 해소하기 위해 2000년도 중후반부터는 랙 컴펜세이션이라는 기술이 도입되었는데, 이는 랙이 결국 서버와 클라이언트 사이에 신호가 오가면서 생기는 지연 시간 때문임을 감안해 그 지연시간 만큼 게임 내의 각종 판정을 지연시켜 처리하는 것이다. 예를 들어 핑이 50인 플레이어가 핑이 100인 플레이어에게 총을 쏘았다고 하면, 그 플레이어가 150밀리세컨드 전에 있던 곳에 총알이 맞아도 명중한 것으로 처리해주는 것. 물론 실제로는 계산이 저렇게 간단하지는 않다. 밸브의 랙 컴펜세이션 문서 참조. 지연사출은 이걸 악용한 꼼수.
핑이 100ms라면 "나"와 "서버"간 100ms의 응답지연이 발생한다. 내 입력이 서버로 도착하고, 응답이 나에게 오는 것이 100ms.
나-서버-타인 간 지연은 당연히 더 높다. 사실 100ms라면 0.1초로 길진 않지만, 이게 실제로 200~300ms까지 걸리기 때문에 랙을 더 심하게 느끼는 것.
4. 게임에서
흔히 게임 중 랙이 걸리는 이유가 인터넷 속도가 느려서라고 알고 있지만, 게임에서 쓰이는 데이터는 기껏해야 초당 1메가비트 안쪽이기 때문에 대역폭 보다는 응답속도(레이턴시)가 중요하다.[5] 인터넷 속도측정에서 ms단위로 측정되는 지연속도가 바로 그것. 랙 때문에 기가인터넷으로 바꿀 필요는 없다. 또한 해당 사이트에 많은 사람이 오면 '''트래픽'''이 생기면서 서버에 과부하가 생기는데, 이것 역시 랙의 일종이다. 나무위키 역시 특정 시간대에 랙을 경험할 수 있다.
여담으로 스타크래프트의 네트워크 옵션인 High latency는 레이턴시를 강제로 높여 플레이어 간 지연속도의 차이를 높은 레이턴시로 맞춰주는 것이다. 쉽게 말해 강제로 랙을 발생시켜 같은 랙을 느끼게 하여 평등하게 게임을 하게 하는 것. 56k모뎀시절에도 랙은 별로 없었다
이외에도 '위치랙' 이라는 것도 있는데, 서버에 보내는 현재 위치와 자신에게 표시되는 현재 위치가 달라지는 현상으로서, 특히 한발한발에 목숨이 왔다갔다하는 FPS게임에서 심각한 문제가 된다. 그래서 이 현상이 심각한 FPS는 오래 버티지 못하고 망하기 십상이다.
위치랙을 발생시키는 플레이어는 다른 플레이어들이 보기에 순간이동을 하는것처럼 보이기에 사람들이 불만을 가지지만, 발생시키는 유저 역시 한박자 늦게 모든게 보이기 때문에 정확히 조준하거나 먼저 쏘고도 단 한발도 맞히지 못한 채 죽게 되기 때문에, 결국엔 서버 내의 모든 인물이 분노를 폭발하게 된다. 위치렉이 발생한 플레이어 입장에서는 진행상황이 취소되고 다시 되돌아간 것처럼 보이기에 오버워치의 캐릭터에서 따와 트레이서라고 부르거나 도르마무라고 부른다.
SD건담 캡슐파이터 온라인은 대전액션 TPS인 주제에 위치랙이 무지막지 심각하여 유닛이 순간이동하는 것은 물론, 적 유닛은 분명 내 앞에 있는데 나는 뒤크리를 맞는 현상이 비일비재하다. 순간이동은 기본이며 슬라이딩하며 칼질하는 웃기는 광경도 있다. 게다가 고의로 위치랙을 만들 수도 있다. 그럼에도 불구하고 이 게임이 8년이나 버틸 수 있었던 이유는 단 하나. '''이 게임은 국내 유일의 건담 관련 온라인 게임'''이다.
마비노기는 제작당시 미래를 전혀 보지 않은 제작과정[6] 의 폐해가 점점 눈덩이처럼 불어나는 게임인데, 그 중 대표적인 것이 위치랙이다. G1때까지는 스킬들이 매우 정적이고 몬스터들도 기민한 반응을 보이는 경우가 드물었다.[7] 그래서인지 위치정보를 주고받는 루틴이 간결하다 못해 허술할 지경이다. 초기엔 별 문제가 없었지만 시간이 흐르면서 이리뛰고 저리 뛰는 스킬을 추가해대기 시작하니 점점 맛이 가서 별의별 위치랙이 다 걸리고, 유저는 그 랙에 적응해서 랙에 걸렸는지 안 걸렸는지를 직감으로 캐치해서 보이지 않는 적에 맞서 스킬을 쓰고, 위치랙을 위치랙 유발 버그로 푸는[8] 등 사상누각을 유저가 틀어막고 있는 판이다.
테라(MMORPG)에서도 종종 발생한다. 덕분에 힐러가 락온힐 한번 했다가 몹 앞으로 순간이동하거나 공격에 맞아 죽는 일이 많아졌다.
배틀필드 3 의 경우 외국 서버에서 플레이해 본 유저라면 알겠지만, 난 분명히 엄폐물 안으로 들어갔는데 밖으로 다시 끌려나와 죽는 예가 있겠다.
사이퍼즈도 위치랙이 심한 게임인데 콤보를 넣다가 누워있는 적이 순간이동하는 현상이 일어나서 위치랙 때문에 게임이 망하는 경우가 많다.액토에서도 위치랙이 나타났고,잡기중에 대미지가 들어가는 상황이 나왔다.
라테일도 위치랙이 심하게 걸리기로 유명하다. 서버컴퓨터가 낡았다는게 아닌가 추측이 오가고 있다. 이 위치랙이 두드러지는 곳은 도트누리. 한 대 맞으면 죽는 난이도에서 점프를 사용하는 고슴이군, 불덩이군이 대표적으로 빡치게 만든다. 플레이어도 위치랙으로 인해 텔레포트하고 점프하는 몬스터도 위치랙으로 텔레포트하니 투명몹에 쳐맞고 죽는 경우가 많다. 특히, 도트누리 4맵에 가보면 가끔 "투명 미트볼 씨x"같은 소리가 들리는데 위치랙잡힌 불덩이군에게 로드킬당한 것이다.
배틀그라운드에서도 위치랙이 심한 편이다.
TruckersMP도 위치랙이 심하다. 애초에 싱글 플레이 게임을 가져다 멀티플레이로 개조한 것이기 때문도 있다. 플레이어의 트럭이 순간이동해서 다른 플레이어의 트럭에 박아 큰 피해를 입히는데, 정작 순간이동한 본인은 알아챌 수 없다(...)
Roblox도 랙이 은근 많이 걸린다. 특히나 팬텀포스나 매드시티 같은 게임은 왠만한 컴퓨터로는 게임을 하기가 영 좋지않다. 랙 컴펜세이션 시스템이 없고, 심지어 한국엔 서버가 없기 때문에 애초에 상대적으로 핑이 높을 수 밖에 없다. 외국에서는 핑이 20~50ms 지만 한국은 대체적으로 70~150 정도다. 그리고 이건 한국에서는 컴이 좋든 서버가 쾌적하든 가장 좋은 수치고 컴의 사양이 떨어지든 하면 200~300ms는 기본이고 500ms도 훌쩍 넘길때가 있다.[9]
브롤스타즈는 서버렉으로 인해 레드 와이파이가 엄청나게 뜬다. 공유기 바로 옆에서 하는데도. 이걸 해결할려면 서버 증설을 해야하는데 슈퍼셀이 문제 하나 해결하는데 막대한 비용이 드는 서버 증설을 할지 의문이다.
4.1. 스터터링
일시적 랙으로 인해 게임이 버벅 거리는 현상을 주로 지칭한다. 특히 오픈 월드 게임에서 프리 로드할 데이터가 HDD에 있는 경우 잘 발생한다. 심할 경우 (순간) 프리징이라고 하기도 한다. 물론 해당 문서에도 있듯이 랙과 프리징은 엄밀히 구별되지는 않는 유의어 관계이기 때문에 스터터링/프리징이라는 말만으로는 정확히 어느정도 심한지 알 수 없다. 따라서, 객관적 증거가 필요한 상황이라면 후술할 내용을 참고해서 정확한 측정을 해보는 것이 좋다.
실시간 평균 프레임 측정으로는 잘 잡히지 않는 미세한 랙이 반복되는 현상을 따로 마이크로스터터링이라고도 한다. NVIDIA#s-6.3가 이걸 이용해서 경쟁사를 물먹인 적도 있다. 관련 사건사고인 마이크로스터터링 폭로 사건 참고. 요즘은 이를 확인하기 위해 평균 프레임과 1% Low 를 비교하는 방식을 주로 사용한다. 여기서 1% Low는 가장 높은 프레임부터 낮은 프레임까지 순서대로 정렬 후 최하위에서 딱 1%에 해당하는 값을 쓰는 방식이다. 근본적으로 중앙값과 같은 개념이지만 중앙(백분위 50%)이 아니라 하위 특정 위치(백분위 99%)를 사용한다는 점만 다르다. 따라서 평균값 대신 중앙값을 쓰는 경우가 왜 있는지를 알아야 1% Low의 의미를 더 정확히 알 수 있다. 1% Low는 상위 99%이기 때문에 99th 프레임이라고 쓰기도 하며, 0.1% Low도 같이 보여주는 곳도 있다.#
- 초기엔 평균/최저/최고 프레임을 표기하는 방식이 주류였으나, 최저/최고 프레임은 단 한 프레임의 측정치라는 특성상 측정 오차가 무지막지하게 날 수가 있어서 처음부터 큰 의미를 부여받진 못했다. 그나마 최고 프레임은 사람의 체감 성능과 관계도 거의 없는 편이고...그래서 NVIDIA가 정확한 측정 툴인 FCAT를 개발하여 마이크로스터터링 폭로 사건을 일으켰으나, 해당 문서에도 있듯이 2 PC 녹화를 사후 분석하는 방식이라 비용상 대중화되지 못했다. 결국 효율적이면서도 신뢰도가 괜찮은 마이크로스터터링 분석 방식을 찾다보니, 퍼센테일 분석을 거쳐서 대세로 자리잡은 방식이 1% Low이고, 더 민감하게 측정을 원할 경우 쓰는 게 0.1% Low인 것. 다만, 드물게 특이한 값(4% Low, 0.5% Low 등)을 쓰는 경우도 있다.
- 퍼센테일 및 1%, 0.1% Low는 편리하고 효율적이나, 완벽하진 않다. 단점은 벤치 구간을 너무 길게 잡으면 프레임이 안 나오는 구간에서 나온 스터터링 프레임들이 집계 대부분을 차지하게 되어서 나머지 구간 성능을 알 수 없게 된다는 점[10] . 그리고 맵을 열거나 로딩이 나오는 구간이 들어가 버리면 해당 부분에서 체감 성능과 관계 없는 스터터링 프레임들이 집계 대부분을 차지해서 이상하게 낮은 값이 나오게 된다. 따라서 해당 방법으로 마이크로스터터링을 정확히 측정하려면, 측정할 구간을 정확히 정하고 체감 성능과 상관없는 동작을 피해야 된다. (특히 맵이나 메뉴를 연다거나, 전체화면 로딩 스크린이 나오면 안 된다!) #
5. 여담
랙 '걸렸다'는 말 때문에 컴맹들은 컴퓨터 바이러스라고 생각하는 경우가 있다... 주변인이 컴퓨터가 느려지는 걸 보고 '랙 걸렸네'라고 하면 백신만 돌리기도(...)
6. 관련 문서
[1] 이 중, 어떤 이유로 갑자기 없었던 랙이 나타나는 것을 비유적으로 "Lag Spike"라고 부른다. ("랙 폭주" 정도로 해석할 수 있겠다.)[2] 예를 들어 키보드나 마우스입력이 모니터에 반영되는 경우에도, 당연히 pc와 모니터의 처리장치를 거쳐야 하기 때문에 입력과 모니터 출력간에는 당연히 시간차가 존재한다. 전문적으로 모니터를 테스트하거나 평가해서 따지는 단계에서는 그런것들을 종합적으로 수치를 측정해서 input lag이라는 항목으로 표기하고 비교하기도 한다. 주로 lcd 모니터가 이에 해당되며, crt 모니터의 경우 인풋랙이 거의 없다고 봐도 좋을 정도라 따지지 않는다. lcd 모니터를 측정할때는, 일단 인풋랙이 0이 되는 경우는 존재할 수 없기 때문에, 보통 인풋랙이 거의 없다고 해도 좋은 crt 모니터와 비교해서, 얼마나 차이가 나는가 하는가를 측정해서 참고로 한다. 그 수치가 해당 모니터 주사율로 따져서 1~2 프레임 이내인가 아닌가, 다른 모니터들 끼리 비교해서 평균적으로 어느정도인가.. 식으로 따지게 된다. [3] 극단적인 예로 모니터 화면과 사용자의 눈 사이에도 빛의 속도로 인한 랙이 발생한다. 일반 PC 사용에는 아무 의미없는 미소한 값이라 그냥 무시할 뿐(일례로 빛이 30cm를 날아가는데 대략 1나노초 조금 더 걸린다(...)). 빛의 속도로 인한 랙이 문제가 되는 건 우주적 스케일부터인데, 이걸 세계관 설정에 써먹은 게임 중 하나가 매스 이펙트 시리즈. 아님 나노초 스케일 랙 자체에 주목한다면, 컴퓨터 내부 메모리 계층 구조 등 고성능 부품 관련 얘기도 될 수 있겠다. 예를 들어서 현재 PC레벨에서 사용하는 DRAM의 지연 시간은 20~100ns 정도이기 때문에 수십 나노초 스케일이며, L3 캐시 등 CPU 내부에 있는 캐시 메모리는 최신 CPU 기준 1~20ns 정도이기 때문에 수 나노초 스케일이다. 때문에 메모리 오버클럭으로 메인 메모리 지연시간을 70나노초에서 50나노초로 줄이거나 하면 (작업에 따라) 유의미한 성능 향상을 얻을 수도 있다.[4] G싱크 관련 벤치를 많이 둘러본 사람은 알겠지만, 컴퓨터 전체의 인풋랙(입력 지연)을 벤치하는 경우 FPS 게임에서 마우스를 클릭하고 화면상의 총기에서 불을 뿜기까지 걸리는 시간을 1000Hz 이상의 고속 촬영을 통해 ms 단위로 측정한다. 잘 세팅된 게이밍 PC라면 100ms 이하(50~100ms 정도)가 나온다. 대충 맞춘 구형 PC라면 200~300ms까지 나올 수도 있는데 이 정도까지 가면 어지간히 둔감한 사람이 아니면 직접 체감이 가능한 수준이다. 당연히 게임의 유불리에도 영향을 준다.(웬만한 FPS에서 500 RPM이면 상당히 느린 총기인데, 200ms 지연시간이라면 총알을 1발 이상(정확히는 평균 1.67발 정도) 더 쏴줄 수 있는 시간이다. 물론 밀리초 스케일이므로 마이크로초 이하의 지연은 실질적인 의미가 없어서 무시한다. 바로 앞 각주에서 언급한, 빛의 속도로 인한 나노초 스케일 랙이라던가....[5] 따지고보면 응답속도도 속도니 틀린건 아니다.[6] 멀티코어 사용은 고려 못할 수 있다 쳐도 당시 한창 폭발적으로 발전하기 시작하던 GPU를 개무시하고 CPU에 작업을 몰빵시키는 엔진을 제작한 것은 분명한 오판이다.[7] G1때도 활은 있었지만 망부석 그런거 없고 잘만 쏘고 다녔다.[8] 대표적인 것이 교역중에 전투 인카운터시 탑승물 위치 오류. 동일한 속성의 오류를 일으켜 바로잡을 수 있다.[9] 다른 게임들은 몰라도 팬텀포스, 매드시티 같은 고사양 게임들은 제대로 게임을 즐기려면 장비를 맟춰야 하는데 비용이 최소 50만원,최대 100만원 가량이 필요하다. 그중에서도 팬텀포스는 로블록스 게임중에서도 발적화 top, 그래픽 top, 사양 top인 게임이다.[10] 이는 2015년 GDC에서 NVIDIA가 발표한 자료에서도 지적하고 있다. # ('그러나 프레임 렌더링 백분위 그래프를 과신해선 안 된다는 것을 보여주는 예' 부분 참고) 초반엔 프레임타임이 짧고=초당 프레임이 높고 마이크로스터터링이 심한데, 후반에 프레임타임이 길고=초당 프레임이 낮고 마이크로스터터링이 거의 없는 구간이 Low 집계 대부분을 차지해서 초반의 프레임타임이 튀는 마이크로스터터링 프레임들은 정작 집계에 안 잡히는 현상을 지적하는 거다.