Android top process CPU usage is higher than user and system usage combined

1.7k views Asked by At

I am trying to monitor CPU usage using the top command in my android phone, using the following command:

Process p = Runtime.getRuntime().exec("top -m 15 -d 1 -n 1");

One of the output's of the top command I got is this:

User 2%, System 9%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 10 + Idle 95 + IOW 0 + IRQ 0 + SIRQ 0 = 108

PID    PR    CPU%    S     #THR     VSS     RSS    PCY      UID     Name
743     0     15%    R        1    2416K    948K    bg    u0_a692   top
15351   0      2%    S       79 1921396K 114536K    bg    u0_a59    com.google.android.googlequicksearchbox:search
167     0      1%    S        6   9668K   3512K     logd            /system/bin/logd
496     0      0%    S        1      0K      0K     root            kworker/0:3
20447   0      0%    S        1      0K      0K     root            kworker/u:34

I am using a Nexus 4 which has a quad core chip i.e. 4 CPUs

Here the total CPU usage is (intuitively) user + system = 11%. However, the top process itself takes 15% of the CPU. It happens most of the time. Here's a graph which I plotted using running the top command at an interval of 1s. enter image description here

As seen in most cases, the top command uses more CPU than user and system CPU usage combined.

What causes this behavior?

I wanted to calculate how much CPU is used in an idle, sleep state. So, I thought of subtracting the CPU used by the top process from the combined CPU usage of user and system. But, having these kind of output cannot help me to determine exactly how much CPU the phone is using.

Also, is the CPU% of a process the total of user and system? i.e. if a process is utilizing 10% CPU, is it actually using something like 6% user and 4% system CPU?

0

There are 0 answers