다음을 통해 공유


백그라운드 작업을 최소화하여 전력 소비 및 배터리 수명 향상

이 가이드에서는 Windows 애플리케이션에서 전원을 사용하는 방식을 개선하는 방법을 보여 줍니다. 전반적인 디바이스 성능 및 배터리 수명을 개선하는 데 도움이 되는 원칙을 제공합니다.

전력 소비를 개선하기 위한 가장 기본적인 원칙은 앱이 백그라운드에 있는 동안에는 다음을 수행하지 않도록 하는 것입니다.

  • 시스템 리소스 사용
  • 타이머를 통해 CPU를 깨우고,
  • vsync 이벤트를 대기하여 CPU를 깨워 줍니다.

"백그라운드에서"가 된다는 것은 앱이 사용자에게 표시되지 않거나 들리지 않음을 의미합니다. 백그라운드에서 CPU를 깨우거나 시스템 리소스를 활용할 이유가 거의 없어야 합니다. 앱이 이러한 이벤트를 트리거하는지 확인하고 원인을 해결하면 앱의 전원 소비량, 배터리 수명을 크게 개선하고 앱을 사용하는 고객의 탄소 배출을 줄일 수 있습니다.

앱이 사용되지 않는 동안 CPU가 불필요한 작업을 수행하기 위해 깨어나지 않는지 확인하려면, Windows Performance Analyzer (WPA)를 사용하여 추적을 캡처하고 분석할 수 있습니다. 아래에서 수행하는 방법을 설명하는 단계를 안내합니다.

추적 데이터를 캡처하고 불필요한 부하를 확인하세요

추적을 캡처하기 전에 앱을 실행할 때 올바른 조건을 설정하여 전원을 소모할 수 있는 불필요한 작업이 수행되고 있는지 여부를 분석하는 것이 중요합니다. 또한 다양한 조건에서 앱을 테스트하기 위해 여러 추적을 실행할 수도 있습니다.

설치

  1. 작업 관리자를 열고 CPU 사용률이 5%미만인지 확인하여 테스트 디바이스를 유휴 상태로 전환합니다. 이렇게 하면 측정 간섭을 최소화하고 적절한 크기 추적을 제공합니다.

  2. 앱을 시작하고 일반적으로 사용되는 보기로 이동합니다.

  3. 앱을 최소화합니다. *앱 창이 다른 창 뒤에서 완전히 차단(보기에서 차단됨)되고 앱이 포그라운드에 있는 경우 사용자가 상호 작용하지 않는 기간 동안 앱에서 불필요한 작업이 시작되지 않도록 하려면 다음 단계를 반복할 수 있습니다.

백그라운드에서 CPU 사용 측정 및 평가

  1. 관리자 모드에서 명령줄(PowerShell 또는 명령 프롬프트)을 엽니다. (관리 모드에서 실행되지 않으면 0xc5585011 오류 코드, "정책에서 시스템 성능을 프로파일하는 데 실패했습니다."가 표시될 수 있습니다.)

  2. 다음 명령을 입력합니다. wpr -start power -filemode

  3. 디바이스를 5분 동안 유휴 상태로 둡니다.

  4. 다음 명령을 입력합니다. wpr -stop idletrace.etl

  5. WPA(Windows Performance Analyzer)를 사용하여 추적을 열려면 다음 명령을 입력합니다.wpa.exe idletrace.etl

  6. 계산>CPU 사용량(정밀) 그래프를 엽니다.

    • 프로세스(또는 앱과 관련된 모든 프로세스가 다중 프로세스 모델이 있는 경우)로 이동하고 Cswitch 개수인 "CPU별 사용률"을 평가합니다. 이상적으로는 앱이 백그라운드에 있는 동안 가능한 0에 가깝습니다. 스택을 살펴보면 리소스가 사용되는 위치와 이를 개선하는 방법을 찾을 수 있습니다.

    • "새 스레드 스택"을 추가하여 스레드가 깨어난 스택을 확인하여 과도한 웨이크를 확인합니다.

    CPU 프로세스, 개수 및 사용 비율을 보여 주는 WPA 그래프

  7. 계산>CPU 사용량(샘플링) 그래프를 엽니다. 코드 내 시간이 실행되는 위치를 평가하여 CPU 사용량 문제를 추적합니다.

백그라운드에서 대기 중인 vsync 측정 및 평가

메모

이 고급 시나리오를 조사하기 전에 이전 섹션의 기본 CPU 사용량에 집중합니다.

  1. 관리자 모드에서 명령줄 (PowerShell 또는 명령 프롬프트)을 엽니다.

  2. 다음 명령을 입력합니다. wpr -start gpu -filemode

  3. 디바이스를 5분 동안 유휴 상태로 둡니다.

  4. 다음 명령을 입력합니다. wpr -stop gputrace.etl

  5. WPA(Windows Performance Analyzer)를 사용하여 추적을 열려면 다음 명령을 입력합니다.wpa.exe gputrace.etl

  6. 시스템 활동>제네릭 이벤트 그래프를 엽니다.

    • "Microsoft-Windows-Dxgkrnl" 이벤트로 필터링합니다.
    • 프로세스 열을 두 번째 열로 끌어다 옵니다.
    • WaitForVsync를 호출하는지 확인합니다. 예를 들어 IDXGIOutput::WaitForVBlank(dxgi.h)와 같은 API를 통해 WaitForVerticalBlankEventInternal 이벤트를 기다립니다.

    MS Edge webview2 이벤트를 보여 주는 WPA 그래프

자세한 내용은 Windows 성능 분석기를 사용하여 최신 대기 문제를 분석하는 문서를 참조하세요.

추가 리소스