Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Apr 2006 13:48:25 +0000
From:      Marco van Tol <marco@tols.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Per CPU cpu-statistics under SMP
Message-ID:  <20060417134825.GA47043@tols.org>
In-Reply-To: <200604170904.58902.jhb@freebsd.org>
References:  <20060412215021.GB1146@tols.org> <200604141017.30635.jhb@freebsd.org> <20060415104005.GB27978@tols.org> <200604170904.58902.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Apr 17, 2006 at 09:04:58AM -0400, John Baldwin wrote:
> On Saturday 15 April 2006 06:40 am, Marco van Tol wrote:
> > On Fri, Apr 14, 2006 at 10:17:29AM -0400, John Baldwin wrote:

[...]

> > > 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?
> 
> Yes.
> 
> > 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.
> 
> I actually did it differently though to try and make it less confusing.
> I've added a kern.pcpu_time sysctl which is an array of 0..mp_maxid
> cp_time[] arrays (so (mp_maxid + 1) * CPUSTATES longs) which is just the
> per-CPU data.  Userland can sum them up if it wants a composite total.
> Userland would first do a sysctl with a NULL buffer to get the required
> size (since it can vary with the number of CPUs in the system), malloc()
> a buffer, and then use the malloc'd buffer to make the requests.  You
> should only have to do the malloc() at process start since FreeBSD doesn't
> currently allow for more CPUs to be added at runtime.  You can try out
> the patch at http://www.FreeBSD.org/~jhb/patches/cp_time.patch

Great thanks!

I will try to apply the patch, and try to modify gkrellm to support it.
I'll drop them (gkrellm developers) a note that I'm doing this, as it would
be a waist of effort if somebody else has been doing preliminary work that
I'd be doing again. :)

I'll keep you up-to-date.

Thanks.

Marco

-- 
Ik heb een hekel aan bumper-klevers, vanochtend zat er weer een voor me.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060417134825.GA47043>