[android] Stock CPU 사용량 데이터를 읽는 방법

Ice Cream Sandwich에서 개발자 옵션의 옵션은 “Show CPU Usage”이며 화면에 오버레이를 추가합니다 (아래 스크린 샷 참조).

내 질문은 데이터를 어떻게 읽습니까? 패키지 이름이 현재 활성화 된 프로세스라고 생각했지만 뒤에있는 빨간색과 녹색 막대는 무엇을 의미합니까? 또한 패키지 위에있는 3 개의 숫자는 무엇입니까?

여기에 이미지 설명 입력



답변

이것은 Unix로드 평균이어야합니다. Wikipedia 에는 이에 대한 좋은 기사가 있습니다.

숫자는 서로 다른 시간 간격에서 CPU 의 평균 로드를 보여줍니다 . 왼쪽에서 오른쪽으로 : 마지막 1 분 / 지난 5 분 / 지난 15 분


답변

지금까지 이것이 제가 찾을 수있는 가장 유용한 정보원이었습니다. 분명히 숫자는 %로 평균 부하를 반영하지 않습니다 :
http://forum.xda-developers.com/showthread.php?t=1495763


답변

다른 답변에서 지적했듯이 UNIX 시스템에서 숫자는 1/5/15 분 동안 CPU로드 평균 을 나타냅니다 . 그러나 Linux (결과적으로 Android)에서는 그것이 나타내는 것이 다른 것입니다.

1993 년으로 거슬러 올라가는 커널 패치 ( 주제에 대한 심층 기사 ) 이후, Linux에서로드 평균 수치는 더 이상 CPU를 엄격하게 나타내지 않습니다.로드 : 계산시 CPU 바운드 프로세스뿐만 아니라 무정전 대기 상태의 프로세스도 고려하므로 원래 목표는 I / O 바운드 프로세스를 이러한 방식으로 설명하여 CPU로드보다 “시스템로드”를 더 많이 나타내는 것이 었습니다. . 문제는 1993 년 이후 Linux 커널에서 무정전 상태의 사용이 증가했으며 더 이상 일반적으로 I / O 바인딩 된 프로세스를 나타내지 않는다는 것입니다. 이 문제는 구현에서 신호를 수용하는 것을 피하기위한 쉬운 대기로 중단 불가능한 대기를 사용하는 일부 Linux 개발자에 의해 더욱 악화됩니다. 결과적으로 Linux (및 Android)에서 실제로드를 객관적으로 나타내지 않는 왜곡 된 높은로드 평균 수치를 볼 수 있습니다. 낮은 CPU 사용률과 대조되는 불합리한 높은로드 평균에 대한 Android 사용자 보고서가 있습니다. 예를 들면 내 오래된 Android 휴대 전화 (CPU 코어 2 개 포함)는 시스템과 CPU가 유휴 상태 일 때 일반적으로 ~ 12의 평균 부하를 표시했습니다. 따라서 Linux (Android)의 평균로드 수치는 신뢰할 수있는 성능 지표가 아닙니다.


답변

1 분, 5 분, 15 분 동안의 CPU로드를 보여주는 “로드 평균”에 대한 추가 정보

Linux, Mac 및 기타 Unix 계열 시스템은 “부하 평균”수치를 표시합니다. 이 숫자는 시스템의 CPU, 디스크 및 기타 리소스의 사용량을 나타냅니다. 처음에는 자명하지 않지만 익숙해지기 쉽습니다.

WIKI: example, one can interpret a load average of "1.73 0.60 7.98" on a single-CPU system as:

during the last minute, the system was overloaded by 73% on average (1.73 runnable processes, so that 0.73 processes had to wait for a turn for a single CPU system on average).
during the last 5 minutes, the CPU was idling 40% of the time on average.
during the last 15 minutes, the system was overloaded 698% on average (7.98 runnable processes, so that 6.98 processes had to wait for a turn for a single CPU system on average) if dual core mean: 798% - 200% = 598%. 

다중 CPU 또는 다중 코어 CPU가있는 시스템이있을 수 있습니다. 부하 평균 수치는 이러한 시스템에서 약간 다르게 작동합니다. 예를 들어, 단일 CPU 시스템에서로드 평균이 2이면 시스템이 100 % 오버로드되었음을 의미합니다. 전체 기간 동안 한 프로세스는 CPU를 사용하고 다른 프로세스는 대기하고있었습니다. 두 개의 CPU가있는 시스템에서 이것은 완전한 사용량입니다. 두 개의 다른 프로세스가 전체 시간 동안 두 개의 다른 CPU를 사용하고있었습니다. CPU가 4 개인 시스템에서는 사용량이 절반이됩니다. 2 개의 프로세스는 2 개의 CPU를 사용하고 2 개의 CPU는 유휴 상태였습니다.

평균로드 수를 이해하려면 시스템에있는 CPU 수를 알아야합니다. 로드 평균 6.03은 단일 CPU가있는 시스템이 과도하게 과부하되었음을 나타내지 만 CPU가 8 개인 컴퓨터에서는 괜찮습니다.

더 많은 정보 : 링크


답변

에서 고성능 안드로이드 애플리케이션 책 (157 페이지)

  • 우리가 보는 것은 adb shell dumpsys cpuinfo 명령 과 동일합니다.
  • 숫자는 1 분, 5 분, 15 분 동안의 CPU 부하 를 보여줍니다 (왼쪽부터).
  • 색상은 사용자 공간 (녹색), 커널 (빨간색) 및 IO 인터럽트 (파란색)에서 CPU가 소비 한 시간을 표시합니다.

답변