Sharing resources

In a hypervisor system, with the exception of small areas of shared memory, memory and devices are exclusively owned by a single entity (guest or hypervisor host).

Multiple guests running in different VMs may use the same system resource, such as a physical CPU. Management of these resources is entirely the domain of the hypervisor. The system integrator's responsibilities are limited to the (very important) question of configuring the appropriate number of vCPUs for each VM, setting their priorities, and binding (pinning) vCPU threads to specific physical CPUs, if required.

Other resources, such as memory and physical devices, are assigned to specific VMs by the VM configuration, which the hypervisor uses to assemble the VM (see the Configuration chapter). These resources become the exclusive property of the guest running in each VM. They can no more be shared between guests than can physical devices on two separate boards.

Sharing memory

When you configure RAM and ROM for your VM, letting the qvm process choose the host-physical address for the memory is usually the best strategy, because the process will not allocate the same memory location to more than one VM.

A small shared memory region can be an efficient mechanism for passing data between guests in different VMs, however. If you need to configure a shared memory region, you can do so by using a vdev such as vdev-shmem to take advantage of the hypervisor's shared memory services. For more information about how shared memory is implemented, and how to use it, see Memory sharing in the Using Your Hypervisor System chapter.

Sharing devices

Like memory, devices can't be shared directly. Virtual devices (whether emulation or para-virtulized) are either implicit (in the qvm process code), or they are shared objects configured into the VM; they are hence exclusive to the VM. Physical devices are either assigned directly to a guest as pass-through devices, or are assigned to the hypervisor host, and accessed by a guest through a virtual device.

If an entity other than the owner of a physical device needs to access that device, it must go through the device owner, just as it would if the device were physically on another board. If the device is owned by the hypervisor host, this is called mediated sharing; if it is owned by another guest, this is called referred sharing. For more information, see Shared devices in this chapter.