2011-05-26 7 views
8

Estoy haciendo una pequeña aplicación de Android para mostrar el uso total actual de la CPU, como la pestaña Rendimiento en el Administrador de tareas de Windows. Uso "top -m 1 -n 1 -d 1" para obtener el uso de CPU, pero realmente no entiendo el resultado de "top".Describe el comando "superior" en Android

El resultado como:

User 5%, system 15%, IOW 0%, IRQ 0% 
User 5 + Nice 0 + Sys 14 + Idle 73 + IOW 0 + IRQ 0 + SIRQ 0 = 92 
PID  CPU% S #THR VSS RSS UID  Name 
213  11% R 1  900K 340K app_16 top 

uso de la CPU = ??? ¿Cómo puedo calcular el uso total de la CPU?

Respuesta

10

La respuesta aceptada para esta pregunta es incorrecta. La segunda línea del resultado es la cantidad de subprocesos/procesos que se inician en esa agrupación. El uso de tu CPU es del 20% en lo anterior. 5% de eso es de aplicaciones de usuario y 15% de aplicaciones de sistema. Tiene 73 hilos inactivos, 14 hilos de sistema y 5 hilos de usuario (según la segunda línea).

por ejemplo, aquí está una instantánea superior actual para mi Droid.

User 6%, System 5%, IOW 0%, IRQ 0% 
User 21 + Nice 0 + Sys 16 + Idle 270 + IOW 0 + IRQ 3 + SIRQ 0 = 310 

    PID CPU% S #THR  VSS  RSS PCY UID  Name 
30994 4% S 19 134912K 24140K bg app_24 edu.vu.isis.ammo.spotreport 
1021 3% S 57 217400K 58504K fg system system_server 
20911 2% R  1 880K 400K fg shell top 
1053 0% S  1  0K  0K fg root  tiwlan_wq 
    995 0% S  2 1272K 128K fg compass /system/bin/akmd2 

De acuerdo con la respuesta aceptada, lo habría hecho 310% de uso de CPU, cuando este es en realidad el número de hilos. Estoy bastante seguro de que en realidad estoy usando solo el 11% de la CPU, donde los 3 procesos principales están usando el 9% de ese total.

+0

¿cuál es la interpretación si la CPU tiene núcleo múltiple? – Rilwan

+1

no es correcto, vea la respuesta correcta a continuación (http://stackoverflow.com/a/15497011/2201815) – Denisigo

-4

El porcentaje de uso de CPU se da como (100-idle_percentage), más o menos. En su fragmento, el porcentaje de Idle es 73, lo que hace que el uso de su CPU sea del 27%.

En cuanto al uso de la CPU por proceso, esa será su segunda columna de las últimas 2 líneas.

+0

Gracias por su sugerencia, me ayuda demasiado. – VietAnh

+1

Como mencionó @jedmodson es su respuesta, del ejemplo publicado '73' es el número si hilos inactivos, no el porcentaje de inactividad. – HeatfanJohn

-2

comando superior es un comando de Linux. Tener una mirada here

Gracias Deepak

+0

He leído este manual pero no entiendo cómo calcular el uso de la CPU. – VietAnh

5

La respuesta real a la pregunta es directa - puede ser calculado a partir de la primera línea de salida de la parte superior androide

User 5%, system 15%, IOW 0%, IRQ 0% 

Total = suma de todos los porcentajes = 5 + 15 = 20%

La otra respuesta sobre la segunda línea es tan incorrecta. La segunda línea realmente da el tiempo del programador pasado en ese estado particular - usuario/sys/inactivo/iow en jiffies (normalmente 10ms) entre una salida de la parte superior y la siguiente salida de la parte superior - en el caso de OP top -d 1 - que imprime el uso cada segundo - el número total de jiffies por núcleo sería ~ 100 (suponiendo 10ms por jiffy) - que sería similar a los valores porcentuales.

User 5 + Nice 0 + Sys 14 + Idle 73 + IOW 0 + IRQ 0 + SIRQ 0 = 92 

Considerando que, los valores serían más si el -d es mayor o si hay más de uno núcleos

User 21 + Nice 0 + Sys 16 + Idle 270 + IOW 0 + IRQ 3 + SIRQ 0 = 310 

Esta es, probablemente, sin ninguna opción -d, por lo top toma de retardo predeterminado de 3 segundos = 300 jiffies.

Consulte AOSP top sourcecode para obtener la lógica completa de cómo se calcula cada valor.

+0

Esta debería ser la respuesta aceptada. La segunda línea da el tiempo pasado, no hilos. –

Cuestiones relacionadas