Subject: Re: getting cpu utilization
To: None <netbsd-users@NetBSD.org>
From: George Georgalis <george@galis.org>
List: netbsd-users
Date: 01/11/2007 20:47:45
On Thu, Jan 11, 2007 at 08:20:01PM -0500, Steven M. Bellovin wrote:
>On Thu, 11 Jan 2007 20:08:46 -0500
>"George Georgalis" <george@galis.org> wrote:
>
>> On Thu, Jan 11, 2007 at 06:46:30PM -0600, Jeremy C. Reed wrote:
>> >> I'm using a /bin/sh function to generate a the cpu utilization 
>> >> 
>> >> util () { # CPU Utilization
>> >>  idle=$(echo "2 k $(top -b -d2 | grep '^CPU states' | awk '{print
>> >> $11}' | sed 's/%//') 1 + p" | dc) echo "2 k 1 $idle / p"  | dc ;}
>> >> 
>> >> That returns the inverse of the cpu idle % found in top.  I add
>> >> 1 to the value before I invert it to prevent divide by zero, so
>> >> output is pretty much between 0 and 1.
>> >> 
>> >> Running two top reports seems a pretty inefficient way to get the
>> >> value.  I think I can tune top a bit, but is there a more direct
>> >> way to get the measurement?
>> >
>> >Maybe "sysctl kern.cp_time" ?
>> 
>> hey that looks pretty good, but I cannot find any doc on it
>> sysctl(8) mentions it; but no detail in (3) 
>> 
>> my best guess to the numbers is the number of 0.01 seconds elapsed
>> per cpu, so idle athlon below increments idle time silghtly over
>> 100 per second, while the idle 8 core opteron increments at a
>> little more than 800 per second.
>> 
>Are you looking on -current?  Details are now in sysctl(7).  Anyway, I
>don't think it's what you want, since it looks to be a cumulative time,
>not the current one status.  You could, of course, take the difference
>between two samples.

okay, I seen it in current- sysctl(3), not exactlty the values
I was looking for, but I'll be dumping this into a rrdtool rrd.
maybe I can use something in that to derive and report "recent
utilization" or maybe I'll just do the math. either way, this
looks a lot more lightweight than grepping top batch output. :)

// George


-- 
George Georgalis, systems architect, administrator <IXOYE><