understanding relationship between Qemu and KVM

You are partially correct. Just be careful, as there can be some confusion. KVM is the name of the virtualization technology in the Linux kernel.

KVM is also commonly used as the name of a fork (a more accurate name would be qemu-kvm) of the QEMU project with better support for the hardware virtualization. This claim was confirmed by the QEMU project, but as of version 1.3 of QEMU all features of qemu-kvm have been merged.

The download page for the KVM project explains that difference quite well as well.

One more thing to keep in mind is that the advantages of qemu-kvm are being merged in the newer releases of qemu, so I hope one day the difference between the two will disappear.


KVM is a kernel module that allows, through virtualization specific CPU extensions, to schedule a VMs CPU request directly in the host CPU and RAM, with minimal amount of overhead. QEMU provides the rest of the emulated hardware, because a machine, even virtual, is not just a CPU - it's a lot of additional hardware. QEMU can also emulate the CPU, but compared to the way KVM does it, it's painfully slow, thus the merge, to get the best of both worlds