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><