Messages in this thread | | | Date | Thu, 14 Aug 2008 13:30:21 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race with preemptible kernel and CPU hotplug |
| |
* Jeremy Fitzhardinge (jeremy@goop.org) wrote: > Mathieu Desnoyers wrote: >> * H. Peter Anvin (hpa@zytor.com) wrote: >> >>> Mathieu Desnoyers wrote: >>> >>>> I can't argue about the benefit of using VM CPU pinning to manage >>>> resources because I don't use it myself, but I ran some tests out of >>>> curiosity to find if uncontended locks were that cheap, and it turns out >>>> they aren't. Here are the results : >>>> Xeon 2.0GHz >>>> Summary >>>> make -j1 kernel/ 33.94 +/- 0.07 34.91 +/- 0.27 2.8 % >>>> hackbench 50 2.99 +/- 0.01 3.74 +/- 0.01 25.1 % >>>> 1 CPU, replace smp lock prefixes with DS segment selector prefixes >>>> 1 CPU, noreplace-smp >>>> >>> For reference, could you also compare replace smp lock with NOPs? >>> >>> -hpa >>> >> >> Sure, here are the updated tables. Basically, they show no significant >> difference between the NOP and the DS segment selector prefix >> approaches. >> > > BTW, are you changing the initial prefix to DS too? Ie, are you doing a > nop->lock->ds transition, or ds->lock->ds? > > J
Yeah, I thought about this case yesterday, good thing you ask.
include/asm-x86/alternative.h defines LOCK_PREFIX as :
#define LOCK_PREFIX \ ".section .smp_locks,\"a\"\n" \ _ASM_ALIGN "\n" \ _ASM_PTR "661f\n" /* address */ \ ".previous\n" \ "661:\n\tlock; "
So we have the locked instructions built into the kernel, not the nop'd one. Therefore, the only transition I am doing for my benchmarks is :
lock->ds
but I tried to switch back to SMP and it worked fine.
Mathieu
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |