Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Oct 2011 13:43:24 -0500
From:      Dan Nelson <dnelson@allantgroup.com>
To:        Poul-Henning Kamp <phk@phk.freebsd.dk>
Cc:        freebsd-current@freebsd.org, Luigi Rizzo <rizzo@iet.unipi.it>
Subject:   Re: getting the cpuid for a userspace process ?
Message-ID:  <20111025184323.GH93709@dan.emsphone.com>
In-Reply-To: <99483.1319566152@critter.freebsd.dk>
References:  <201110251342.45194.jhb@freebsd.org> <99483.1319566152@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Oct 25), Poul-Henning Kamp said:
> In message <201110251342.45194.jhb@freebsd.org>, John Baldwin writes:
> >On Tuesday, October 25, 2011 11:06:22 am Luigi Rizzo wrote:
> >> as the subject says... is there any way to get the current CPU id for a
> >> userspace process (of course, valid only at the time the function is
> >> called as the process might be arbitrarily moved while it runs)
> >
> >Not from userland, no.  On x86 you can use cpuid to fetch the APIC ID,
> >but that does not map 1:1 to FreeBSD cpu IDs.
> 
> How does JEmalloc do it ?

Looking at the source, it just determines the number of CPUs, creates a
number of arenas proportional to that, and assigns threads to an arena.  If
contention on a particular arena gets bad, the thread gets moved to another
areana (see everything inside "#ifdef MALLOC_BALANCE" blocks).

-- 
	Dan Nelson
	dnelson@allantgroup.com



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