Thursday, March 17, 2016

Overview

CPU time is allocated in discrete time slices (ticks). For a certain
number of time slices, the cpu is busy, other times it is not (which is
represented by the idle process). In the picture below the CPU is busy
for 6 of the 10 CPU slices. 6/10 = .60 = 60% of busy time (and there
would therefore be 40% idle time).
Note: A tick(cycle) is the time it takes to send a single pulse. A
pulse consists of a high voltage followed by a low voltage. There can be
billions of ticks per second depending on the frequency(GHz) of the CPU
clock.
You can get the number of CPU ticks since boot from /proc/stat

Formula

To calculate Linux CPU usage time subtract the idle CPU time from the total CPU time as follows:Total CPU time since boot = user+nice+system+idle+iowait+irq+softirq+stealTotal CPU Idle time since boot = idle + iowaitTotal CPU usage time since boot = Total CPU time since boot - Total CPU Idle time since bootTotal CPU percentage = Total CPU usage time since boot/Total CPU time since boot X 100
If you use the formula on the example data above you should get a Linux CPU usage Percentage of 60%.
Note: Guest and Guest_nice are already accounted in user and nice, hence they are not included in the total calculation
For real time CPU usage, you will need to calculate the time between two intervals.
Below is an example of a Bash Script by Paul Colby that does this