6월 3일의 ⁠#Android11: 베타 버전 출시 행사에 참여하세요.

Batterystats 및 Battery Historian을 사용하여 배터리 사용량 프로파일링

이 둘러보기에서는 Batterystats 도구 및 Battery Historian 스크립트의 기본 사용법과 워크플로를 보여줍니다.

Batterystats는 기기의 배터리 데이터를 수집하는 Android 프레임워크에 포함된 도구입니다. adb를 사용하여 수집된 배터리 데이터를 개발용 컴퓨터에 덤프하고 Battery Historian을 사용하여 분석할 수 있는 보고서를 만들 수 있습니다. Battery Historian은 Batterystats의 보고서를 브라우저에서 볼 수 있는 HTML 시각화로 변환합니다.

장점

  • 프로세스가 배터리에서 전류를 유입하는 위치와 방법을 보여줍니다.
  • 배터리 수명을 개선하기 위해 지연되거나 삭제될 수 있는 앱의 작업을 확인할 수 있습니다.

참고: Batterystats 및 Battery Historian을 사용하려면 USB 디버깅이 사용 설정된 Android 5.0 이상을 실행하는 휴대기기가 필요합니다.

Battery Historian 설치

Battery Historian을 설치하는 가장 쉬운 방법은 Docker를 사용하는 것입니다. 소스에서 빌드하는 등의 대체 설치 방법은 프로젝트 GitHub 페이지에서 Read Me를 참조하세요. Docker를 사용하여 설치하려면 다음 단계를 따르세요.

  1. Docker 웹사이트의 지침에 따라 Docker Community Edition을 설치합니다.
  2. Docker가 올바르게 설치되었는지 확인하려면 명령줄을 열고 다음 명령어를 입력합니다.
        docker run hello-world

    Docker가 올바르게 설치되었으면 다음과 같은 출력이 표시됩니다.

        Unable to find image 'hello-world:latest' locally
        latest: Pulling from library/hello-world
        78445dd45222: Pull complete
        Digest:
        sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
        Status: Downloaded newer image for hello-world:latest
    
        Hello from Docker!
        This message shows that your installation appears to be working correctly.
    
        To generate this message, Docker took the following steps:
         1. The Docker client contacted the Docker daemon.
         2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
         3. The Docker daemon created a new container from that image which runs the
            executable that produces the output you are currently reading.
         4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
  3. 다음 명령어를 사용하여 Battery Historian 이미지를 실행합니다.
        docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
        

    Battery Historian은 port_number를 사용하여 지정된 대로 선택한 포트를 사용합니다.

    참고: Windows 컴퓨터를 사용하는 경우 BIOS에서 가상화를 사용 설정해야 할 수 있습니다. 가상화를 사용 설정하는 방법에 관한 자세한 내용은 사용하는 마더보드의 문서를 참조하세요. Android 에뮬레이터를 실행할 수 있으면 가상화가 이미 사용 설정된 것입니다.

  4. 브라우저에서 Battery Historian으로 이동하여 실행되고 있는지 확인합니다. 주소는 운영체제에 따라 다릅니다.
    Linux 및 Mac의 경우
    http://localhost:port_number에서 Battery Historian을 사용할 수 있습니다.
    Windows의 경우
    Docker를 시작하면 사용 중인 컴퓨터의 IP 주소를 알려줍니다. 따라서, 예를 들어 IP 주소가 123.456.78.90이면 http://123.456.78.90:port_number에서 Battery Historian을 사용할 수 있습니다.

    Battery Historian 시작 페이지가 표시됩니다. 여기서 배터리 통계를 업로드하고 볼 수 있습니다.

    그림 1. Battery Historian의 시작 페이지

Batterystats를 사용하여 데이터 수집

Batterystats를 사용하여 기기에서 데이터를 수집하고 Battery Historian에서 열려면 다음 단계를 따르세요.

  1. 휴대기기를 컴퓨터에 연결합니다.
  2. 터미널 창에서 실행 중인 adb 서버를 종료합니다.
        adb kill-server
        
  3. adb를 다시 시작하고 연결된 기기를 확인합니다.
        adb devices
        

    아래 출력 예와 유사하게 기기가 나열되어야 합니다.

    그림 2. 하나의 연결된 기기를 표시하는 adb devices의 출력

    기기가 표시되지 않으면 휴대전화가 연결되어 있고 USB 디버깅이 사용 설정되어 있는지 확인한 다음 adb를 종료했다가 다시 시작합니다.

  4. 배터리 데이터 수집을 재설정합니다.
        adb shell dumpsys batterystats --reset
        

    기기가 항상 백그라운드에서 batterystats 및 다른 디버깅 정보를 수집합니다. 재설정하면 이전 배터리 컬렉션 데이터가 삭제됩니다. 재설정하지 않으면 출력이 매우 커집니다.

  5. 기기의 배터리에서만 전류를 유입하도록 컴퓨터에서 기기의 연결을 끊습니다.
  6. 앱을 재생하고 데이터를 원하는 작업을 실행합니다. 예를 들어, WiFi 연결을 끊고 데이터를 클라우드로 보냅니다.
  7. 휴대전화를 다시 연결합니다.
  8. 휴대전화가 인식되는지 확인합니다.
        adb devices
        
  9. 모든 배터리 데이터를 덤프합니다. 시간이 오래 걸릴 수 있습니다.
        adb shell dumpsys batterystats > [path/]batterystats.txt
        

    선택적 경로 인수를 사용하여 batterystats.txt 파일을 지정한 디렉터리에 만듭니다. 경로를 지정하지 않으면 파일이 홈 디렉터리에 만들어집니다.

  10. 원시 데이터에서 보고서를 만듭니다.
    Android 7.0 이상을 실행하는 기기의 경우:
        adb bugreport > [path/]bugreport.zip
        
    Android 6.0 이상을 실행하는 기기의 경우:
        adb bugreport > [path/]bugreport.txt
        

    Bugreport를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 완료될 때까지 기기의 연결을 끊거나 프로세스를 취소하지 마세요.

    위의 batterystats.txt와 마찬가지로 이러한 파일은 선택적 경로 인수를 사용하여 지정한 디렉터리에 만들어집니다. 경로를 지정하지 않으면 홈 디렉터리에 만들어집니다.

  11. 아직 실행되고 있지 않은 경우 다음 명령어를 사용하여 Battery Historian을 실행합니다.
        docker --run -p port_number:9999 gcr.io/android-battery-historian:2.1 --port 9999
        
  12. Battery Historian에서 데이터를 보려면 브라우저에서 Battery Historian을 엽니다. (Mac 및 Linux의 경우 Battery Historian이 http://localhost:port_number에서 실행됩니다. Windows의 경우 Battery Historian이 http://your_IP_address:port_number에서 실행됩니다.)
  13. 찾아보기를 클릭한 다음 위에서 만든 bugreport 파일을 선택합니다.
  14. 제출을 클릭합니다. batterystats 데이터에서 생성된 차트가 Battery Historian에 열립니다.

Battery Historian 차트를 사용하여 데이터 보기

Battery Historian 차트는 시간 경과에 따라 전원 관련 이벤트를 그래프로 표시합니다.

시스템 구성요소가 활성화되어 배터리에서 전류를 유입하는 경우 각 행에 색상이 지정된 막대 세그먼트가 표시됩니다. 이 차트에는 구성요소에서 사용된 배터리의 용량이 표시되지 않고 앱이 활성 상태라는 것만 표시됩니다. 차트는 카테고리별로 구성되며, 차트의 X축에 표시된 것과 같이 시간 경과에 따른 각 카테고리의 막대가 표시됩니다.

그림 3. Battery Historian 차트 예

  1. 드롭다운 목록에서 추가 측정항목을 선택합니다.
  2. 정보 아이콘 위로 마우스를 가져가면 차트에서 사용된 색상의 키를 포함하여 각 측정항목에 관한 자세한 정보를 볼 수 있습니다.
  3. 막대 위로 마우스를 가져가면 측정항목에 관한 자세한 정보와 특정 시점의 배터리 통계를 볼 수 있습니다.

추가 batterystats 출력

Battery Historian 차트 아래의 통계 섹션에 있는 batterystats.txt 파일에서 추가 정보를 볼 수 있습니다.

그림 4. Battery Historian의 통계 섹션

1 System Stats 탭에는 셀 신호 레벨 및 화면 밝기와 같은 시스템 전체 통계가 포함되어 있습니다. 이 정보는 기기에서 발생하는 전반적인 상황을 제공하며 외부 이벤트가 테스트에 영향을 미치지 않는지 확인하는 데 특히 유용합니다.

2 App Stats 탭에는 특정 앱과 관련된 정보가 포함되어 있습니다. 왼쪽에 있는 App Selection 창에서 3 Sort apps by 드롭다운 목록을 사용하여 앱 목록을 정렬합니다. 특정 앱을 선택하여 아래의 4 앱 드롭다운 목록을 사용하기 위한 통계를 볼 수 있습니다.

배터리 성능에 관한 자세한 내용은 배터리 수명 최적화를 참조하세요.