
**번역본뉴스입니다. 오역이 있을수 있습니다.
오늘 리눅스 커널 메일링 리스트에 게시된 일련의 패치 세트는 최근 바쁘게 구동된 CPU 코어에 대해 코어별 에너지 성능 선호도(EPP, Energy Performance Preference) 부스팅을 구현합니다. 이 기능은 리눅스 게이밍 환경에 극적인 영향을 미치도록 설계되었으며, 특히 밸브 스팀 덱(Valve Steam Deck)에서 1% Low 프레임레이트를 31.8% 향상시키는 데 도움을 줍니다.
메타(Meta)의 리눅스 커널 해커인 데이비드 버넷(David Vernet)은 리눅스 게이밍 성능을 돕기 위해 제안된 "epp_boost" 기능을 바탕으로 AMD P-State 드라이버 개선 작업에 나섰습니다. 버넷은 현재 AMD P-State CPU 주파수 스케일링 드라이버의 동작 방식과 이러한 동적 EPP 부스트 모드를 도입하게 된 동기를 다음과 같이 명확히 요약합니다:
"활성(Active/EPP) 모드에서 플랫폼은 EPP 힌트에 의해 편향된 min_perf와 max_perf 사이의 작동 지점을 자율적으로 선택하며, 커널은 정책이나 제한이 변경될 때만 CPPC 요청을 재작성합니다. 자주 짧은 휴식(sleep)을 취하는 주로 바쁜 하나의 스레드가 지배적인 워크로드(예: 게이밍 워크로드에서 흔함)는 이러한 전략하에서 좋지 않은 결과를 낼 수 있습니다. 각 휴식은 하드웨어의 성능 신호를 감쇄시켜, 작업이 가능하여 CPU가 사실상 완전히 바쁜 상태임에도 불구하고 대기에서 깨어난 직후의 버스트가 낮은 작동 지점에서 시작되도록 만들어 테일 레이턴시(tail latency)를 증가시킵니다.
위에서 언급했듯이, 여기서 주요 동기가 된 케이스는 게이밍입니다. 게임의 메인 스레드나 렌더 스레드는 일반적으로 매 프레임마다 퓨텍스(futex)나 GPU 펜스(fence)에서 잠시 차단(block)되며, 그 결과 발생하는 주파수 저하(droop)는 끊기는 프레임과 부풀려진 프레임 타임 백분위수로 직결됩니다.
cpufreq 레이어에서 이를 해결하려면 상당히 좁은 길을 걸어야 합니다. 전역적으로 EPP=performance를 강제 적용하면 테일 문제는 해결되지만 모든 워크로드의 모든 코어에서 전력을 낭비하게 되며, 이는 CPU와 GPU가 전력 예산을 공유하는 UMPC/핸드헬드 기기에서 매우 중요합니다. 바쁜 코어의 min_perf를 높이는 것이 명확한 정밀 처방처럼 보이지만, 이는 마이크로 유휴(micro-idle) 및 수직동기화(vsync) 대기 시간 동안에도 코어를 고정해 둡니다. 제가 진행한 반 고흐(Van Gogh / 스팀 덱) 실험에서 이는 SMU의 공유 CPU/GPU 부스트 관리를 교란시켜 아무것도 하지 않는 것에 비해 오히려 프레임 타임 테일을 악화시켰습니다.
따라서 이 패치 시리즈는 대신 옵트인(opt-in) 방식의 코어별 EPP 부스트를 추가합니다.
epp_boost모듈 파라미터가 활성화되면, update-util 훅(hook)이 최대 10ms마다 각 코어의 C0 점유율(delta MPERF / delta TSC)을 샘플링합니다. 샘플에서 코어가 최소 50% 이상 바쁜 것으로 나타나면 MSR_AMD_CPPC_REQ의 EPP 필드가 performance(0)로 설정되며, 바쁜 샘플 없이 300ms가 통과할 때까지 그 상태가 유지된 후 훅이 정책 관리가 마지막으로cppc_req_cached에 저장했던 요청을 복원합니다."
문명 6(Civilization VI) 게임 벤치마크를 사용한 최종 결과는 매우 흥미롭습니다. 1%-low FPS는 31.8% 향상되었고, p99 프레임 타임은 4.1% 개선되었습니다. 이는 스팀 덱에서의 결과이지만, 다른 최신 AMD 라이젠 핸드헬드 및 시스템 전반에서도 이점을 얻을 수 있을 것입니다.
이 패치 시리즈는 AMD P-State 드라이버에 해당 개선 사항을 제공합니다. 패치 적용 외에도 해당 모드를 활성화하려면 amd_pstate.epp_boost=1 커널 파라미터 설정이 필요합니다. 패치된 커널에서는 /sys/module/amd_pstate/parameters/epp_boost 경로를 통해 이 기능의 상태를 확인하거나 런타임에 설정할 수 있습니다. 문명 6는 용이성과 재현성 덕분에 이번 AMD epp_boost 기능의 테스트 후보로 사용되었으므로, 향후 더 다양한 게임에서의 영향력을 지켜보는 것도 흥미로울 것입니다.
유망한 이번 작업은 특히 AMD 리눅스 커널 엔지니어들의 패치 리뷰를 거쳐야 하지만, 머지않은 미래에 메인라인 커널에 업스트림되어 AMD 리눅스 게이밍 경험을 더욱 향상시킬 수 있기를 기대합니다.
--------------------------------------------------------------------------------------광고(Advertising)--------------------------------------------------------------------------------------------------------