Bug 1041073

Summary: [RFE][nova]: Support vcpu_pin_set in the XenAPI driver
Product: Red Hat OpenStack Reporter: RHOS Integration <rhos-integ>
Component: openstack-novaAssignee: RHOS Maint <rhos-maint>
Status: CLOSED UPSTREAM QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: hateya, markmc, ndipanov, sgordon, yeylon
Target Milestone: Upstream M2Keywords: FutureFeature
Target Release: 5.0 (RHEL 7)   
Hardware: Unspecified   
OS: Unspecified   
URL: https://blueprints.launchpad.net/nova/+spec/xenapi-vcpu-pin-set
Whiteboard: upstream_milestone_icehouse-2 upstream_status_implemented upstream_definition_approved
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-12-12 21:31:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description RHOS Integration 2013-12-12 13:34:10 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/nova/+spec/xenapi-vcpu-pin-set.

Description:

We already have the setting in libvirt:
cfg.StrOpt('vcpu_pin_set',
                help='Which pcpus can be used by vcpus of instance '
                     'e.g: "4-12,^8,15"'),

We can support this in XenAPI, however we will only support values like:
"3,4,5,6,7,8"

The reason this is useful, is because you can often improve the performance of Xen on NUMA servers by pinning the Dom0 vCPU to particular physical CPUs. However, if you do this, you need to ensure no other VMs want to use those vCPUs, else they are likely to get starved of resources, and strange things may happen.

More details on XenServer's pinning API can be found here:
http://support.citrix.com/article/CTX117960

And details on dom0 pinning can be found here:
http://wiki.xen.org/wiki/XenCommonProblems#Can_I_dedicate_a_cpu_core_.28or_cores.29_only_for_dom0.3F

So to determine the best value for vcpu_pin_set, you need to list all the pCPU cores that you have not assigned to Dom0.

In XenAPI we have the ability to specify a "mask" that defines which physical cores the VM can be scheduled to. Using the vcpu_pin_set as the mask will then ensure the VMs vCPU only get scheduled on physical CPUs that are not reserved for Dom0.

Specification URL (additional information):

None

Comment 2 Stephen Gordon 2013-12-12 21:31:49 UTC
Xen is not formally supported in RHELOSP at this time.