linux/arch/x86
Mark Langsdorf 565d0998ec KVM: SVM: Support Pause Filter in AMD processors
New AMD processors (Family 0x10 models 8+) support the Pause
Filter Feature.  This feature creates a new field in the VMCB
called Pause Filter Count.  If Pause Filter Count is greater
than 0 and intercepting PAUSEs is enabled, the processor will
increment an internal counter when a PAUSE instruction occurs
instead of intercepting.  When the internal counter reaches the
Pause Filter Count value, a PAUSE intercept will occur.

This feature can be used to detect contended spinlocks,
especially when the lock holding VCPU is not scheduled.
Rescheduling another VCPU prevents the VCPU seeking the
lock from wasting its quantum by spinning idly.

Experimental results show that most spinlocks are held
for less than 1000 PAUSE cycles or more than a few
thousand.  Default the Pause Filter Counter to 3000 to
detect the contended spinlocks.

Processor support for this feature is indicated by a CPUID
bit.

On a 24 core system running 4 guests each with 16 VCPUs,
this patch improved overall performance of each guest's
32 job kernbench by approximately 3-5% when combined
with a scheduler algorithm thati caused the VCPU to
sleep for a brief period. Further performance improvement
may be possible with a more sophisticated yield algorithm.

Signed-off-by: Mark Langsdorf <mark.langsdorf@amd.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2009-12-03 09:32:17 +02:00
..
boot x86: Document linker script ASSERT() quirk 2009-10-16 07:18:46 +02:00
configs tracing: Rename FTRACE_SYSCALLS for tracepoints 2009-08-26 00:17:35 +02:00
crypto crypto: aesni-intel - Fix irq_fpu_usable usage 2009-10-20 16:20:47 +09:00
ia32 x86-64: Fix register leak in 32-bit syscall audting 2009-10-26 16:23:26 +01:00
include/asm KVM: SVM: Support Pause Filter in AMD processors 2009-12-03 09:32:17 +02:00
kernel Merge remote branch 'tip/x86/entry' into kvm-updates/2.6.33 2009-12-03 09:30:06 +02:00
kvm KVM: SVM: Support Pause Filter in AMD processors 2009-12-03 09:32:17 +02:00
lguest lguest: move panic notifier registration to its expected place. 2009-09-23 22:26:44 +09:30
lib x86: Don't generate cmpxchg8b_emu if CONFIG_X86_CMPXCHG64=y 2009-10-01 08:42:24 +02:00
math-emu
mm x86: Fix error return sequence in __ioremap_caller() 2009-11-08 12:48:58 +01:00
oprofile perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
pci const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
power x86: Remove final bits of CONFIG_X86_OLD_MCE 2009-09-18 08:31:23 +02:00
vdso kbuild: rename ld-option to cc-ldoption 2009-09-20 12:27:42 +02:00
video
xen xen: mask extended topology info in cpuid 2009-11-03 11:09:12 -08:00
Kbuild
Kconfig Merge remote branch 'tip/x86/entry' into kvm-updates/2.6.33 2009-12-03 09:30:06 +02:00
Kconfig.cpu x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium 2009-10-26 12:33:02 +01:00
Kconfig.debug
Makefile x86: Remove STACKPROTECTOR_ALL 2009-10-23 16:35:23 +02:00
Makefile_32.cpu x86: add specific support for Intel Atom architecture 2009-08-23 11:20:02 +02:00