On 07/16/2012 11:25 AM, Raghavendra K T wrote:From: Raghavendra K T<raghavendra.kt@xxxxxxxxxxxxxxxxxx>
Noting pause loop exited vcpu or cpu relax intercepted helps in
filtering right candidate to yield. Wrong selection of vcpu;
i.e., a vcpu that just did a pl-exit or cpu relax intercepted may
contribute to performance degradation.
Signed-off-by: Raghavendra K T<raghavendra.kt@xxxxxxxxxxxxxxxxxx>
---
V2 was:
Reviewed-by: Rik van Riel<riel@xxxxxxxxxx>
include/linux/kvm_host.h | 37 +++++++++++++++++++++++++++++++++++++
virt/kvm/kvm_main.c | 5 +++++
2 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index c446435..fa353bd 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -183,6 +183,18 @@ struct kvm_vcpu {
} async_pf;
#endif
+#ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT
+ /*
+ * Cpu relax intercept or pause loop exit optimization
+ * cpu_relax_intercepted: set when a vcpu does a pause loop exit
+ * or cpu relax intercepted.
+ * dy_eligible: indicates whether vcpu is eligible for directed yield.
+ */
+ struct {
+ bool cpu_relax_intercepted;
+ bool dy_eligible;
+ } ple;
Naming:
- ple is the x86 name, but this is common code. I'd call it spin_loop.
- cpu_relax_intercepted: can call it in_spin_loop,
me "are we intercepting cpu_relax or not" which may be useful at one
point (when we know we aren't overcommitted)
- dy_eligible: I'd like to understand the algorithm more and would want
the name to reflect it, will come to this later if I have a better idea.
+#endif
blank line.
struct kvm_vcpu_arch arch;
};