cpu utilization break down via sysctl

Stefan Parvu sparvu at systemdatarecorder.org
Mon Aug 4 16:41:11 UTC 2014


> Sure; I've done the data acquisition with sysctl & awk, then
> post-processed that with a bit of Perl.  I wrote some code in R to
> generate graphs....  I did some similar stuff using RRDTool a whlie
> back.

Im planning in using BSD::Sysctl to fetch all needed values.

> kern.cp_time output is an ordered quintuple showing (aggregate) CPU
> counters for:
> 
> * user
> * nice
> * system
> * interrupt
> * idle
> 

I see. Cool. If I understood right these will be the break down for 4 vcpu system:

$ sysctl kern.cp_times
kern.cp_times: 28845 2060 22253 1805 1197920 27677 1477 22399 2109 1199180 32342 1649 19499 894 1198458 29670 1678 20324 1471 1199699

which maps to:

time1: cpu0: user_28845: nice_2060: system_22253: intr_1805: idle_1197920
time1: cpu1: user_27677: nice_1477 system_22399 intr_2109: idle_1199180 
time1: cpu2: user_32342: nice_1649: system_19499: intr_894: idle_1198458
time1: cpu3 user_29670: nice_1678: system_20324: intr_1471: idle_1199699


> For each core (or the aggregate), you need to look at an interval.  Get
> the differences for each of the 5 possible CPU states; the sum of those
> differences is the total of CPU resources available during that
> interval.

Right I need to do delta between 2 readings to get the correct values. Same as in KSTAT 
in Solaris perl interface. 

One more check here: 

 CPU_Utilization = User + System + Nice + Intr ? 

Many thanks indeed. I need to experiment with these ...


-- 
Stefan Parvu <sparvu at systemdatarecorder.org>


More information about the freebsd-hackers mailing list