윈도우 10 1903 업데이트, 심화편 라이젠 미세 끊김, 프레임타임 분석 안녕하세요. 퀘이사존벤치입니다. 지난 6월 15일, 퀘이사존은 윈도우 1903 업데이트에 따른 라이젠 성능 칼럼을 등록한 바 있습니다. 해당 칼럼은 라이젠에 대한 높은 기대 그리고 AMD 특유의 성장형 제품 이미지 덕분인지 정말 많은 분들께서 관심을 보여주셨는데요. 이런 높은 관심도와 비례하여 회원분들께서는 추가적인 문의도 많이 보내주셨습니다. 특히 칼럼이 등록되기 이전 시점에서는 이미 1903 업데이트에 따른 회원분들의 성능 향상 게시글과 기대 여론이 무르익은 상태였으나, 상대적으로 아쉬운 결과의 칼럼 내용이 후폭풍을 몰고 오지 않았나 하는 생각도 들고요. 사실, 저의 솔직한 심정을 글로 옮겨본다면, 하나의 칼럼으로 최대한 많은 궁금증을 해소시켜드리고 싶었으나 항상 시간과 여건을 고려해야 하는 현실적인 문제가 스스로를 타협하게 만들었습니다. 이런 과정의 결과로, 결국 해당 칼럼의 테스트 내용만으로는 회원분들의 가려움을 시원하게 긁어드리지 못했던 것 같군요.
▲ 아직 밝혀지지 않은 성능 향상이 또 있을까?! 대표적인 문의 내용은 칼럼 내용에 포함되어 있지 않은 1%/0.1% low framerate 데이터와 메모리 클록(3200 MHz 수준보다 낮은 클록)에 따른 성능 향상이었습니다. 전자의 경우 평균 FPS/최소 FPS와 같은 데이터가 가지는 성능에 대한 실증적 한계로 인해 실제 사용자가 느끼는 체감 성능을 온전히 입증하기 어렵다는 점에서 저 역시 공감하는 부분입니다. 또한, 메모리 클록의 경우 1903 업데이트가 실질적으로 CCX 운용을 개선하는 특성과 말미암아 CCX 간의 인터커넥트 기술, 인피니티 패브릭(대역폭이 메모리 클록과 동기화되는 특성)이 핵심 변인이 될 수 있습니다. 결국 낮은 메모리 클록에서 업데이트 효과가 더 커질 수 있다는 가설 역시 흥미로움 검증 포인트죠. 따라서 추가 검증의 필요성을 스스로 느낀 이상 납득할 수 있는 매듭을 짓기 위해 이렇게 추가 테스트를 편성하고 또 진행하게 되었습니다. 추가 테스트 내용은? 첫 번째로 1% low framerate와 0.1% low framerate의 데이터 추가입니다. 일반적으로 퀘이사존 포함, 주요 하드웨어 매체/커뮤니티에서는 게임 테스트에서 성능을 대변하는 데이터로 평균 FPS와 최소 FPS를 주로 사용합니다. 평균 FPS는 말 그대로 테스트 구간에서 누적된 전체 프레임(frame)을 초 단위로 나누어 평균값을 구한 것이며, 통상적으로 평균 FPS의 상대적 지위가 그대로 게임 성능의 지위를 결정하게 됩니다. 반면, 최소 FPS는 테스트 구간에서 기록된 가장 낮은 FPS 값을 뜻하며, 평균 FPS 데이터를 보조하는 의미를 갖습니다. 그렇다면, 1% low framerate와 0.1% low framerate는 도대체 무엇을 말하는 것일까요? 이를 설명하기 위해서는 아주 기초적인 개념부터 차근차근 정리가 필요합니다. 사실, 본 칼럼에서 가장 중요하고 핵심적인 요소이기 때문에, 반드시 짚고 설명해야 할 부분입니다. 해당 데이터에 대해 이미 충분한 이해가 있으신 분들은 이어질 개념 설명 내용을 가볍게 넘어가 주시길 바랍니다. 두 번째는 메모리 클록에 따른 성능 차이입니다. 기존 칼럼에서는 3200 MHz CL14 환경에서만 테스트를 진행하였는데요. 본 칼럼에서는 2666 MHz CL18 환경에서 윈도우 업데이트에 따른 성능도 확인해보았습니다. 이를 통해 메모리 클록에 따라 업데이트의 효능이 달라질 수 있는지 여부를 알 수 있습니다. 칼럼 해석을 위한 주요 개념 설명 (1) FPS = Frames per second, FPS = Frame(x)
FPS는 Frames per second의 약자로 1초 단위 기준의 프레임 수를 말합니다. 설마 게임 장르 중 하나인 FPS(First Person Shooter, 일인칭슈팅게임)와 헷갈리는 분은 안 계시겠죠? 여기서는 쉬운 이해를 위해 3D 게임 분야에 국한 지어 FPS를 설명하도록 하겠습니다. 게임 A가 30 FPS로 렌더링 된다고 가정해봅시다. 이 말은 결국 1초에 30장의 정지 이미지(=frame)가 연속으로 재생되는 것을 말합니다. 60 FPS라면 1초에 60장의 이미지로 채워지는 것이고요. 60 FPS는 30 FPS에 비해 두 배에 달하는 이미지로 구성되기 때문에, 게임상의 캐릭터 애니메이션이나 화면 전환이 훨씬 부드럽게 느껴지게 됩니다. 또한, 일반적인 모니터가 60 Hz(1초에 60번 화면 갱신) 주사율을 갖게 되므로, 60 FPS는 게이머에게 부드러운 게이밍의 상징적 숫자이자 목표 성능으로 각인되어 있습니다. 최근에는 고주사율(120/144/240 Hz)을 지원하는 게이밍 모니터 보급률이 증가하면서 FPS에 대한 갈증도 함께 높아지는 추세지만, 아직까지는 60 FPS가 상징성을 잃지 않고 있죠. 즉 1장의 이미지를 렌더링하는 데 소요되는 시간은 그래픽카드 성능이 좋을수록 짧아지기 때문에, 결국 고성능의 그래픽카드는 1초에 더 많은 이미지를 렌더링하여 높은 FPS를 내어줄 수 있습니다. 우리가 그래픽카드 벤치마크나 CPU 게임 성능 벤치마크에서 평균 FPS를 주목하는 이유가 바로 여기에 있습니다. 높은 평균 FPS는 곧 높은 게임 성능을 뜻하기 때문입니다. (2) 평균 FPS와 최소 FPS의 정체
▲ 평균 FPS와 최소 FPS 표기 예 이제 FPS를 알았으니 나머지는 술술 넘어갈 수 있을 것입니다. 평균 FPS는 테스트 구간에서 렌더링된 누적 프레임(frame)을 테스트에 걸린 시간(단위는 초)으로 나눈 값을 말합니다. 즉 10초 동안 게임 테스트를 진행하면서, 렌더링된 프레임이 총 600장이라면, 평균 FPS는 600을 10으로 나눈 60 FPS가 됩니다. 하지만 실제 게임에서는 각 장면(=frame)마다 시스템에 요구하는 연산 수준이 다르기 때문에, 0~1초 구간은 45 FPS, 1~2초 구간은 75 FPS, 2~3초 구간은 90 FPS, 3~4초 구간은 30 FPS 이렇게 각 구간마다 FPS는 상이하게 나타날 수 있습니다. 이렇게 테스트를 진행하면서 기록된 가장 낮은 FPS 구간을 최소 FPS로 칭하는 것이고요. 게이머의 체감 성능을 생각한다면 평균 FPS와 최소 FPS는 서로 가까울수록 좋습니다. 급격한 FPS의 변동은 3D 게임에서 이질감을 느끼게 하고, 불쾌감으로 다가올 수 있기 때문이죠. 이제 FPS 개념은 충분히 설명했으니 Frame time으로 넘어가보겠습니다. (3) Frame time
▲ 프레임타임 그래프 예시(y축은 프레임타임, x축은 연속되는 개별 프레임 번호) FPS 수치가 가지는 대표성 때문인지 사실 Frame time은 생소하게 느껴지실 분들이 제법 계시리라 생각되는데요. 어떻게 보면 오늘 칼럼의 핵심 개념이기 때문에, 한번 이해해두시면 앞으로도 다양한 자료 해석에 큰 도움이 되리라 생각합니다. Frame time, 직역하면 프레임 시간입니다. 하나 예를 들어보겠습니다. 한 테스트에서 최소 FPS가 30 FPS로 측정되었다고 가정해보겠습니다. 그렇다면, 우리가 해당 게임에서 느낄 수 있는 최악의 체감 성능은 30 FPS 수준이라고 말할 수 있을까요? 정답은 그렇지 않습니다. 최소 FPS가 30 FPS라는 것은 그 자체로 다른 해석의 여지가 없는 완전하고 분해할 수 없는 데이터라는 뜻이 아닙니다. 그저 테스트 구간 중에서 생성된 프레임 누적 수가 가장 낮았던 1초 단위 구간이 30장의 이미지로 구성되었다는 것을 말해줄 뿐이죠. 따라서 우리는 좀 더 깊숙한 접근을 위해 30 FPS의 정체를 쪼개서 볼 필요가 있습니다. 30 FPS는 1초에 30장의 이미지가 존재하는 것이고, 평균적으로 1장의 이미지가 노출되는 시간은 1초를 30으로 나눈 0.033.33(이하 소수점 단위 생략)초입니다. 이것을 다시 밀리초(millisecond)로 변환하면 33.33 ms가 되겠죠. 즉 1장의 이미지(=frame)를 렌더링 하는 데 소요되는 시간이 33.33 ms란 뜻도 됩니다. 그리고 이 시간을 프레임타임(Frame time)으로 규정하는 것이죠. 결국 해당 수치가 낮을수록 성능이 좋다는 뜻입니다. 그러나 앞서 말씀드렸던 것처럼 개별 3D 이미지 모두가 동일한 연산 능력을 요구할 것이라는 보장은 없습니다. 겉으로 드러나는 수치는 30 FPS지만, 30장의 이미지 중 어떤 이미지는 렌더링에 소요된 시간이 33.33 ms를 초과할 수도 있고, 어떤 이미지는 더 빠른 시간 안에 완료될 수도 있습니다. 결과론적인 접근에서 1초에 담긴 이미지들을 합쳐봤더니 총 30장이 되었다(=30 FPS)라고 이해하시면 됩니다. 이런 이유로 종종 FPS 수치는 양호한데, 이상하게 체감 성능은 훨씬 낮게 느껴지는 경험도 가능합니다. 같은 30 FPS라도, 프레임타임이 균일한 30 FPS와 프레임타임 균일성이 매우 불량한 30 FPS는 완전히 다른 체감 성능으로 나타나기 때문이죠. 따라서, 이런 FPS의 맹점을 걷어내고자 하드웨어 매체/커뮤니티는 마이크로스터터링(micro-stuttering) 테스트라는 것을 행하기도 합니다. 프레임타임을 나열한 그래프인데요. 오늘 칼럼에서도 마이크로스터터링 테스트가 등장하니 관심 있게 지켜봐주시기 바랍니다. (4) 1% low framerate, 0.1% low framerate 이제 프레임타임을 이해했으니 1% low framerate와 , 0.1% low framerate 수치도 해석할 수 있습니다. 본 개념은 최근 최소 FPS에 대한 의미 해석에 무용론이 불거지면서 대두된 데이터 종류인데요. FPS가 아닌 프레임타임을 기반으로 데이터를 산출하고 이를 다시 FPS 값으로 변환하는 방식을 가집니다. 말이 헷갈릴 수 있는데, 사실 산출하는 공식은 어렵지 않습니다. 먼저 테스트 구간에서 기록된 모든 프레임타임을 분석하여 하위 1% 데이터에 대한 평균 값을 구합니다. 해당 데이터의 정체성은 프레임타임이므로 단위는 ms가 되겠죠. 그리고 이를 다시 FPS에 상응하는 값으로 변환하는 과정을 거칩니다. 아무래도 FPS 단위로 변환하는 것이 보는 이에게 피부에 와닿는 성능 해석이 가능하기 때문이죠. 실제로 예시를 통해 FPS 수치 변환을 실습해보도록 하겠습니다. 하위 1%에 해당하는 프레임타임 데이터들의 평균값을 구해봤더니 결과가 16.67 ms라고 가정해보겠습니다. 이는 1장의 이미지(=frame)를 렌더링 하는 데 걸린 시간이 16.67 ms라는 뜻이기 때문에 1초를 16.67 ms로 나누어주면 FPS 변환 값을 얻어낼 수 있습니다. 한번 계산해보도록 하죠. 1/16.67=59.98이라는 숫자가 나왔습니다. 결국 60 FPS에 상응하는 성능이라는 말이 됩니다. 반대로 60 FPS 수치 역시 1초 나누기 60 계산을 통해 최초의 프레임타임값이 나오는 지 검산할 수 있습니다. 계산 결과는 16.67ms, 정확하게 나오는군요. 같은 방식의 계산을 통해 0.1% low framerate도 산출할 수 있습니다. 유일한 차이는 기준으로 삼는 프레임타임 데이터가 하위 1% 평균값이 아닌 하위 0.1%를 대상으로 한다는 점입니다. 자 여기까지 모든 내용을 이해하셨다면, 이제 본 칼럼에서 등장할 그래프 해석에는 전혀 문제가 없을 것입니다. 1903 업데이트 1화 칼럼에서와 마찬가지로 기본적인 테스트 그래프를 첨부하고, 칼럼 말미에서 해석과 정리 내용을 이어가도록 하겠습니다. 변인 통제 변인 통제에 대한 내용은 1903 업데이트 1화 칼럼에 자세히 나와있으니 링크를 참고해주시기 바랍니다. 추가적인 내용으로는 1화 칼럼과 달리 frametime 및 1%/0.1% low framerate 등 추가 데이터 취합을 위해 fraps/RTSS와 같은 실시간 유틸리티를 구동하였고, 이는 저장장치 I/O 부담 및 프로세스 증가로 이어졌습니다. 따라서 본 칼럼에서 산출된 데이터를 1화 칼럼 데이터와 비교하는 것은 신뢰성이 떨어진다는 것을 알려드립니다.
▲ 윈도우 10 v1809 테스트 시스템 화면
▲ 윈도우 10 v1903 테스트 시스템 화면 벤치마크 시스템 사양
3200 MHz CL14 - 게임 5종 테스트 결과
2666 MHz CL18 - 게임 5종 테스트 결과
마이크로스터터링 테스트 마이크로스터터링 테스트는 3D 게임 구동 시 느낄 수 있는 미세 끊김의 수준을 프레임타임 데이터 나열을 통해 유추할 수 있게 도와주는 테스트입니다. 하나 예시를 들어보도록 하겠습니다. 3D 게임 구동 시 모니터링 툴을 통해 측정되는 FPS 수치는 분명 높은데, 정작 게이머는 미세하게 끊기는 느낌이 드는 경우가 있습니다. 분명히 끊기는 느낌이 드는 건 맞는데 정작, FPS 수치상으로는 아무 문제가 없어 게이머는 답답함을 느끼게 되죠. 이런 증상을 흔히 마이크로스터터링이라고 칭합니다. 그리고 그 정도를 알아보기 위해서는 각 프레임의 지연시간(=Frame time)을 측정하여 순차적으로 그래프에 표현해보면, 프레임타임 값의 균일성을 통해 비교적 쾌적한지 아니면 불량한지 알 수 있습니다. 따라서 본 칼럼에서는 1차 칼럼에서 최소 FPS로 표현할 수 없었던 미세 끊김 영역까지 분석하여, 업데이트로 인한 개선이 있었는지 여부를 확인해볼 수 있을 것입니다. 그래프를 보는 방법은 간단합니다. 각 프레임타임 데이터가 중심을 이루고 있는 데이터에서 크게 벗어나지 않고 주변부를 맴돈다면, 균일성이 우수하다고 볼 수 있습니다. 반면, 주기적으로 혹은 불규칙적으로 중심에서 크게 벗어난 데이터가 다수 발견되거나 균일성이 매우 떨어진다면, 체감 성능에 악영향을 준다고 볼 수 있겠죠. 본격적으로 그래프를 통해 살펴보도록 합시다. (1) 메트로 엑소더스 |