Generic PCI Resource spec
Change-Id: I84fb1dbdc9884dca75b53d23389dccb5ee2a67f1 Partial-Bug: #1580893
This commit is contained in:
parent
d959e4b1ba
commit
9815d4a307
|
@ -0,0 +1,110 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
====================
|
||||||
|
Generic PCI Resource
|
||||||
|
====================
|
||||||
|
|
||||||
|
https://bugs.launchpad.net/ironic-inspector/+bug/1580893
|
||||||
|
|
||||||
|
Currently, the iLO driver sets a GPU resource capability by hardware inspection
|
||||||
|
(namely pci_gpu_devices [#]_). In this spec, we want to propose a more generic
|
||||||
|
implementation of hardware inspection and updating the node capabilities.
|
||||||
|
The name of the capability, as well as the PCI vendor and device ID list will
|
||||||
|
be configured by the deployer. After creating a corresponding flavor, nova
|
||||||
|
scheduler can filter nodes by flavor's extra_specs for a wide range of PCI
|
||||||
|
device types.
|
||||||
|
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Some workloads may require presence of specific hardware. An example of this
|
||||||
|
can be an image flavor, which requires a minimal set of hardware accelerators
|
||||||
|
to be present in order to be effective. Another flavor may require a different
|
||||||
|
accelerator in a differing quantity. The HP iLO driver supports updating the
|
||||||
|
capability list with a number of present GPUs, which demonstrates, that the
|
||||||
|
feature is in demand for customers using that specific hardware.
|
||||||
|
A more general support of various hardware is also in demand, to accommodate
|
||||||
|
new solutions, which are entering the market [#]_.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The proposed change is to implement a collector of PCI devices in the
|
||||||
|
ironic-python-agent inspector module, which will return a full list of PCI
|
||||||
|
devices to ironic inspector.
|
||||||
|
|
||||||
|
The list will consist of dicts containing vendor_id and product_id fields::
|
||||||
|
|
||||||
|
hw_info['pci_devices'] = [{'vendor_id': '8086', 'product_id': '0412'},
|
||||||
|
{'vendor_id': '8086', 'product_id': '2955'}]
|
||||||
|
|
||||||
|
The second part of the change is to write an ironic inspector plugin, which
|
||||||
|
updates nodes with configured properties for use by the nova scheduler.
|
||||||
|
|
||||||
|
The ironic-inspector configuration will include a list of capability names with
|
||||||
|
their corresponding vendor and device IDs. Each defined capability will behave
|
||||||
|
the same way as the pci_gpu_devices capability in the iLO driver.
|
||||||
|
|
||||||
|
The configuration option will be identical with the pci_alias PCI passthrough
|
||||||
|
configuration option in nova [#]_::
|
||||||
|
|
||||||
|
pci_alias={"vendor_id":"8086", "product_id":"1520", "name":"pci_gpu"}
|
||||||
|
|
||||||
|
It's possible to configure multiple pci_alias by having them each separate on
|
||||||
|
their own config line::
|
||||||
|
|
||||||
|
pci_alias={"vendor_id":"8086", "product_id":"0412", "name":"pci_gpu"}
|
||||||
|
pci_alias={"vendor_id":"8086", "product_id":"2955", "name":"pci_vca"}
|
||||||
|
|
||||||
|
Several vendor/product IDs can be mapped to the same name. This can be used in
|
||||||
|
case the operator determines they serve an equivalent function.
|
||||||
|
|
||||||
|
The capabilities are then read by nova scheduler and used for filtering, by
|
||||||
|
matching against flavor's extra_specs. [#]_
|
||||||
|
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
One alternative is to use the iLO driver, which supports pci_gpu_devices extra
|
||||||
|
capability, but it doesn't support other PCI devices. Another alternative is to
|
||||||
|
manually update the node capabilities, without the ironic-inspector. This
|
||||||
|
may be a valid solution if all instances of the new hardware are configured in
|
||||||
|
the same way.
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
xek
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
szymon-borkowski
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* create a tooling module for listing PCI devices
|
||||||
|
* implement a collector of PCI devices in ironic-python-agent inspector module
|
||||||
|
* implement an ironic inspector plugin, which updates node properties with
|
||||||
|
configured PCI resource capabilities for use by nova scheduler
|
||||||
|
* document the new feature
|
||||||
|
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. [#] http://docs.openstack.org/developer/ironic/drivers/ilo.html#hardware-inspection-support
|
||||||
|
.. [#] http://ark.intel.com/products/87380/Intel-Visual-Compute-Accelerator
|
||||||
|
.. [#] https://wiki.openstack.org/wiki/Pci_passthrough#Configure_the_nova
|
||||||
|
.. [#] http://docs.openstack.org/developer/ironic/deploy/inspection.html#capabilities-discovery
|
Loading…
Reference in New Issue