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>