Descrip "top" command in Android

19,372

Solution 1

The accepted answer for this question is incorrect. The second line of the output is the number of threads/processes that are launched in that grouping. Your CPU usage is 20% in the above. 5% of that is from user apps and 15% from system apps. You have 73 idle threads, 14 system threads, and 5 user threads (according to the second line).

for instance, here is a current top snapshot for my 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

According to the accepted answer, I would have 310% CPU usage, when this is actually just the number of threads. I am pretty sure I am actually using only 11% of the CPU, where the top 3 processes are using 9% of that total.

Solution 2

The actual answer to the question is straight-forward - can be calculated from the first line of android top's output

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

Total = sum of all the percentages = 5+15 = 20%

The other answer about second line is so wrong. The second line actually gives scheduler time spent in that particular state - user/sys/idle/iow in jiffies (normally 10ms) between one output of top and the next output of top - in OP's case top -d 1 - which prints usage every second - the total number of jiffies per core would be ~100 (assuming 10ms per jiffy) - which would be similar to percentage values.

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

Whereas, the values would be more if the -d is higher or if there are more than one cores

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

This is probably without any -d option, so top takes default delay of 3 seconds = 300 jiffies.

Refer AOSP top sourcecode to get the complete logic of how each value is calculated.

Share:
19,372
VietAnh
Author by

VietAnh

Updated on July 20, 2022

Comments

  • VietAnh
    VietAnh almost 2 years

    I'm making a small Android application to show current total CPU usage like tab Performance in Windows Task Manager. I use "top -m 1 -n 1 -d 1" to get CPU usage, but i do not really understand the result of "top".

    The result like:

    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
    

    CPU usage = ??? How can i calculated total CPU usage?

  • VietAnh
    VietAnh about 13 years
    Thanks for your suggestion, it's help me too much.
  • VietAnh
    VietAnh about 13 years
    I read this manual but don't understand how to calculated CPU usage.
  • HeatfanJohn
    HeatfanJohn over 11 years
    As mentioned by @jedmodson is his answer, from the posted example 73 is the number if idle threads, not the idle percentage.
  • Rilwan
    Rilwan over 10 years
    what is the interpretation if cpu has multi core ?
  • Vikram Gupta
    Vikram Gupta over 9 years
    This should be the accepted answer. The second line gives the time spent, not threads.
  • Denisigo
    Denisigo over 7 years
    not correct, see correct answer below (stackoverflow.com/a/15497011/2201815)
  • Joël Esponde
    Joël Esponde about 4 years
  • Joël Esponde
    Joël Esponde about 4 years
    And since Android 8.0, top is provided by toybox toolset: android.googlesource.com/platform/system/core.git/+/refs/hea‌​ds/…