Browse Source

Generic PCI Resource spec

Change-Id: I84fb1dbdc9884dca75b53d23389dccb5ee2a67f1
Partial-Bug: #1580893
Grzegorz Grasza 2 years ago
parent
commit
9815d4a307
1 changed files with 110 additions and 0 deletions
  1. 110
    0
      specs/generic-pci-resource.rst

+ 110
- 0
specs/generic-pci-resource.rst View File

@@ -0,0 +1,110 @@
1
+..
2
+ This work is licensed under a Creative Commons Attribution 3.0 Unported
3
+ License.
4
+
5
+ http://creativecommons.org/licenses/by/3.0/legalcode
6
+
7
+====================
8
+Generic PCI Resource
9
+====================
10
+
11
+https://bugs.launchpad.net/ironic-inspector/+bug/1580893
12
+
13
+Currently, the iLO driver sets a GPU resource capability by hardware inspection
14
+(namely pci_gpu_devices [#]_). In this spec, we want to propose a more generic
15
+implementation of hardware inspection and updating the node capabilities.
16
+The name of the capability, as well as the PCI vendor and device ID list will
17
+be configured by the deployer. After creating a corresponding flavor, nova
18
+scheduler can filter nodes by flavor's extra_specs for a wide range of PCI
19
+device types.
20
+
21
+
22
+Problem description
23
+===================
24
+
25
+Some workloads may require presence of specific hardware. An example of this
26
+can be an image flavor, which requires a minimal set of hardware accelerators
27
+to be present in order to be effective. Another flavor may require a different
28
+accelerator in a differing quantity. The HP iLO driver supports updating the
29
+capability list with a number of present GPUs, which demonstrates, that the
30
+feature is in demand for customers using that specific hardware.
31
+A more general support of various hardware is also in demand, to accommodate
32
+new solutions, which are entering the market [#]_.
33
+
34
+
35
+Proposed change
36
+===============
37
+
38
+The proposed change is to implement a collector of PCI devices in the
39
+ironic-python-agent inspector module, which will return a full list of PCI
40
+devices to ironic inspector.
41
+
42
+The list will consist of dicts containing vendor_id and product_id fields::
43
+
44
+    hw_info['pci_devices'] = [{'vendor_id': '8086', 'product_id': '0412'},
45
+                              {'vendor_id': '8086', 'product_id': '2955'}]
46
+
47
+The second part of the change is to write an ironic inspector plugin, which
48
+updates nodes with configured properties for use by the nova scheduler.
49
+
50
+The ironic-inspector configuration will include a list of capability names with
51
+their corresponding vendor and device IDs. Each defined capability will behave
52
+the same way as the pci_gpu_devices capability in the iLO driver.
53
+
54
+The configuration option will be identical with the pci_alias PCI passthrough
55
+configuration option in nova [#]_::
56
+
57
+    pci_alias={"vendor_id":"8086", "product_id":"1520", "name":"pci_gpu"}
58
+
59
+It's possible to configure multiple pci_alias by having them each separate on
60
+their own config line::
61
+
62
+    pci_alias={"vendor_id":"8086", "product_id":"0412", "name":"pci_gpu"}
63
+    pci_alias={"vendor_id":"8086", "product_id":"2955", "name":"pci_vca"}
64
+
65
+Several vendor/product IDs can be mapped to the same name. This can be used in
66
+case the operator determines they serve an equivalent function.
67
+
68
+The capabilities are then read by nova scheduler and used for filtering, by
69
+matching against flavor's extra_specs. [#]_
70
+
71
+
72
+Alternatives
73
+------------
74
+
75
+One alternative is to use the iLO driver, which supports pci_gpu_devices extra
76
+capability, but it doesn't support other PCI devices. Another alternative is to
77
+manually update the node capabilities, without the ironic-inspector. This
78
+may be a valid solution if all instances of the new hardware are configured in
79
+the same way.
80
+
81
+
82
+Implementation
83
+==============
84
+
85
+Assignee(s)
86
+-----------
87
+
88
+Primary assignee:
89
+  xek
90
+
91
+Other contributors:
92
+  szymon-borkowski
93
+
94
+Work Items
95
+----------
96
+
97
+ * create a tooling module for listing PCI devices
98
+ * implement a collector of PCI devices in ironic-python-agent inspector module
99
+ * implement an ironic inspector plugin, which updates node properties with
100
+   configured PCI resource capabilities for use by nova scheduler
101
+ * document the new feature
102
+
103
+
104
+References
105
+==========
106
+
107
+.. [#] http://docs.openstack.org/developer/ironic/drivers/ilo.html#hardware-inspection-support
108
+.. [#] http://ark.intel.com/products/87380/Intel-Visual-Compute-Accelerator
109
+.. [#] https://wiki.openstack.org/wiki/Pci_passthrough#Configure_the_nova
110
+.. [#] http://docs.openstack.org/developer/ironic/deploy/inspection.html#capabilities-discovery

Loading…
Cancel
Save