CPU 프로파일러를 사용하여 CPU 활동 검사

앱의 CPU 사용을 최적화하면 더 빠르고 원활한 사용자 환경 제공, 기기 배터리 수명 보존 등 많은 이점이 있습니다.

CPU 프로파일러를 사용하여 앱과 상호작용하는 동안 앱의 CPU 사용량 및 스레드 활동을 실시간으로 검사하거나 기록된 메서드 트레이스, 함수 트레이스, 시스템 트레이스의 세부정보를 검사할 수 있습니다.

CPU 프로파일러에서 기록하고 표시하는 정보의 구체적인 종류는 선택한 기록 구성에 따라 결정됩니다.

  • 시스템 트레이스: 앱에서 시스템 리소스와 상호작용하는 방법을 검사할 수 있는 세부정보를 캡처합니다.
  • 메서드 트레이스 및 함수 트레이스: 앱 프로세스의 각 스레드에 관해 일정 기간 실행되는 메서드(자바) 또는 함수(C/C++) 및 각 메서드 또는 함수가 실행 중 사용하는 CPU 리소스를 확인할 수 있습니다. 메서드 트레이스 및 함수 트레이스를 사용하여 호출자피호출자를 식별할 수도 있습니다. 호출자는 다른 메서드 또는 함수를 호출하는 메서드 또는 함수이고 피호출자는 다른 메서드 또는 함수에 의해 호출되는 메서드 또는 함수입니다. 이 정보를 사용하면 리소스 소모가 많은 특정 작업을 너무 자주 호출하는 메서드 또는 함수를 확인하고 앱의 코드를 최적화하여 불필요한 작업을 피할 수 있습니다.

    메서드 트레이스를 기록할 때 샘플링된 기록 또는 계측된 기록을 선택할 수 있습니다. 함수 트레이스를 기록하는 경우 샘플링된 기록만 사용할 수 있습니다.

이러한 각 트레이스 옵션의 사용 및 선택에 관한 세부정보는 기록 구성 선택을 참고하세요.

CPU 프로파일러 개요

CPU 프로파일러를 열려면 다음 단계를 따르세요.

  1. View > Tool Windows > Profiler를 선택하거나 툴바에서 Profile 을 클릭합니다.

    Select Deployment Target 대화상자에 메시지가 표시되면 프로파일링을 위해 앱을 배포할 기기를 선택합니다. USB를 통해 기기를 연결했는데 목록에 표시되지 않으면 USB 디버깅을 사용 설정했는지 확인하세요.

  2. CPU 타임라인의 아무 곳이나 클릭하여 CPU 프로파일러를 엽니다.

CPU 프로파일러를 열면 앱의 CPU 사용량 및 스레드 활동이 즉시 표시됩니다. 그림 1과 비슷한 화면이 표시됩니다.

그림 1. CPU 프로파일러의 타임라인

그림 1에 표시된 것처럼 CPU 프로파일러의 기본 뷰에는 다음과 같은 타임라인이 포함됩니다.

  1. 이벤트 타임라인: 수명 주기에서 여러 상태를 전환할 때 앱의 활동을 표시하고 화면 회전 이벤트 등 기기와 사용자의 상호작용을 나타냅니다. Android 7.1(API 수준 25) 이하를 실행하는 기기에서 이벤트 타임라인을 사용 설정하는 방법에 관한 자세한 내용은 고급 프로파일링 사용 설정을 참고하세요.
  2. CPU 타임라인: 앱의 실시간 CPU 사용량을 이용 가능한 총 CPU 시간의 비율로 표시하고 앱에서 사용 중인 총 스레드 수를 표시합니다. 기타 프로세스(예: 시스템 프로세스 또는 다른 앱)의 CPU 사용량도 표시되므로 내 앱의 사용량과 비교할 수 있습니다. 타임라인의 가로축을 따라 마우스를 이동하여 이전의 CPU 사용량 데이터를 검사할 수 있습니다.
  3. 스레드 활동 타임라인: 앱의 프로세스에 속하는 각 스레드를 나열하고, 아래 나열된 색상을 사용하여 타임라인을 따라 각 스레드의 활동을 나타냅니다. 트레이스를 기록한 후 이 타임라인에서 스레드를 선택하여 트레이스 창에서 데이터를 검사할 수 있습니다.
    • 녹색: 스레드가 활성 상태이거나 CPU를 사용할 준비가 되었습니다. 즉, 실행 중이거나 실행 가능한 상태입니다.
    • 노란색: 스레드가 활성 상태이지만 작업을 완료하기 전에 디스크 또는 네트워크 I/O 같은 I/O 작업을 기다리고 있습니다.
    • 회색: 스레드가 일시정지 상태이며 CPU 시간을 소비하고 있지 않습니다. 스레드에서 아직 사용할 수 없는 리소스에 액세스해야 할 때 종종 발생합니다. 필요한 리소스를 사용할 수 있게 될 때까지 스레드가 자발적으로 일시정지 상태로 들어가거나 커널이 스레드를 일시정지 상태로 전환합니다.

    CPU 프로파일러는 JDWP, Profile Saver, Studio:VMStats, Studio:PerfaStudio:Heartbeat 등 Android 스튜디오와 Android 플랫폼이 앱 프로세스에 추가하는 스레드의 CPU 사용량도 보고합니다(스레드 활동 타임라인에 표시되는 정확한 이름은 다를 수 있음). Android 스튜디오는 실제로 앱의 코드에 의해 스레드 활동 및 CPU 사용이 발생하는 시점을 식별할 수 있도록 이 데이터를 보고합니다.