On Thu, 2009-08-27 at 19:21 +0300, Avi Kivity wrote: > On 08/27/2009 06:41 PM, Gleb Natapov wrote: > > Don't call adjust_vmx_controls() two times for the same control. > > It restores options that was dropped earlier. > > > > Applied, thanks. Andrew, if you rerun your benchmark atop kvm.git > 'next' branch, I believe you will see dramatically better results. Yes! CPU is much lower: user nice system irq softirq guest idle iowait 5.81 0.00 9.48 0.08 1.04 21.32 57.86 4.41 previous CPU: user nice system irq softirq guest idle iowait 5.67 0.00 11.64 0.09 1.05 31.90 46.06 3.59 new oprofile: > samples % app name symbol name > 885444 53.2905 kvm-intel.ko vmx_vcpu_run > 38090 2.2924 qemu-system-x86_64 cpu_physical_memory_rw > 34764 2.0923 qemu-system-x86_64 phys_page_find_alloc > 25278 1.5214 vmlinux-2.6.31-rc5-autokern1 native_write_msr_safe > 18205 1.0957 libc-2.5.so memcpy > 14730 0.8865 qemu-system-x86_64 qemu_get_ram_ptr > 14189 0.8540 kvm.ko kvm_arch_vcpu_ioctl_run > 12380 0.7451 vmlinux-2.6.31-rc5-autokern1 native_set_debugreg > 12278 0.7390 vmlinux-2.6.31-rc5-autokern1 native_read_msr_safe > 10871 0.6543 qemu-system-x86_64 virtqueue_get_head > 10814 0.6508 vmlinux-2.6.31-rc5-autokern1 copy_user_generic_string > 9080 0.5465 vmlinux-2.6.31-rc5-autokern1 fget_light > 9015 0.5426 vmlinux-2.6.31-rc5-autokern1 schedule > 8557 0.5150 qemu-system-x86_64 virtqueue_avail_bytes > 7805 0.4697 vmlinux-2.6.31-rc5-autokern1 do_select > 7173 0.4317 qemu-system-x86_64 lduw_phys > 7019 0.4224 qemu-system-x86_64 main_loop_wait > 6979 0.4200 vmlinux-2.6.31-rc5-autokern1 audit_syscall_exit > 5571 0.3353 vmlinux-2.6.31-rc5-autokern1 kfree > 5170 0.3112 vmlinux-2.6.31-rc5-autokern1 audit_syscall_entry > 5086 0.3061 vmlinux-2.6.31-rc5-autokern1 fput > 4631 0.2787 vmlinux-2.6.31-rc5-autokern1 mwait_idle > 4584 0.2759 kvm.ko kvm_load_guest_fpu > 4491 0.2703 vmlinux-2.6.31-rc5-autokern1 system_call > 4461 0.2685 vmlinux-2.6.31-rc5-autokern1 __switch_to > 4431 0.2667 kvm.ko kvm_put_guest_fpu > 4371 0.2631 vmlinux-2.6.31-rc5-autokern1 __down_read > 4290 0.2582 qemu-system-x86_64 kvm_run > 4218 0.2539 vmlinux-2.6.31-rc5-autokern1 getnstimeofday > 4129 0.2485 libpthread-2.5.so pthread_mutex_lock > 4122 0.2481 qemu-system-x86_64 ldl_phys > 4100 0.2468 vmlinux-2.6.31-rc5-autokern1 do_vfs_ioctl > 3811 0.2294 kvm.ko find_highest_vector > 3593 0.2162 vmlinux-2.6.31-rc5-autokern1 unroll_tree_refs > 3560 0.2143 vmlinux-2.6.31-rc5-autokern1 try_to_wake_up > 3550 0.2137 vmlinux-2.6.31-rc5-autokern1 native_get_debugreg > 3506 0.2110 kvm-intel.ko vmcs_writel > 3487 0.2099 vmlinux-2.6.31-rc5-autokern1 task_rq_lock > 3434 0.2067 vmlinux-2.6.31-rc5-autokern1 __up_read > 3368 0.2027 librt-2.5.so clock_gettime > 3339 0.2010 qemu-system-x86_64 virtqueue_num_heads > Thanks very much for the fix! -Andrew -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html