A small look inside Introduction This text will be a little explanation about what kvm is doing. Its done while the existence of kvm-54, so future versions of kvm can differ from this. svm = secure virtual machine (AMD) vmx = virtual machine extensions (Intel) Loading Modules svm (AMD) If one loads the module svm.ko… Continue reading what kvm is doing
Category: virtualization
kvm: Intel associative TLBs
kvm: Intel associative TLBs Traditional x86 architecture implicitly requires TLB flushing upon context switching (CR3 writes) so the new process-to-run’s address space does not conflict with lineal to physical translations cached by previous processes. When using shadow pages for MMU virtualization, it can be quite expensive to throw away.Intel introduced Virtual Processor ID (vpid) into its VT-x… Continue reading kvm: Intel associative TLBs
kvm: hardware assisted paging
kvm: hardware assisted paging CPU vendors began adding hardware virtual memory management unit (vMMU) support circa 2009, with Intel’s VT-x (vmx flag) addition. Historically, the guest’s physical (gpa) to host physical (hpa) addresses where translated through software, using shadow page tables. These tables are kept synchronized with the guest’s page tables, and are one of… Continue reading kvm: hardware assisted paging
kvm: virtual x86 mmu setup
kvm: virtual x86 mmu setup One of the initialization steps that KVM does when a virtual machine (VM) is started, is setting up the vCPU’s memory management unit (MMU) to translate virtual (lineal) addresses into physical ones within the guest’s domain. For x86, which is what will be covered here, most of the corresponding code… Continue reading kvm: virtual x86 mmu setup
how to count and trace performance events in the KVM kernel module
This page describes how to count and trace performance events in the KVM kernel module. There are two tools, kvm_stat and kvm_trace, which were previously used for these tasks. Now this can be done using standard Linux tracing tools. Contents [hide] 1 Counting events 2 Tracing events 3 Recording events 3.1 Recording events for a guest 3.1.1 Using copies of guest files 3.1.2 Using… Continue reading how to count and trace performance events in the KVM kernel module
How KVM deals with memory
This was written in February 2010, during the era of qemu-kvm 0.12. The qemu/kvm process runs mostly like a normal Linux program. It allocates its memory with normal malloc() or mmap() calls. If a guest is going to have 1GB of physical memory, qemu/kvm will effectively do a malloc(1<<30), allocating 1GB of host virtual space.… Continue reading How KVM deals with memory
KVM File layout in kernel
The first kvm releases its file in the directory drivers/kvm/, but since around December 2007 it is pushed into virt/kvm directory in the kernel source tree. Other files are also listed here. Contents [hide] 1 Architecture independent files of kvm 1.1 virt/kvm 2 Architecture dependent files 2.1 arch/x86/kvm 2.2 include/linux 2.3 include/asm-x86/ Architecture independent files of kvm virt/kvm ioapic.h ioapic.c iodev.h… Continue reading KVM File layout in kernel
Linux KVM
Kernel Virtual Machine KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. Using KVM, one can run multiple virtual machines… Continue reading Linux KVM
Libvirt Manual Pages
Common Daemons These daemons provide functionality across multiple libvirt drivers libvirtd(8) – libvirt management daemon virtlockd(8) – libvirt lock management daemon virtlogd(8) – libvirt log management daemon virtproxyd(8) – libvirt proxy daemon Modular Driver daemons These daemons provide functionality to a single libvirt driver virtbhyved(8) – libvirt bhyve management daemon virtinterfaced(8) – libvirt host network interface management daemon virtlxcd(8) – libvirt LXC… Continue reading Libvirt Manual Pages
libvirt windows support
Windows support Installation packages Connection types Connecting to VMware ESX/vSphere TLS Certificates Feedback Compiling yourself MSYS Build script Cross compiling By hand Libvirt is known to work as a client (not server) on Windows XP (32-bit), and Windows 7 (64-bit). Other Windows variants likely work as well but we either haven’t tested or received reports… Continue reading libvirt windows support