Dedicated CPUs placement policy

Registered by Sahid Orentino on 2015-09-02

This feature aims to enhance the libvirt driver to provide dedicated CPUs placement policy for guests. Give opportunity to split emulator threads from vCPUs or make them running together on pCPUs dedicated

Emulator is term used to define a subset of running guest which does not include I/O threads or vCPUs. In some workflows like realtime or NFV we may want to dedicate pCPUs to handle emulator and dedicated pCPUs to handle vCPUs (I/O threads is not currently take into account)

The flavor extra specs will support the specification of guest vCPUs placement policy.

  hw:cpu_policy.N = <cpu|emulator|cpu, emulator>

With N refer to guest vCPUs.

If no cpu policy is configured the current and default implementation will run, means pCPUs will be dedicated to vCPUs and emulator threads will be pinned to union of all pCPUs.
If a cpu policy placement is requested a topology should be defined according the examples:

  For flavor with requesting 1 vCPU

    hw:cpu_policy = dedicated
    hw:cpu_policy.0 = cpu, emulator

In this example a pCPU will be dedicated to handle guest vCPU + emulator threads

  For flavor with requesting 2 vCPUs

    hw:cpu_policy = dedicated
    hw:cpu_policy.0 = cpu
    hw:cpu_policy.1 = emulator

In this example a pCPU will be didicated to handle guest vCPU and an other pCPU will be dedicated to handle emulator theads.

This topology can also take advantage of numa topology and cpu pinning.

Blueprint information

Not started
John Garbutt
Sahid Orentino
Needs approval
Sahid Orentino
Pending Approval
Series goal:
Proposed for trunk
Milestone target:
milestone icon next

Related branches




Work Items

This blueprint contains Public information 
Everyone can see this information.