Per CPU cpu-statistics under SMP

Marco van Tol marco at tols.org
Sat Apr 15 10:40:09 UTC 2006


On Fri, Apr 14, 2006 at 10:17:29AM -0400, John Baldwin wrote:
> On Friday 14 April 2006 06:38, Marco van Tol wrote:
> > On Thu, Apr 13, 2006 at 10:20:40AM -0400, John Baldwin wrote:
> > > On Wednesday 12 April 2006 17:50, Marco van Tol wrote:
> > > > Hi there,
> > > > 
> > > > My apologies if this is the wrong list to ask this kind of question.
> > > > I would appreciate a pointer to the correct list if it is please. :)
> > > > 
> > > > I noticed in the code for gkrellm /usr/ports/sysutils/gkrellm2 that SMP
> > > > per-cpu statistics were not yet supported under FreeBSD, and decided to
> > > > check whether I could add that.  (I'm running a (dual-core) Athlon64 X2
> > > > with FreeBSD 6.1-PRERELEASE)
> > > > I can't find sample code and/or documentation on how to acquire that
> > > > information from the kernel.
> > 
> > [...]
> > 
> > > > Is there an interface under FreeBSD to acquire the necessary per-cpu
> > > > statistics?
> > > 
> > > They don't exist currently.  I have a patch to make the stats per-CPU
> > > for performance reasons (though it only helps out on systems with lots
> > > of CPUs (like 10) and hurts on systems with fewer CPUs (like 4)).  It
> > > doesn't include a sysctl to get the per-CPU stats, but I could add one.
> > 
> > OK, that I could use to get started on the code for adding per-CPU stats to
> > gkrellm under FreeBSD.  Is the patch against FreeBSD CURRENT?
> > 
> > Then if the per-CPU stats code hits the STABLE trunk, it's likely to be only
> > a few changes to what I did perhaps. Or am I running a bit to far ahead
> > here? :)
> > 
> > Is the patch in available your home area on www.freebsd.org?
> 
> An early one but it doesn't export the data to userland yet.  I need to
> figure out what interface to use for that.  I could have the cp_time
> sysctl just include the CPU arrays after the global array and key
> off the passed in length to determine if they should be included or not.

I must admit that I had to read up a bit to understand what you meant here,
but I think I do now.  I think it should work.
If I understand correctly, the first array would have the composite CPU
stats, and following arrays would be the CPU specific stats. Right?
That'd be just like the linux /proc/stat.

In case it's going to be done like this, will the sum of the CPU specific
stats be the composite stats?

I'm not familiar with the formal process of adding/changing sysctl's for the
kernel, so can't give much more comment. :)
I'm assuming there are formal guidelines to do things like that.

Thanks!

Marco

-- 
Gisteren is het niet gelukt.


More information about the freebsd-hackers mailing list