aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/kvm.h
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2007-04-19 10:27:43 -0400
committerAvi Kivity <avi@qumranet.com>2007-05-03 03:52:30 -0400
commit1165f5fec18c077bdba88e7125fd41f8e3617cb4 (patch)
treea1931bfddfabaa909f4ebd14a5c00a549d1e37ec /drivers/kvm/kvm.h
parent3fca03653010b8c5fa63b99fc94c78cbfb433d00 (diff)
KVM: Per-vcpu statistics
Make the exit statistics per-vcpu instead of global. This gives a 3.5% boost when running one virtual machine per core on my two socket dual core (4 cores total) machine. Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/kvm.h')
-rw-r--r--drivers/kvm/kvm.h35
1 files changed, 18 insertions, 17 deletions
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index b9c318a9e334..d1a90c5d76ce 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -236,6 +236,22 @@ struct kvm_pio_request {
236 int rep; 236 int rep;
237}; 237};
238 238
239struct kvm_stat {
240 u32 pf_fixed;
241 u32 pf_guest;
242 u32 tlb_flush;
243 u32 invlpg;
244
245 u32 exits;
246 u32 io_exits;
247 u32 mmio_exits;
248 u32 signal_exits;
249 u32 irq_window_exits;
250 u32 halt_exits;
251 u32 request_irq_exits;
252 u32 irq_exits;
253};
254
239struct kvm_vcpu { 255struct kvm_vcpu {
240 struct kvm *kvm; 256 struct kvm *kvm;
241 union { 257 union {
@@ -298,6 +314,8 @@ struct kvm_vcpu {
298 int sigset_active; 314 int sigset_active;
299 sigset_t sigset; 315 sigset_t sigset;
300 316
317 struct kvm_stat stat;
318
301 struct { 319 struct {
302 int active; 320 int active;
303 u8 save_iopl; 321 u8 save_iopl;
@@ -347,22 +365,6 @@ struct kvm {
347 struct file *filp; 365 struct file *filp;
348}; 366};
349 367
350struct kvm_stat {
351 u32 pf_fixed;
352 u32 pf_guest;
353 u32 tlb_flush;
354 u32 invlpg;
355
356 u32 exits;
357 u32 io_exits;
358 u32 mmio_exits;
359 u32 signal_exits;
360 u32 irq_window_exits;
361 u32 halt_exits;
362 u32 request_irq_exits;
363 u32 irq_exits;
364};
365
366struct descriptor_table { 368struct descriptor_table {
367 u16 limit; 369 u16 limit;
368 unsigned long base; 370 unsigned long base;
@@ -424,7 +426,6 @@ struct kvm_arch_ops {
424 unsigned char *hypercall_addr); 426 unsigned char *hypercall_addr);
425}; 427};
426 428
427extern struct kvm_stat kvm_stat;
428extern struct kvm_arch_ops *kvm_arch_ops; 429extern struct kvm_arch_ops *kvm_arch_ops;
429 430
430#define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt) 431#define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt)