Subject: Re: getting cpu utilization
To: George Georgalis <george@galis.org>
From: Steven M. Bellovin <smb@cs.columbia.edu>
List: netbsd-users
Date: 01/11/2007 20:20:01
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.

		--Steve Bellovin, http://www.cs.columbia.edu/~smb