HOME > android > tips

안드로이드 - systrace로 성능 분석하는 방법

JSFollow06 Oct 2019

안드로이드의 systrace는 시스템 성능을 분석하기 위한 툴입니다. 안드로이드 플랫폼에는 atrace라는 모듈이 있는데, systrace는 이 모듈에 trace를 추출하도록 요청합니다. 파일로 trace가 추출되면, Chrome 브라우저에서 결과를 확인할 수 있습니다.

툴을 설치하고, trace 추출 및 확인하는 방법에 대해서 알아보겠습니다.

설치

systrace 툴은 systrace.py라는 파이썬 스크립트입니다. 안드로이드 스튜디오에서 SDK를 다운받으면 그 안에 들어있습니다.

저는 Sdk라는 폴더에 SDK를 다운받았습니다. platform-tools/systrace에 들어가시면 systrace.py라는 파일이 있습니다.

Sdk/platform-tools/systrace$ ls
catapult  mytrace.html  NOTICE  systrace.py  UPSTREAM_REVISION

이 파일은 python2.7로 작성되었기 때문에 python2.7을 사전에 설치하셔야 합니다.

Trace 추출

디바이스를 PC에 연결했다면 이 스크립트를 이용하여 trace를 추출할 수 있습니다.

명령어는 다음과 같은 형식으로 입력하시면 됩니다.

$ python systrace.py [options] [categories]

아래와 같이 명령어를 입력하시면 trace가 추출됩니다. -o 옵션은 추출되는 파일명을 지정하는 것이고, -t 옵션은 추출할 trace의 시간(초)를 설정합니다. 옵션 다음으로 category를 입력하시면 되는데, category는 trace를 추출할 프레임워크 또는 모듈의 정보를 의미합니다.

$ python systrace.py -o mytrace.html -t 5 sched freq idle am wm gfx view input res

위의 명령어를 실행하면 5초간 trace 정보가 추출되고 mytrace.html이라는 파일에 저장이됩니다.

설정한 category에 대한 설명은 다음 명령어로 확인이 가능합니다. 디바이스에서 지원하는 category를 출력하고 어떤 것에 대한 내용인지 알려줍니다.

Sdk/platform-tools/systrace$ python systrace.py --list-categories
         gfx - Graphics
       input - Input
        view - View System
     webview - WebView
          wm - Window Manager
          am - Activity Manager
          sm - Sync Manager
       audio - Audio
       video - Video
      camera - Camera
         hal - Hardware Modules
         res - Resource Loading
      dalvik - Dalvik VM
          rs - RenderScript
      bionic - Bionic C Library
       power - Power Management
          pm - Package Manager
          ss - System Server
    database - Database
     network - Network
         adb - ADB
    vibrator - Vibrator
        aidl - AIDL calls
         pdx - PDX services
       sched - CPU Scheduling
         irq - IRQ Events
         i2c - I2C Events
        freq - CPU Frequency
        idle - CPU Idle
        disk - Disk I/O
        sync - Synchronization
       workq - Kernel Workqueues
  memreclaim - Kernel Memory Reclaim
  binder_driver - Binder Kernel driver
  binder_lock - Binder global lock trace

Trace 확인

Trace는 Chrome 브라우저에서 확인할 수 있습니다. 브라우저를 열고 URL에 chrome://tracing/를 입력하면 trace viewer 창으로 이동합니다.

Load버튼을 누르고 위에서 추출한 mytrace.html을 선택해주세요. 그럼 다음과 같이 trace 결과를 확인할 수 있습니다. android systrace

간단한 단축키를 알려드리면

  • a: 왼쪽으로 시간축 이동
  • d: 오른쪽으로 시간축 이동
  • w: 화면에 더 적은시간이 보이게(확대)
  • s: 화면에 더 많은 시간이 보이게(축소)
  • 위 아래 이동은 마우스 휠로 하세요.

항목을 눌러보면 작업이 걸린 전체 시간이 나옵니다. 또한 CPU Usage 등 스케쥴링에 대한 정보를 볼 수 있습니다.

정리

Systrace를 이용하여 시스템 성능을 분석할 수 있는 방법에 대해서 알아보았습니다. 앱 개발자는 안드로이드 스튜디오의 프로파일 기능만으로 충분할 것 같습니다. 하지만 시스템 측면에서 어떻게 동작하는지 보고 싶다면 systrace가 유용할 수 있습니다.

참고