Document PCI IRQ Affinity Agent creation (pick r6)
This commit includes the creation of a doc about how the agent operates and how to configure OpenStack to operate properly with it. Fixed minor editorial issues. Signed-off-by: Elisamara Aoki Goncalves <elisamaraaoki.goncalves@windriver.com> Change-Id: Ie118b1b2b7924a7f3a94bec089cd315094ebdef2
This commit is contained in:
		@@ -47,3 +47,12 @@ Use Host's PTP Clock
 | 
			
		||||
   :maxdepth: 1
 | 
			
		||||
 | 
			
		||||
   configure-kvm-virtual-ptp-driver
 | 
			
		||||
 | 
			
		||||
----------------
 | 
			
		||||
PCI IRQ Affinity
 | 
			
		||||
----------------
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
   :maxdepth: 1
 | 
			
		||||
 | 
			
		||||
   pci-irq-affinity-4fed257d094b
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,57 @@
 | 
			
		||||
.. _pci-irq-affinity-4fed257d094b:
 | 
			
		||||
 | 
			
		||||
================
 | 
			
		||||
PCI IRQ Affinity
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
While in OpenStack it is possible to enable instances to use |PCI| devices, the
 | 
			
		||||
interrupts generated by these devices may be handled by host CPUs that are
 | 
			
		||||
unrelated to the instance, and this can lead to noisy neighbor issues and lower
 | 
			
		||||
performance, if the device interrupts were handled by the instance's CPUs.
 | 
			
		||||
 | 
			
		||||
|PCI| |IRQ| Affinity can only be specified for instances with dedicated vCPUs.
 | 
			
		||||
 | 
			
		||||
|PCI| |IRQ| Affinity assignments are used to achieve higher performance since
 | 
			
		||||
the instance's core(s) will handle the interrupts from |PCI| devices used
 | 
			
		||||
by these instances. Interrupts are thus prevented from consuming cycles on the
 | 
			
		||||
platform cores.
 | 
			
		||||
 | 
			
		||||
-----------
 | 
			
		||||
Flavor spec
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
A specific flavor spec for |PCI| interrupt affining is used to determine which
 | 
			
		||||
vCPUs assigned to the instance must handle the interrupts from the |PCI|
 | 
			
		||||
devices:
 | 
			
		||||
 | 
			
		||||
``hw:pci_irq_affinity_mask=<vcpus_cpulist>``
 | 
			
		||||
 | 
			
		||||
Where ``vcpus_cpulist`` can assume a comma-separated list of values that
 | 
			
		||||
can be expressed as:
 | 
			
		||||
 | 
			
		||||
- ``int``: the vCPU expressed by ``int`` will be assigned to handle the
 | 
			
		||||
  interruptions from the |PCI| devices
 | 
			
		||||
- ``int1-int2``: the vCPUs between ``int1`` and ``int2`` (inclusive) will
 | 
			
		||||
  be used to handle the interruptions from the |PCI| devices
 | 
			
		||||
- ``^int``: the vCPU expressed by ``int`` will not be assigned to handle the
 | 
			
		||||
  interruptions from the |PCI| devices and shall be used to exclude a vCPU
 | 
			
		||||
  that was included in a previous range
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
 | 
			
		||||
    ``int`` must be a value between ``0`` and ``flavor.vcpus - 1``.
 | 
			
		||||
 | 
			
		||||
For example: ``hw_pci_irq_affinity_mask=1-4,^3,6`` means that vCPUs with
 | 
			
		||||
indexes ``1,2,4 and 6`` from the vCPU list that Nova allocates to the instance
 | 
			
		||||
will be assigned to handle interruptions from the |PCI| devices.
 | 
			
		||||
 | 
			
		||||
-----------
 | 
			
		||||
Limitations
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
-   No |PCI| |IRQ| CPU affining is supported for instances using shared CPUs
 | 
			
		||||
    (i.e., when using flavor spec ``hw:cpu_policy=shared``).
 | 
			
		||||
 | 
			
		||||
-   No |PCI| |IRQ| CPU affining will be performed when invalid ranges are
 | 
			
		||||
    specified in the flavor spec; a log error message will be generated
 | 
			
		||||
    indicating the problem.
 | 
			
		||||
@@ -60,6 +60,7 @@
 | 
			
		||||
.. |IoT| replace:: :abbr:`IoT (Internet of Things)`
 | 
			
		||||
.. |IPMI| replace:: :abbr:`IPMI (Intelligent Platform Management Interface)`
 | 
			
		||||
.. |IOPS| replace:: :abbr:`IOPS (I/O operations per second)`
 | 
			
		||||
.. |IRQ| replace:: :abbr:`IRQ (Interrupt Request)`
 | 
			
		||||
.. |KVM| replace:: :abbr:`KVM (Kernel-based Virtual Machine)`
 | 
			
		||||
.. |LACP| replace:: :abbr:`LACP (Link Aggregation Control Protocol)`
 | 
			
		||||
.. |LAG| replace:: :abbr:`LAG (Link Aggregation)`
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user