본문 바로가기

Android

안드로이드 개념) CPU Profiler

728x90

CPU 프로파일러를 사용하여 CPU 활동을 검사하는 방법에 대해 알아보겠습니다.

앱의 CPU 사용을 최적화하면 더 빠르고 원활한 사용자 환경 제공, 기기 배터리 수명 보존 등 많은 이점이 있겠죠. 제가 CPU 프로파일러를 사용해야할 만큼 무거운 앱을 다룰 수 있을지는 의문이지만 한번 정리해보겠습니다.

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

작업순서

USB를 통해 기기를 연결하고 앱을 실행하여 (View -> Tool Windows -> Profiler)를 통해서 확인할 수 있습니다.

앱을 실행했더니 이렇게 CPU, MEMORY 사용량이 나오네요.

제가 앱에서 입력, 버튼 클릭 등의 이벤트를 발생시키니 Event 타임라인에 분홍색 점이 보이고~ CPU, MEMORY 사용량이 변하네요. 무엇보다 네이버 파파고 API를 사용해 통신을 했더니 NETWORK에 Sending, Receiving 량이 변경되는 것도 보이네요. CPU Profiler를 사용해서 앱에서 사용되는 세부정보를 확인하고 불필요한 데이터 사용을 줄이는(최적화) 것이 목적인가 봅니다.

보이는 각 타임라인을 클릭하면 그에 대한 세부정보를 확인할 수 있습니다.

Event 타임라인 - 분홍색 점, 입력 값 등으로 표시 (기기와 사용자의 상호작용을 나타냅니다.)

CPU 타임라인 - 앱의 실시간 CPU 사용량을 시간의 비율로 표시, 기타 프로세스의 CPU 사용량도 표시, 사용중인 총 스레드 수를 표시하고 스레드 활동 타임라인에 앱의 프로세스에 속하는 각 스레드를 나열하고 나열된 스레드의 활동을 색상으로 표시 합니다.

녹색 - 실행 중, 실행 가능한 상태 / 노란색 - 실행 중이지만 작업을 완료하기 전 디스크 or 네트워크 I/O 작업을 기다리는 상태 / 회색 - 스레드가 일시 중지 상태로 CPU 시간을 소비하지 않음

트레이스 기록 - 앱 실행 상태에서 스피너를 이용해 "원하는 기록 구성을 선택"하고 Record를 클릭하면 트레이스를 기록하게 됩니다. 원하는 종료지점에서 Stop하여 기록된 기간을 저장할 수 있습니다.

트레이스 창 - 선택한 기간 및 스레드에 관한 트레이스 데이터를 표시(name, total, % 등으로 나타나네요)

트레이스 창 탭 - 트레이스 세부정보를 표시하는 방법을 선택 (Top Down, Bottom Up 등)

시간 참조 메뉴 - 호출의 타이밍 정보가 측정되는 방법을 결정 (Wall clock time : 실제 경과 시간, Thread time : 실제 경과 시간에서 스레드가 CPU를 사용하지 않은 시간을 뺍니다)

https://developer.android.com/studio/profile/cpu-profiler?hl=ko#configurations

 

CPU 프로파일러를 사용하여 CPU 활동 검사  |  Android 개발자  |  Android Developers

Android 스튜디오에서 앱의 CPU 사용을 최적화하는 방법을 알아보세요.

developer.android.com