[S24] 또 GOS? 진실은 이겁니다
최근 유튜브를 통해서 S24 시리즈의 GOS 문제를 두고 말이 많습니다. 아니 또 GOS인가요? 라고 기겁하실 분들이 계실텐데, 천천히 살펴보죠.
GOS란?
사실 GOS라는게 S22 시리즈 당시에 크게 문제가 되기는 했지만, 이게 그때 새로 생긴 무언가가 아닙니다. 오래 전부터 갤럭시 기기에 있었고, 기능적으로는 게임을 실행할 때 자원을 어떻게 배분할 것인가를 결정해 주는 그런 기능입니다.
즉, GOS가 있으니 쓰레기, 무조건 삭제해야 좋은 것 = 이런 게 아니라는 겁니다.
S22 당시의 문제
그럼 S22 당시에는 뭐가 문제였을까요? 그때 당시에는 게임을 실행하는 족족, 시스템 상황에 상관없이 무조건적으로 성능을 강제로 제한해 버리는 문제가 있었습니다. 그래서 충분히 쾌적한 상황에서도 제대로 게임을 즐길 수 없는 문제가 있었죠.
벤치마크는 잘 나왔는데요? - 네, 당연하죠. '게임'이라고 인식이 되어야 그걸 바탕으로 동작하는게 GOS이니까요.
이것도 OneUI 4 시리즈와 함께 해결이 됐습니다. 그 이후에도 게임 퍼포먼스가 나빴던 건 순전히 스냅드래곤 8 Gen 1 시리즈의 한계였고, 심지어는 같은 AP를 사용한 타사 제품들 대비 S22 시리즈의 성능이 가장 좋은 편이었습니다.
S24의 GOS
어떤 유튜버가 S24에서 GOS를 무조건 꺼야 한다고 해서 난리죠. 그런데 이건 잘못된 결론입니다.
"유튜버 테스트 결과 원신에서 성능이 더 잘 나오던데요?"
네, 그것만 봐서는 사실입니다. 그런데 이건 GOS의 동작 메커니즘을 이해하지 못 하고 단순히 원신 하나만 돌렸을 때의 결과입니다.
GOS 시스템 상에서 게임 구동을 인지하면 기본적으로 GPU에 더 많은 자원이 배분될 수 있도록 합니다. 게임은 그래픽 성능이 중요한 경우가 많으니까요. 그래서 최적화가 정상적으로 되어 있는 게임은 GOS가 구동 되고 있어야 오히려 그 성능과 자원 효율성이 높아집니다.
그런데 원신으로 대표되는 유니티 엔진을 사용하는 게임들은 엔진 종특까지 더해져서 전반적으로 최적화 상태가 안 좋고 CPU를 집중적으로 이용하거나 그나마도 멀티코어를 제대로 활용하지 못 하는 문제가 있습니다.
이에 관해서는 나무위키에도 자세히 나와 있습니다
----------
설령 어찌해서 구현했다 해도 노력 대비 얻는 성능 향상이 크지 않아서 이를 동적 로딩(프리로드)에 응용하는 경우도 볼 수 있는데, 마찬가지로 유니티 API를 멀티스레드에서 안전하게 사용할 수 없으니 완벽한 동적 로딩을 구현하기는 힘들고 성능 향상도 기대에 미치지는 못한다. 즉, 고도의 편법을 완벽하게 익혀서 문제가 될 부분을 최소화하여 적용하지 않는 이상, 성능 이슈가 될 가능성이 높은 부분을 병렬화하지 못해 0번 코어만 죽어라 갈구는 경우가 될 가능성이 높다는 것이다.
실제로 유니티 엔진 4로 개발된 로켓 발사 시뮬레이션 게임인 Kerbal Space Program은 시뮬레이션 특성상 물리연산을 엄청 빡세게 하는데 이 물리연산 스레드를 코어 하나가 전부 감당해야 하기 때문에 어디가서 성능 좀 된다 하는 CPU도 부품이 많아지면 프레임을 제대로 못뽑는 상황이 무조건 발생한다. 이때문에 개발자가 유니티 엔진 5로 엔진을 갈아타는(!) 작업을 완료해 업데이트를 했지만, 그나마도 우주선 하나당 코어 하나씩 분담시키는 수준이 한계라고 밝혔다. 멀티스레딩이 안되어서 생기는 문제의 아주 대표적인 예. 물론, 이 문제는 KSP 못지 않게 연산량이 드럽게 많은 시티즈: 스카이라인도 마찬가지인데[23], 이 게임은 아예 유니티 본사 측에서 기술 지원을 해줬다(...). 그나마도 8스레드까지 인식하지만 실질적인 스레드 분담은 4스레드까지. 그래서 짝퉁 멀티코어 지원이라고 까이고 있다.
다수의 저성능 코어를 빅 리틀 솔루션까지 적용해가며 끌어모은 모바일 환경은 물론, 각 코어당 성능이 높은 편인 PC에서까지 영 좋지 않은 자원 활용도를 보일 수밖에 없다. 따라서 일정 수준 이상의 규모가 되는 게임을 개발하기에는 아쉬움이 크다.
출처: 유니티(게임 엔진) - 나무위키 (namu.wiki)
----------
그래서 "원신"을 기준으로 했을 때는 GOS가 기본적으로 동작하는 환경보다, 이걸 비활성화 했을 때 더 높은 성능이 나오는 겁니다. GPU로 더 많이 배분된 자원이 그쪽으로 가지 않기 때문인 거죠.
결국 근본적인 원인은 상태가 안 좋은 게임 엔진과 그것을 바탕으로 만들어진 게임들입니다. GOS는 당연하면서도 본연의 기능을 제대로 하고 있는 겁니다.
그러니 무턱대고 GOS를 비활성화 하는 건, 오히려 전체적인 사용자 경험을 더 떨어뜨릴 수 있으며, S22 당시와 같이 근본적인 성능 부족이 있는 것도 아니니, 이 부분은 매우 신중하게 접근해야 합니다.
[추가정보]
관련하여 문제제기와 함께 많은 데이터를 제시했던 한 유저에게 삼성 측에서 직접 댓글을 달고 내용을 확인해 주었습니다. 해당 부분은 '버그'였으며, 개선 사항도 나올 것으로 보입니다. 그러니 일단 기본값으로 사용하면서 기다려 보시는게 좋겠습니다.