본문 바로가기

IT 이야기/Android Performance5

Perfetto - Recording traces on Android boot Android 13(T)부터는 Perfetto를 이용하여 booting시의 trace를 잡을 수 있습니다. boot process를 profiling할 때 크게 도움이 될 수 있을 거라 생각이 되어 어떻게 Perfetto를 이용하여 trace를 잡는 지 설명하도록 하겠습니다. Steps: 1. 먼저 Perfetto trace를 Record하기 위해서는 아래와 같이 Text 포맷으로 Recording 할 내용이 담긴 config 파일을 생성해야 합니다. # One buffer allocated within the central tracing binary for the entire trace, # shared by the two data sources below. buffers { size_kb: 32768.. 2023. 12. 1.
[Memory Usage] Memory 상태 분석 Android의 경우 Memory Usage를 측정할 때 많이 사용하는 명령어는 adb shell 명령어 중 하나인 dumpsys meminfo 입니다. dumpsys meminfo에 대해서는 다른 포스트를 이용하여 설명하기로 하고 이번에는 Linux에서 제공하는 Memory 확인 명령어인 "free" 와 "/proc/meminfo"에 대해 알아보도록 하겠습니다. 먼저 adb shell에서 간단하게 현재 시스템의 메모리 상태를 확인하려면 "free -m" (여기서 -m 옵션은 용량을 MB로 출력하라는 옵션입니다.)명령어를 입력하시면 됩니다. 그러면 아래와 같은 정보가 출력됩니다. 아래 내용을 보면 첫 줄의 값 중 used값인 3508이 사용 중인 메모리이고 free 값인 4173이 사용가능한 메모리로 생.. 2021. 12. 17.
[CPU] MIPS와 DMIPS CPU의 성능을 얘기할 때 평가 단위로 MIPS와 DMIPS가 많이 언급됩니다. 그래서 오늘은 이 두 단위의 정의를 알아보고 어떻게 측정되는 지 살펴보려고 합니다. MIPS의 정의를 알아보기 전에 먼저 CPI와 IPS에 대해 알아보겠습니다. CPI는 Cycle Per Instruction의 약자로 프로그램에 대한 명령어당 평균 사이클 수를 의미합니다. 명령어마다 실행시간이 다르기 때문에 프로그램이 실행한 모든 명령에 대하여 평균값을 구한 것입니다. 그리고 CPU에 존재하는 Clock을 기준으로 Clock이 높으면 1초에 CPU 명령을 많이 처리한다는 것을 의미하므로 프로그램 수행시간은 줄게 됩니다. 이를 기준으로 주어진 프로그램을 수행하는 데 필요한 프로세서 시간에 대한 계산식은 아래와 같습니다. T =.. 2021. 12. 16.
[CPU Usage] vmstat, /proc/sched_debug 로 system load의 원인 파악 지난 번 블로그에서 /proc/loadavg 값에 대한 의미를 살펴보았습니다. Load Average는 Active Task의 평균 값을 의미합니다. 다만 Active Task에는 TASK_UNINTERRUPTIBLE도 포함되기 때문에 Load Average가 높다는 것이 CPU를 사용하려는 Process가 많다는 의미도 될 수 있지만 I/O 작업을 대기하려는 Process가 많다는 의미도 될 수 있다고 얘기했습니다. 그러므로 Load Average 가 높을 때 System에 어떤 상태의 부하, 즉, CPU 리소스 부하인지 혹은 I/O 부하인지, 가 일어나고 있는 지 추가로 파악할 필요가 있습니다. 이를 파악하기 위해 어떤 명령어가 사용되는 지 알아보겠습니다. vmstat adb shell에서 vmsta.. 2021. 12. 8.