Android에서 CPU와 관련된 내용들을 얻는 것은 Linux에 의존하게 된다. (아님 그냥 내가 못 찾은 것. -_-;)
Linux에서 CPU에 대한 정보는 /sys/device/system/cpu에서 구할 수 있다.
그 중 우리가 원하는 CPU의 현재 Hz와 Mode, 사용 가능한 Hz와 Mode에 관한 정보는 /sys/……/cpu/[cpu number]/cpufreq 폴더에 존재한다.
CPU가 single core라면 CPU0만 존재하고 dual 이상이라면 CPU0, CPU1… 이런 식으로 늘어난다.
현재의 평범한 multi core system이라면 CPU숫자와 상관 없이 CPU에 대한 동일한 정보를 얻어올 수 있지만 차후 big.LITTLE 기능이 적용된다면 코어마다 다를 수도 있을 것 같다.
다음은 /sys/device/system/cpu/cpu*/cpufreq/ 폴더에 존재하는 파일들이다.
/sys/device/system/cpu/cpu*/cpufreq/
affected_cpus: 실행결과 해당 core number에 해당하는 수가 나온다.
cpuinfo_cur_freq: 현재 CPU의 Hz가 나온다.
cpuinfo_max_freq: CPU가 변경 가능한 Hz의 최대치가 나온다.
cpuinfo_min_freq: CPU가 변경 가능한 Hz의 최소치가 나온다.
cpuinfo_transition_latency: CPU의 Hz가 변하는데 걸리는 시간. kernel documentation에 따르면 nanosecond라고 한다.
related_cpus: 총 core의 수가 나온다. (single core면 0, hexa core면 5 이런 식)
scaling_available_freqeuncies: max->min 순으로 변화 가능한 CPU의 Hz가 나온다.
scaling_available_governors: CPU성능 기준 min -> max 순으로 CPU변환 방침이 나온다. 정상적인 방법으로는 이를 수정할 권한을 얻을 수 없으므로 크게 의미 없는 것 같다.
scaling_driver: CPU 종류를 나타내는 것 같다. 내 Android의 경우 OMAP Process를 사용하고 있는데 이 경우 omap 이라고 나오며 AMD CPU의 경우 powernow-k8 이라고 나온다.
scaling_governor: 현재 governor 상태가 나온다.
scaling_max_freq , scaling_min_freq: 현재 governor 정책에 의해 제한된 max, min Hz값을 알려주거나 설정할 수 있다.
scaling_setspeed: <unsupported>라고 나온다. Kernel documentation에 따르면 governor가 userspace일 경우에만 사용 가능한 것으로 보인다.
/sys/devices/system/cpu/cpu*/cpufreq/stats
time_in_state: 각각의 Hz 대역 대에서 보낸 총 시간이 나타낸다. 100Hz가 기준이므로 나오는 시간의 단위는 10ms 이다.
total_trans: 해당 CPU에서 일어난 Hz 변환의 총 횟수를 나타낸다.
'Programming > 기타' 카테고리의 다른 글
Performance Evaluation of In-Memory Computing on Scale-Up and Scale-Out Cluster (0) | 2016.08.06 |
---|---|
HiBench 5.0 간략 설명 (0) | 2016.01.24 |
DBT-2를 ubuntu 13.10 64bit에서 컴파일 시 (0) | 2013.12.14 |
[Android]어플리케이션이 내부 미디어플레이어를 이용할 때 네트워크 사용량 측정법? (0) | 2013.03.09 |
[Android] Traffic Stats Class (0) | 2013.03.08 |