* Jeremy Fitzhardinge (jeremy@xxxxxxxx) wrote:
Mathieu Desnoyers wrote:
* H. Peter Anvin (hpa@xxxxxxxxx) wrote:BTW, are you changing the initial prefix to DS too? Ie, are you doing a nop->lock->ds transition, or ds->lock->ds?
Mathieu Desnoyers wrote:Sure, here are the updated tables. Basically, they show no significant
I can't argue about the benefit of using VM CPU pinning to manageFor reference, could you also compare replace smp lock with NOPs?
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
-hpa
difference between the NOP and the DS segment selector prefix
approaches.
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.