NormalizedComputeUnits (NCUs) as a way to specify compute capacity across processor generations.

Registered by murali sundar

When a flavor is created we normally specify the number of VCPUs. This is really a statement about the suitability of the flavor for workloads with differing levels of multi-threading efficiency, and is not a statement about the compute capacity that the flavor will offer a workload. For example, if I have a poorly multithreaded app, it will not benefit from 4 VCPUs even though the flavor offers it. Furthermore, even for an app that is properly multithreaded, the compute capacity of a VCPU varies widely depending on the processor. It will be very useful to have a way to specify the compute capacity independent of VCPUs and processor type. E.g. a flavor with 2 VCPUs could offer 4 NCUs or 6 NCUs and this gives the scheduler an ability to schedule the workload on system A or system B. This blueprint aims to create a NormalizedComputeUnit to address this problem. This blueprint is about creating such a unit and the mechanisms to specify it as an attribute when a flavor is created. During VM instantiation the NCU will then be translated into the appropriate unit that the Hypervisor can support. In the case of Linux/KVM it will get translated into the equivalent cpu shares in cgroups. The nova drivers for the other hypervisors may do what is appropriate in their context. Please note that the conversion from NCUs to cpu shares is not a simple scaling formula and it will depend on the processor type. This blueprint will offer a mechanism to calculate NCUs, specify them during flavor creation, and handle bugeting/allocation as more VMs land on a platform.

Blueprint information

Not started
murali sundar
Needs approval
Andrzej Kuriata
Series goal:
Milestone target:

Related branches



This is very much needed, IMO. I'd love to see a spec for this and maybe help out on it. -jaypipes

Gerrit topic:,topic:normalized-compute-units,n,z

Addressed by:
    Introduce Normalized Compute Units

@Jaypipes - we talked about this in Jan at the FTF. How can we plan for an implementation plan? Can we start on a branch?


Work Items

This blueprint contains Public information 
Everyone can see this information.