Adb CPU 온도 - Adb CPU ondo

August 20, 2017

최근에 회사에서 Android CPU 온도를 구해야 하는 일이 있었는데 관련해서 소스 공유 합니다 따로 API가 지원되는건 아니고 Linux안에 있는 정보를 가져와서 처리를 하는걸로 보입니다

Source

public float getCpuTemperature() {
    Process process;

    try {
        process = Runtime.getRuntime().exec("cat sys/class/thermal/thermal_zone0/temp");
        process.waitFor();

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line = bufferedReader.readLine();

        float temperature = Float.parseFloat(line) / 1000.0f;
        return temperature;
    }
    catch (Exception e) {
        e.printStackTrace();
        return 0.0f;
    }
}

Note: This is to find the temperature of the battery, however, not the CPU, so this doesn't actually answer the question but most people actually just want to find the temperature of their Android phone. So it will not be deleted until a new question arrives.

adb command:

adb shell dumpsys battery

This command dumps info from the Android battery manager.

output:

Current Battery Service state:
  AC powered: true
  USB powered: false
  Wireless powered: false
  status: 2
  health: 2
  present: false
  level: 3
  scale: 100
  voltage:4146
  temperature: 281
  technology: Li-ion

battery temperature: 28.1℃ (281/10)

게시물ID : programmer_7068짧은주소 복사하기
작성자 : 히힝기
추천 : 0
조회수 : 841회
댓글수 : 4개
등록시간 : 2014/12/11 09:48:11

안녕하세요 어제 질문글을 올렸던 사람인데요

어찌어찌 해서 찾아보니 

adb shell 에서 

/sys/class/thermal/thermal_zone0 로 들어가서 cat temp 로 확인을 해보면

현재 기기의 cpu 의 온도를 알수가 있었는데요

여기서 얻은 데이터를 

이클립스로 가져오려면 어떤 방법을 써야할까요 ?

조언좀 부탁 드립니다

새로운 댓글이 없습니다.

Adb CPU 온도 - Adb CPU ondo

CPU(Mobile AP) 사용량 측정 - Android ‘dumpsys’ 도구를 이용한 모바일 앱 성능 테스트 (2)

CPU 사용량 측정은 크게 2가지 방법이 있습니다.
 
먼저, top명령어입니다유닉스/리눅스를 다루시는 분들에게는 익숙한 명령어일 것 입니다.
top명령어는 리눅스에서 시스템 프로세스/메모리 사용 현황을 실시간으로 출력합니다리눅스 커널 기반인 Android에서도 사용이 가능합니다.

터미널에 아래와 같이 명령어를 입력합니다.

adb shell top -n 1 -s cpu

유튜브 앱을 실행한 후 영상 재생 시작과 동시에 top명령어를 입력했습니다.

Adb CPU 온도 - Adb CPU ondo

그 결과, PID(Process ID) 리스트가 cpu 사용량 순으로 정렬되어 출력됩니다.
측정 시간 기준으로는 유튜브 앱이 CPU 전체 중 18%로 가능 많은 사용량을 점유하고 있는 것을 알 수 있습니다.

top명령어 옵션은 아래와 같이 확인 가능합니다.

옵션

설명

-m num

Maximum number of processes to display.

-n num

Updates to show before exiting.

-d num

Seconds to wait between updates.

-s col

Column to sort by (cpu,vss,rss,thr).

-H

Show threads instead of processes.

-h

Display this help screen.

위 옵션을 활용하면 대상이 되는 앱만 검색하여 CPU 사용량을 측정할 수 있습니다.

adb shell top –n 60 –d 1| FINDSTR <package name>

Adb CPU 온도 - Adb CPU ondo

유튜브 앱만 검색되어 1초 간격으로 60회 동안 CPU사용량이 측정되었습니다위 측정 결과를 파일로 저장하고 싶다면 다음 명령어를 이용하면 됩니다.

adb shell top –n 60 –d 1| FINDSTR <package name> >> <path to file>

Adb CPU 온도 - Adb CPU ondo

Adb CPU 온도 - Adb CPU ondo

60초 후에 파일을 열어보면 커맨드 라인에서 출력되었던 결과가 동일하게 저장되어 있음을 확인할 수 있습니다.
 

다음은 dumpsys cpuinfo명령어입니다
터미널에 아래와 같이 명령어를 입력합니다.

adb shell dumpsys cpuinfo

마찬가지로 유튜브 앱을 실행한 후 영상 재생 시작과 동시에 dumpsys cpuinfo명령어를 입력했습니다.

Adb CPU 온도 - Adb CPU ondo

그 결과, PID(Process ID) 리스트가 cpu 사용량 순으로 정렬되어 출력됩니다유튜브 앱은 측정 시간 기준, CPU 전체 중 59%를 점유하고 있는 것을 알 수 있습니다.
 
dumpsys cpuinfo명령어는 디바이스 > 설정 > 개발자 옵션 > CPU 사용량 체크했을 때 화면에 표시되는 CPU 사용량과 비슷하게 출력되는 것을 보실 수 있습니다.

Adb CPU 온도 - Adb CPU ondo

안드로이드 개발자 옵션 > CPU 사용량 | 왼쪽에서 오른쪽으로 1분 / 5분 / 15분 CPU평균 로드를 보여 줍니다.

근데 눈치 채셨나요?
유튜브 앱의 CPU 사용량 측정한 결과, top명령어와 dumpsys cpuinfo명령어를 이용하여 출력한 값이 서로 다르다는 것을 알 수 있습니다.
 
따라서 어떤 측정 결과를 신뢰해야 할지 의문이 들게 됩니다하지만 이것은 측정 값의 오류가 아닌, 각 명령어에서 지원하는 속성, 범위, 조건 등이 서로 다르기 때문에 그 결과 값도 다르게 출력되는 것입니다.
 
dumpsys cpuinfo명령어에 대해 조사한 결과, 아래와 같은 속성을 가지고 있습니다.
 
- 최근 1 / 5 / 15분 로드량 (콘솔 로그 파란색 표시 영역 참조)
- 최근 7초의 프로세스마다 사용량
 
위 콘솔 로그에서 상위 라인에 타임 스탬프가 찍혀 있는 것을 볼 수 있습니다.
‘2018-05-27 20:24:35.274 to 2018-05-27 20:32:20.870’
 
내부 로직에 의해 특정 시간 사이의 사용량이 측정되어 top명령어의 측정 결과가 다르게 출력됩니다.안타깝게도 dumpsys cpuinfo명령어는 다른 옵션을 제공하지 않고 있어 실시간 CPU 사용량 측정이 어려운 것 같습니다. (adb shell dumpsys cpuinfo –h 옵션을 통한 도움말이 제공되지 않음.)
 
좀더 dumpsys cpuinfo명령어에 대해 조사해 보았지만 추가적인 정보 확보 부족으로 인해 top명령어가 실시간 CPU 사용량 측정에 좀더 적합하다고 판단합니다.
 
이제 CPU 사용량 측정 결과 정리를 해 보겠습니다좀 전에 위에서 top명령어를 이용하여 1초 간격으로 60회 동안 실시간 CPU 사용량을 측정해 보았습니다

수집된 정보를 엑셀로 데이터 가공을 하면 제법 쓸모 있는 데이터를 뽑을 수 있게 됩니다.

Adb CPU 온도 - Adb CPU ondo

엑셀 데이터를 가지고 그래프도 간단하게 한번 만들어 봅니다.

Adb CPU 온도 - Adb CPU ondo

제법 그럴듯하게 그래프로 수치를 한눈에 펼쳐 볼 수 있네요.
 
비록 간단한 데이터지만 그래프를 통해서 영상 재생 초반에는 CPU 점유율이 치솟고 그 이후에는 낮은 점유율로 안정적으로 동작한다는 것을 알 수 있었습니다.


다음 포스팅에서는 계속해서 dumpsys를 이용한 RAM 사용량 측정에 대해서 이야기하겠습니다.

Adb CPU 온도 - Adb CPU ondo