안드로이드 앱 성능 최적화 #6 CPU 와 CPU 성능 최적화 |
이 글은 “안드로이드 앱 성능 최적화” 의 일부 내용만 정리한 것입니다.
자세한 내용은 책을 구매하여 보세요~
-
모든 CPU 가 동일하고, 어떤 연산을 위해 교차 사용될 수 있는 일반적인 컴퓨터 CPU 와는 다르게,
ARM 기반의 모바일 칩셋은 각기 다른 종류의 작업을 위해 여러 타입의 CPU 를 가지고 있다.
ARM 에서는 이를 big.LITTLE 이라고 부른다.
이메일 체크 같은 작은 백그라운드 작업은 저성능 고효율의 CPU 가 처리한다.
사용자가 동영상을 보거나 게임을 할 때는 고성능 코어를 사용한다.
즉, 작은 작업은 LITTLE 프로세서로 작업을 이관하고, 고전력 작업에만 big 프로세서를 사용하도록 해서 전력소모를 줄일 수 있다.
이런 작업전환은 커널에 의해 조절되고 올바른 프로세서가 자동으로 선택되기 때문에 개발자는 여기에 신경 쓰지 않아도 된다.
6.1. CPU 사용량 측정하기
-
top 명령어로 확인하는 내용 중,
PCY 는 프로세스별 정책을 말한다.
-
adb shell dumpsys cpuinfo 를 통해서 top 보다 더 자세히 CPU 사용률을 알아 볼 수 있다.
첫째 줄은 지난 1분, 5분, 15분간의 평균 CPU 부하가 표시된다.
다음 줄은 약 7초간의 CPU 사용률이 각 앱별로 표시된다.
-
개발자 옵션에서 CPU 사용량 표시를 켜면 화면 오른쪽 상단에 CPU 사용량이 표시된다.
바의 녹색은 사용자 공간, 빨간색은 커널, 파란색은 입출력 인터럽트이다.
6.2. Systrace 를 통한 CPU 사용량 분석
6.3. Traceview (Legacy Monitor DDMS 도구)
-
TraceView 의 첫번째 옵션인 Sample based profiling 은 VM 의 모든 프로세스를 대상으로 매 xms 단위로 샘플링을 한다.
CPU 에 영향을 좀 덜 줘야 하거나 오랫동안 분석이 필요하다면 선택할 수 있는 옵션이다.
두번째 옵션 Trace based profiling 은 시작과 끝 사이 모든 메서드 호출을 저장하는 방식이다.
이 방법을 사용하면 더 큰 부하가 생기고 꽤나 성능이 좋은 기기를 사용해도 앱에 영향을 줄 수 있다.
-
Inclusive CPU Time
현재 메서드 내부에서만 사용된 시간( CPU 를 실제 사용한 시간 ) + 하위 메서드를 호출하는 데 걸린 시간
Exclusive CPU Time
현재 메서드 내부에서만 사용된 시간
Inclusive Real Time
현재 메서드 내부에서만 사용된 실제(CPU 사용 시간 + CPU 대기 시간) 시간 + 하위 메서드 호출하는 데 걸린 실제 시간
Exclusive Real Time
현재 메서드 내부에서만 사용된 실제 시간
Calls + Recursive Calls/Total Calls
메서드가 호출된 횟수
CPU Time/Call
함수 호출당 사용된 시간
Real Time/Call
함수 호출당 사용한 실제 시간
6.4. Traceview (안드로이드 스튜디오)
6.5. 다른 프로파일링 도구
-
퀄컴에서 만든 무료 앱 Trepn 을 이용하면 오버레이 화면에 실시간 메모리, CPU, 배터리, 네트워크 사용량 등을 표시할 수 있다.
퀄컴 프로세서를 사용하는 기기라면 GPU 사용량도 살펴볼 수 있다.
여기서 수집된 데이터는 나중에 분석을 다시 할 수 있도록 CSV 나 데이터베이스로도 저장 할 수 있다.
6.6. 결론
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[도서 정리] 안드로이드 앱 성능 최적화 #8 최종 사용자 모니터링 (0) | 2018.06.29 |
---|---|
[도서 정리] 안드로이드 앱 성능 최적화 #7 네트워크 성능 (2) | 2018.06.28 |
[도서 정리] 안드로이드 앱 성능 최적화 #5 메모리 성능 (0) | 2018.06.26 |
[도서 정리] 안드로이드 앱 성능 최적화 #4 화면과 UI 성능 개선하기 (0) | 2018.06.25 |
[도서 정리] 안드로이드 앱 성능 최적화 #3 하드웨어 성능과 배터리 수명 (0) | 2018.06.24 |
댓글