kvm与VMware Esx在某些应用中性能差别较大,主要原因在于kvm的IO模拟放在qemu中做的,而qemu在用户态实现。这样一来,从kvm到用户态的切换需要消耗不少的cpu,另外用户态调度效率比内核线程调度低。
目前kqemu有些重要的设备模拟放在内核态实现,比如vhost-net,即virtio网卡内核加速功能。但是也有些IO没有放在内核,比如ACPI PM TIMER,如果客户机中的应用程序大量调用获取timer相关的函数,那么就有可能造成qemu进程繁忙,在客户机中的任务管理器就可以看到该进程消耗大量的cpu了。
比较简单的解决方法是把该设备模拟放到内核KVM模块的中PIO中处理。目前不清楚是否有硬件直接支持timer的虚拟化。
原文地址:http://www.cnblogs.com/kvm-qemu/p/3866654.html