This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Add getcpu
* Szabolcs Nagy:
> On 05/12/18 17:41, H.J. Lu wrote:
>> On Wed, Dec 5, 2018 at 9:33 AM Carlos O'Donell <carlos@redhat.com> wrote:
>>>
>>> On 12/5/18 9:29 AM, H.J. Lu wrote:
>>>> To optimize for multi-node NUMA system, I need a very fast way to identity which
>>>> node the current process is running on. getcpu:
>>>>
>>>> NAME
>>>> getcpu - determine CPU and NUMA node on which the calling thread is
>>>> running
> ...
>>> I see that on x86 you have a vdso vgetcpu, and that lsl is one instruction and
>>> loads the cpunode mask and ccpunode bits in one shot (atomic). So this should
>>> work fine, but for all other callers I assume this will be a syscall.
>>
>> I need vdso getcpu to avoid syscall. I am working on a NUMA spinlock
>> library which depends on a very fast getcpu.
>
> hm i thought rseq will let you access cpuid faster than vdso.
> (and that can even protect against preemptive scheduling.
> i don't know much about numa, but i'd expect the cpuid to
> numa node mapping to be fixed and then cpuid is enough)
The mapping is not fixed, due to CPU hotplug/unplug, VM migration and
CRIU.
Thanks,
Florian