[Android] Systrace를 사용하여 SurfaceFlinger 동작 원리 확인하기

Android System Trace (Systrace (출처1))를 사용하여 GPU가 Rendering 한 결과 이미지를 SurfaceFlinger을 통해서 Display 되는 순서를 확인하는 방법에 대해서 정리하였다. Systrace를 사용하여 순서를 확인하기 전에 Android에서 Producer, Consumer, BufferQueue에 대한 이해가 필요하다. 솔직히 완전히 이해하진 못하지만, 간단히 이해한 내용을 정리하였다. 다음에 알게 되는 내용을 추가하거나,  또는 잘못된 내용을 찾게 되면 수정할 계획이다. 그림 1: Producer/Buffer … Read more

[Android/Linux] Big/Little Core 강제로 종료하기 (Disabling Big/Little Core)

요즘 출시되는 Android 핸드폰 (보드) 제품은 대부분 Big/Little CPU 구조를 가진다. Big/Little 코어 성능을 비교해 보고 싶어서 Core를 강제로 Disabling 하는 방법을 찾아서 정리해보았다 (출처 1). Android OS의 경우 Core를 강제로 종료하는 방법은 “/sys/devices/system/cpu/cpu/online”에 값을 0으로 변경해주면 된다. <N>은 CPU 번호를 의미한다. 보통 0~3번은 Little Core, 4~7번은 Big Core를 의미한다. File Path: /sys/devices/system/cpu/cpu<N>/online 추가로 chmod Command를 … Read more

[Linux/Android] CPU Usage (사용량) 계산 방법

Application의 CPU Usage (사용량)을 계산하는 방법이 궁금하여 인터넷에서 검색한 결과를 정리해보았다. 물론 top, htop과 같은 명령어를 사용하면 이 모든 것을 할 필요가 없다. 먼저 Application의 PID (Process ID)를 정보가 필요하다. 예를 들어 Application의 이름이 co.kr.mkblog.text라고 하면 “pidof” 명령어를 사용하여 예제 Application의 PID를 확인 할 수 있다. Android ADB와 Linux에서 아래 명령어를 입력하면 Application의 PID 번호를 … Read more