작동 방식
- 게임이 GPU 동적 전력 상태를 활성화합니다.
- GPU는 정규화된 프레임 통계를 계산하고 이를 이력 데이터로 저장합니다.
- GPU는 현재 요구량과 이력을 바탕으로 전력 상태를 자동으로 변경하여 에너지를 절약합니다.
게임은 XBOX Sustainability Toolkit의 나머지 부분을 채택해 에너지 소비를 더 줄일 수 있습니다.
사례 연구
Call of Duty: Black Ops 6
Call of Duty의 기술 담당 수석 이사, Rulon Raymond:DPS로 며칠간 실험했고 결과는 유망했습니다. 구체적으로, XBOX Sustainability Toolkit으로 도입한 부분 외에도 추가로 10–15%의 전력 절감을 확인할 수 있었습니다. 우리는 이미 메뉴나 프런트엔드 화면 같은 곳에서 게임 엔진의 일부를 스로틀링하고 있었고, 플레이어의 프레임 레이트에는 영향 없이 상당한 전력을 절감하고 있었습니다. 그런데 DPS 덕분에 추가로 무노력 절감을 얻을 수 있었습니다.Black Ops 6 팀의 출시 시점 계획:
- 이미 전력 절감 조치를 적용한 모든 영역에서 DPS를 활성화한다.
- 여러 날에 걸친 성능 테스트가 계속되는 동안 항상 DPS를 활성화하는 플래그를 기본 비활성화로 노출한다.
Two Point Museum
Two Point Studios의 기술 이사이자 공동 창립자인 Ben Hymers는 XBOX 팀이 관리하는 클라우드 설정을 통해 코드 변경 없이 DPS를 출시했습니다:우리는 에너지 효율을 극대화하기 위해 Constrained+ 모드와 함께 Dynamic Power States를 테스트했습니다. 이 기능들이 결합되어 메인 메뉴에서 전력 소비를 약 50–58% 줄였고, 제한 모드 중 에너지 사용량을 39–63% 절감했습니다. 롤아웃 이후 게임 플레이 품질 저하 없이 평균 에너지 소비가 눈에 띄게 감소하는 것을 확인했습니다. 예를 들어 XBOX Series X의 소비 전력은 평균 135 W에서 125 W로 낮아졌습니다. 이는 전체 플레이어 기반에서 연간 약 6.5 메가와트시 절감에 해당하며, TV를 65,000시간, 즉 거의 7.5년 동안 논스톱으로 시청하는 것과 같습니다.Two Point Museum은 클라우드 구성을 통해 DPS를 원격으로 채택한 최초의 서드파티 스튜디오입니다.
코드 변경 없이 DPS 테스트하기(개발 전용)
빌드를 다시 하지 않고도 devkit에서 DPS를 전역으로 활성화할 수 있습니다.1
devkit 업데이트
devkit에 최소한 2024년 8월 Recovery가 설치되어 있는지 확인하세요.
2
플래그 파일 생성
PC에서
DynamicPowerEnable이라는 이름의 빈 파일을 생성하세요.3
콘솔의 D: 드라이브로 복사
4
실행 및 프로파일링
게임을 실행하세요. 이제 DPS가 활성화됩니다.
5
테스트 완료 후 DPS 비활성화
실시간으로 DPS 관찰하기
PIX 또는 XBOX Manager의 콘솔 설정에서 Title Performance Overlay를 활성화하세요.- DPS가 활성화된 경우 오버레이 하단 오른쪽에 빨간 선과 GPU 전력 상태 지표(0–4)가 표시됩니다. 4는 최대 속도를 의미하며, 값이 낮을수록 에너지를 절약하고 있음을 뜻합니다.
- DPS가 비활성화된 경우 GPU 전력 상태는
N/A로 표시됩니다.
게임에서 DPS 활성화(리테일)
그래픽 디바이스의 기존SetDriverHintX() API를 사용합니다.
API
DPS 활성화
DPS 비활성화
프레임 통계로 런타임에서 DPS 감지하기
게임은 프레임 통계를 조회하여 DPS 동작에 따라 렌더링 결정(동적 해상도 등)을 내릴 수 있습니다.GetFrameStatisticsX
새로운 프레임 통계 유형이 제공됩니다.D3D12XBOX_RENDER_STATISTICS는 GPUBusyDuration을 반환합니다.
GPUBusyDuration은 정규화된 값이며, GPU 클럭이 P4에 있다고 가정하고 현재 전력 상태와 무관합니다. 전력 스케일링 프레임 통계는 전력 상태 변경의 영향을 받으며, GPUBusyDuration과 다른 값을 갖습니다.
예시
P4에서 8 ms 걸리는 GPU 워크로드가 P2(더 낮은 클럭)에서는 12 ms로 늘어난다고 가정합니다.정규화된
GPUBusyDuration은 게임 엔진이 동적 해상도 계산에 사용하기 때문에 그대로 유지됩니다. 정규화된 측정값과 스케일된 측정값을 분리함으로써, 더 낮은 전력 상태가 동적 해상도를 최저치에 도달할 때까지 계속 낮추게 만드는 피드백 루프를 방지합니다.