I run my application both on xen and kvm, and I found the performance
on kvm is worse than xen.
kvm: 2.6.32-60.el6.x86_64 redhat 6 bate 2
xen: xen3.4.2
then i stat the vm exit reason, and i found the ept violation reason,
kvm is much more than xen. the static result is :
(XEN) 100000 times on cpu 0,
reason, times
0, 388
1, 8636
7, 1902
12, 18292
18, 6065
28, 8474
30, 16590
44, 39653
(KVM) 100000 times on cpu 0,
reason, times
0, 998
1, 7115
7, 3335
12, 1953
28, 1988
30, 22324
44, 20224
48, 42063
by used xen, it didn't have ept violation, because my application
first malloc all memory,and initialize it. so i think kvm is also
didn't need vm exits by ept violation .
the exit_qualification of ept violation is 181 or 182, i found the
code run abnormality while deal with ept violation, the error happed
because the return of slot is NULL
unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn)
{
struct kvm_memory_slot *slot;
gfn = unalias_gfn_instantiation(kvm, gfn);
slot = gfn_to_memslot_unaliased(kvm, gfn);
/* the error happed at this , the return of slot is NULL */
if (!slot || slot->flags & KVM_MEMSLOT_INVALID)
return bad_hva();
return (slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE);
}
then i printk the gfa below:
__ratelimit: 387 callbacks suppressed
error gpa is 4273995776
error gpa is 4273995776
error gpa is 4273995776
error gpa is 4273995776
error gpa is 4273995776
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
__ratelimit: 387 callbacks suppressed
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
error gpa is 782336
why access this address cause vm exit in kvm, but didn't cause vm exit in xen.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html