2013-06-18 2 views
2

Android 4.1.2 "뿌리"가 장착 된 Samsung Galaxy SIII를 사용하고 있습니다. C/C++로 작성한 일부 멀티 스레드 응용 프로그램의 CPU 사용량을 측정해야하지만이 정보가 코어별로 필요합니다.Android/Galaxy SIII에서 코어 당 CPU 사용량을 얻는 방법

Galaxy가 4 ARM Cortex A9를 사용하는 SoC를 가지고 있다는 것을 알았으므로 () 모든 코어에서 사용할 수있는 코어 수에 관한 정보는 표시되지 않습니다.),이 올바른 동작입니까?

나는 cat /proc/stat을 사용하여 코어 당 평균 부하 평균을 볼 수 있지만이 장치의 "파일"에는 "core0"에 대한 정보 만 표시됩니다. 모든 코어를 활성화하려면 뭔가해야합니까?

topps도 성공하지 못했습니다.

EDITED: 
----------------- cat /proc/cpuinfo 
Processor : ARMv7 Processor rev 0 (v7l) 
processor : 0 
BogoMIPS : 1592.52 

Features : swp half thumb fastmult vfp edsp neon vfpv3 tls 
CPU implementer : 0x41 
CPU architecture: 7 
CPU variant : 0x3 
CPU part : 0xc09 
CPU revision : 0 

Chip revision : 0011 
Hardware : SMDK4x12 
Revision : 000c 
Serial  : 11e16f694df1267e 


----------------- cat /proc/stat 

cpu 89515 1686 23283 464122 3835 2 376 0 0 0 
cpu0 74214 457 16736 221609 1111 1 347 0 0 0 
intr 1860068 0 0 0 0 0 0 0 0 0 0 .... (removed: a serie of numbers) 
ctxt 3138146 
btime 1371578546 
processes 15904 
procs_running 1 
procs_blocked 0 
softirq 1154788 12 403499 864 4501 12 12 444746 67202 576 233364 

답변

4

당신은 핫 플러그 ​​장치를 검사하여 코어의 수에 대한 정보를 얻을 수 있습니다 , /sys/devices/system/cpu/present/sys/devices/system/cpu/possible. the hotplug docs도 참조하십시오.

CPU 사용량을 늘리는 데 도움이되는지 확신 할 수 없습니다.

USER  PID PPID VSIZE RSS  WCHAN PC   NAME 
system 19598 19574 955672 57324 ffffffff 4012d9b8 S system_server (u:2186, s:1521) 
system 19602 19598 955672 57324 c007f840 4012db84 S GC (u:79, s:6) 

이것은 GC 스레드가 79을 사용하는 반면 system_server의 메인 스레드는, 사용자의 시간 2,186 틱을 사용하는 것을 말한다 : 당신은 스레드가 adb shell ps -x -t에서 사용 얼마나 많은 사용자 및 시스템 시간 동안 원유 의미, 예를 얻을 수 있습니다 틱.

응용 프로그램을 계측 할 수있는 경우 CLOCK_THREAD_CPUTIME_ID과 함께 POSIX clock_gettime() 호출을 사용하여 주어진 스레드가 사용하는 CPU 시간을 측정 할 수 있습니다. (Dalvik VM은 traceview에 대한 결과를 생성 할 때 이것을 사용합니다.)

그러나 이것은 모든 스레드마다 있습니다. 코어 당 사용량 정보를 얻는 것은 특히 Android의 경우 더욱 어려워집니다.

  • 핫 플러그 ​​메커니즘은 테스트 중에 코어를 추가하거나 제거 할 수 있습니다.
  • 커널은 각 코어의 CPU 주파수를 개별적으로 조정할 수 있으므로 X 작업을 수행하면 다른 코어에서 다른 시간이 소요될 수 있습니다.
  • 스레드는 코어간에 마이그레이션 할 수 있습니다 (기본적으로 코어 선호도 없음).
+0

안녕하세요, 귀하의 답변에 감사드립니다. Android는 언제든지 코어를 켜고 끌 수 있습니까? 이 문서를 지원할 수 있습니까? 감사! – JohnTortugo

+2

음 ... 정식 문서가 있는지 알고 싶습니다. 배터리 수명을 향상시키기 위해 완료되었습니다. CPU 상태 항목을보고 다양한로드를 시스템에 제공하여 직접 관찰 할 수 있어야합니다. 코어를 깨우기 위해 멀티 스레드 CPU로드 프로그램이 유용 할 수 있습니다 (예 : http://bigflake.com/cpu-spinner.c.txt 또는 http://bigflake.com/MultiCore.java.txt). 세부 정보는 기기에 따라 다르며 Android의 다양한 버전에 따라 다릅니다. – fadden

+0

@ JohnTortugo : "이 문서를 지원할 수 있습니까?" - http://www.nvidia.com/object/tegra-3-processor.html ("NVIDIA의 혁신적인 가변 SMP 아키텍처 (PDF 919KB) - 필요한 경우 각 코어에 4 개의 성능 코어를 사용할 수 있습니다. 단일 배터리 세이버 코어 (또는 컴패니언 코어)는 활성 대기, 음악 및 비디오와 같은 저전력 작업을 처리하며 OS 및 애플리케이션에 투명합니다. "). – CommonsWare

0

그것은 (넥서스 7 표시) 다른 코어를 포함해야한다 :

$ adb shell cat /proc/cpuinfo 
Processor : ARMv7 Processor rev 9 (v7l) 
processor : 0 
BogoMIPS : 1993.93 

processor : 1 
BogoMIPS : 1993.93 

processor : 2 
BogoMIPS : 1993.93 

processor : 3 
BogoMIPS : 1993.93 

과 합계 :

$ adb shell cat /proc/stat 
cpu 1623573 112801 907626 32541158 125987 68 5952 0 0 0 
cpu0 804181 45734 569092 7373416 43990 49 4990 0 0 0 
cpu1 332438 26759 142892 8311267 31256 9 574 0 0 0 
cpu2 332889 25551 130711 8319093 30900 7 218 0 0 0 
cpu3 154065 14757 64931 8537382 19841 3 170 0 0 0 
0

핵심은 오프라인 파일

/SYS/장치/시스템/CPU/CPUx/온라인 (x는 코어의 삼성 S3의 숫자입니다 읽고/온라인 인 경우 확인할 수 : 0 , 1,2,3)

"0"이면 코어가 오프라인이고 "1"이면 코어가 온라인입니다. 이제/proc/stat를 사용하여 CPU 사용량을 계산할 수 있지만 Samsung S3의 경우/proc/stat를 읽을 때 활성화 된 코어 만 표시합니다. 이제 모든 코어의 CPU 사용량을 계산하려면 모든 코어를 온라인으로 강제 설정해야합니다.Play 스토어에서 시스템 튜너 앱을 사용할 수 있습니다. 모든 코어를 온라인으로 설정하려면 https://play.google.com/store/apps/details?id=ccc71.pmw&hl=en을 사용할 수 있습니다. 응용 프로그램을 설치 한 다음 (CPU -> 부팅 설정 -> 모든 CPU를 온라인으로 부팅 -> 부팅 완료) 코어를 온라인 상태로 전환하면 이제 장치가 다시 부팅되고 모든 코어가 온라인 상태가됩니다. 이제 /proc/stat을 읽고 모든 코어의 CPU 사용량을 계산하십시오. /proc/stathttp://www.linuxhowtos.org/System/procstat.htm 에 대한 자세한 설명이 필요하면 도움이 될 것입니다.

로드가 모든 활성 코어 (일부 시스템 프로세스 여야 함) 사이에 분산되어 있음을 발견 했으므로 Wifi에서 Skype를 실행 중이었고 모든 코어를 온라인 상태에서 2 코어 (코어 0 및 코어 1)를 온라인 상태에서 30 % 와 25 %를 각각 기록했다. 모든 코어를 온라인 상태로 만든 후 동일한 사용 사례 (Skype over wifi)에 대해 CPU 사용량을 다시 측정했으며 모든 활성 코어 (코어 1 : 26 %, 코어 2 : 9 %, 코어 3 : 11 % , 코어 4 : 10 %).

관련 문제