Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Apr 2006 18:38:26 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Marco van Tol <marco@tols.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Per CPU cpu-statistics under SMP
Message-ID:  <200604181838.27713.jhb@freebsd.org>
In-Reply-To: <20060418221505.GC58081@tols.org>
References:  <20060412215021.GB1146@tols.org> <20060417134825.GA47043@tols.org> <20060418221505.GC58081@tols.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 18 April 2006 18:15, Marco van Tol wrote:
> On Mon, Apr 17, 2006 at 01:48:25PM +0000, Marco van Tol wrote:
> > On Mon, Apr 17, 2006 at 09:04:58AM -0400, John Baldwin wrote:
> 
> [...]
> 
> > > 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.
> 
> I'm trying to apply the patch. Tried it to both todays current and todays
> RELENG_6, but both have failing hunks in sys/kern/kern_clock.c.
> The rest succeeds.
> 
> I can do two things:
> - Try to manually patch it against todays current.
> - re-checkout todays RELENG_6, and download the relevant files from the
>   cvsweb interface from the date you posted the patch from that days
>   CURRENT.  Then try to apply the patch.
> 
> For the latter it may break the kernelbuild, but I'm very tempted to try
> that one ahead of the manual patching attempt. ;)
> 
> I'll keep you posted on how far I'm getting with this.  Guess I should have
> gone straight to current the day you posted the patch.  Sorry.

Ah, hmm.  On 6.x we don't have per-thread stat ticks yet, which is
probably why it is failing.  It also isn't safe to move sched_lock
down either on 6.x.  You can still apply the rest of the patch by
hand, just leave the 'mtx_lock_spin(&sched_lock)' where it is and
change all the 'cp_time[FOO]++' to 'PCPU_LAZY_INC(cp_time[FOO])'.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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