kernel space: finding cpu usage of individual process/thread

Pintu Agarwal at
Wed Mar 23 11:45:16 EDT 2022


For one of my requirements I need to find cpu usage or load_avg of an
individual process or thread using "for_each_process_thread(process,
thread)" where process/thread is a pointer to "task_struct".

But, currently I am not able to figure out which is the right field
from task_struct to get this value, or how to manipulate it.

I see some fields there but I'm not sure if these values are correct.
a) sched_entity -> sched_avg -> load/load_avg/load_sum/util_avg/etc.
b) stime + utime : What time I get from here ?
c) prev_cputime
d) vtime
e) acct_timexpd
f) ???

It will be good if I can get some references in kernel space.

When I use (a) above (load_avg) I get this value:
pid=2 , comm=kthread, load=51
pid=96, comm=cat , load=1024

When I use (stime + utime) I get:
pid=2 , comm=kthread, load=3978848
pid=96, comm=cat , load=11786176

So, not sure which one is correct ?


More information about the Kernelnewbies mailing list