geek
geek

Reputation: 1853

Getting cpu usage and calculating % used

I need to calculate the cpu usage and aggregate it from proc file in linux

/proc/stat gives me data but how would i come to know the % used of cpu at time as stat gives me the count of processes at cores running at any time which does not give me any idea of %use of cpu? And i am coding this in Golang and have to do this w/o scripts

Thanks in advance!!

Upvotes: 1

Views: 3101

Answers (1)

Quentin Casasnovas
Quentin Casasnovas

Reputation: 1099

/proc/stat does not only give you the count of processes on each core. man proc will tell you the exact format of that file. Copied from it, here is the part you should be interested in:

   /proc/stat
          cpu  3357 0 4313 1362393
                 The  amount  of  time,  measured  in  units  of   USER_HZ
                 (1/100ths   of   a  second  on  most  architectures,  use
                 sysconf(_SC_CLK_TCK) to obtain the right value), that the
                 system  spent  in  user mode, user mode with low priority
                 (nice), system mode, and  the  idle  task,  respectively.
                 The  last  value should be USER_HZ times the second entry
                 in the uptime pseudo-file.

It is then easy to do the substraction of the idle field between two measures, which will give you the time spent not doing anything by this CPU. The other value that you can extract is the time doing something, which is the difference between two measures of:

time in user mode + time spent in user mode with low priority + time spent in system mode

You will then have two values; one, A, is expressing the time doing nothing, and the other, B, the time actually doing something. B / (A + B) will give you the percentage of time the CPU was busy.

Upvotes: 1

Related Questions