게임 스터터링(Stuttering) 최소화를 위한 스케줄러 개발, 무엇이 문제인가?

by DD
4개월 전
조회수 8

게임 성능 향상을 위해 LAVD 스케줄러(Scheduler) 개발, 특히 스터터링(Stuttering) 현상 최소화에 초점

FPS(Frames Per Second), 특히 Low 1% FPS를 성능 지표로 활용, 에너지 효율성 고려

게임 벤치마킹(Benchmarking)의 어려움과 표준화된 벤치마크 부재에 대한 문제 제기

락(Lock) 문제Wine 환경에서의 동기화(Synchronization) 문제 해결 노력

LAVD 스케줄러(Scheduler)의 목표와 구현

LAVD 스케줄러(Scheduler)는 게임 워크로드(Workload)에 최적화되어 스터터링(Stuttering) 현상을 최소화하는 것을 목표로 한다. 특히, Low 1% FPS를 높게 유지하여 사용자 경험을 개선하는 데 중점을 둔다. BPF와 Rust를 사용하여 구현되었으며, SteamOS 및 Steam Deck 환경에서 Windows 게임의 성능 향상을 위해 개발되었다. 성능(Performance)과 에너지 효율성(Energy Efficiency)을 동시에 고려하여 설계되었다.

게임 벤치마킹(Benchmarking)의 어려움

게임은 데이터베이스(Database)와 달리 표준화된 벤치마크(Benchmark)가 부재하여, 새로운 스케줄링 정책의 효과를 입증하기 어렵다. 게임 엔진(Game Engine)의 업데이트, 외부 리소스 의존성, 그리고 FPS 변화와 스케줄러 변경 사항 간의 상관관계 분석의 어려움이 존재한다. 게임 스위트(Gamesuite)와 같은 벤치마크 구축의 필요성이 제기되었으며, MangoHud를 활용한 FPS 데이터 수집 방법이 제시되었다.

락(Lock) 문제와 Wine 환경에서의 동기화

Windows 게임은 Wine 레이어를 통해 Linux에서 실행되며, 이 과정에서 futexes를 사용하여 동기화를 처리한다. 락(Lock)으로 인해 작업이 지연되는 우선순위 역전(Priority Inversion) 문제를 해결하기 위해, LAVD는 작업과 futexes를 추적하여 락을 해제할 시간을 제공한다. Wine은 ntsync 드라이버를 도입하여 Windows NT 동기화 기본 요소를 지원하고 있으며, 이는 락 관련 문제 해결에 기여할 것으로 예상된다.

VaporMark와 Perfetto를 활용한 분석

VaporMark는 게임의 작업(Task) 런타임(Runtime) 시간을 분석하여 스케줄링(Scheduling)에 대한 통찰력을 제공한다. Perfetto는 미시적인 분석을 통해 병리적인 스케줄링 동작을 찾아내는 데 사용되었지만, 문제 발생 빈도가 낮아 분석에 어려움이 있었다. 고수준 뷰(High-level View)미시적 뷰(Microscopic View) 간의 상관관계 분석을 위한 도구의 부재가 아쉬움으로 남았다.

Lessons from creating a gaming-oriented scheduler