Browse Source

Merge "Collect Bios, Memory and Processor Info from Dmidecode"

Jenkins 1 year ago
parent
commit
f44e945ce6
1 changed files with 255 additions and 0 deletions
  1. 255
    0
      specs/dmidecode-reporting.rst

+ 255
- 0
specs/dmidecode-reporting.rst View File

@@ -0,0 +1,255 @@
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
+Reporting Processor, Memory, and BIOS dmidecode Introspection Data
9
+==================================================================
10
+
11
+https://bugs.launchpad.net/ironic-python-agent/+bug/1635057
12
+
13
+As of today, node introspection data provides information related to CPU,
14
+memory, and BIOS. However, a few more key data fields are important to help
15
+deployers select nodes matching specific criteria to facilitate smart
16
+scheduling. Currently, total and physical memory size are collected.
17
+However, more specific information about DIMMs would help deployers to
18
+schedule nodes for low latency workloads. Similarly, CPU data fields such as
19
+signature and socket designation would be useful for inventory management.
20
+This spec proposes a collector for the **ironic-inspector** to obtain a few
21
+more key details of CPU, memory, and BIOS.
22
+
23
+
24
+Problem description
25
+===================
26
+
27
+Configuring nodes for better performance is a priority from the operator’s
28
+point of view. The operator can specify node capabilities in a nova flavor
29
+for a node to be selected for `scheduling`_. Collecting key CPU, memory, and
30
+BIOS data fields will enable operator to create flavors based on discovered
31
+hardware features.
32
+
33
+Here is a list of the key data fields that will be of use for this purpose:
34
+
35
+* ``BIOS Version``: To know which firmware version is running on the host, for
36
+  maintenance reasons.
37
+* ``Socket Designation``: To know which CPU is seated in which socket, useful
38
+  for inventory management.
39
+* ``Signature``: To know which CPU features are available.
40
+* ``Max Speed``: To know single thread performance.
41
+* ``Core Count``, ``Core Enabled``, ``Thread Count``: To know about
42
+  hyperthreading, for smart scheduling.
43
+* ``Number Of Memory Devices``: This is needed for low latency workloads, to
44
+  ensure lowest possible latency environment for an application (for the nova
45
+  scheduler to select a node matching specific criteria).
46
+* ``Memory Device Size``: Same as above.
47
+* ``Memory Device Speed``: Same as above.
48
+
49
+
50
+Proposed change
51
+===============
52
+
53
+The proposed change is to implement a collector for listing the details of the
54
+processor, memory, and BIOS in the **ironic-python-agent**'s inspector module
55
+using the `dmidecode utility`_ and then returning the collected data to the
56
+**ironic-inspector**. The processing done on this data in the
57
+**ironic-python-agent** is limited, to allow for the server side plugin to
58
+process as much or as little of the data as needed.
59
+
60
+.. note::
61
+
62
+   The ``dmidecode`` utility reports information about a system's hardware as
63
+   described in its system BIOS according to the `SMBIOS/DMI standard`_ (see a
64
+   `sample output`_). This information includes system manufacturer, model
65
+   name, serial number, BIOS version and other details such as usage status of
66
+   CPU sockets and memory module slots. The ``dmidecode`` output is
67
+   vendor-dependent and the fields are optional. The deployer should be aware
68
+   of this when using the data.
69
+
70
+
71
+The format of the data collected by the new collector in
72
+**ironic-python-agent** looks like this::
73
+
74
+  "dmi": {
75
+    "bios": {
76
+      "Vendor": <vendor name>,
77
+      "Characteristics": "",
78
+      "Runtime Size": "64 kB",
79
+      "BIOS Revision": "0.0",
80
+      "Firmware Revision": "0.0",
81
+      "Version": "SE5C610.86B.01.01.0016.033120161139",
82
+      "ROM Size": "16384 kB",
83
+      "Address": "0xF0000",
84
+      "Handle": "Handle 0x0000, DMI type 0, 24 bytes",
85
+      "Release Date": "03/31/2016",
86
+    },
87
+    "memory": {
88
+      "Maximum Capacity": "192 GB",
89
+      "Number Of Devices": "24",
90
+      "Use": "System Memory",
91
+      "Error Information Handle": "Not Provided",
92
+      "Error Correction Type": "Single-bit ECC",
93
+      "Location": "System Board Or Motherboard",
94
+      "devices": [
95
+        {
96
+         "Configured voltage": "Unknown",
97
+         "Rank": "2",
98
+         "Type": "<OUT OF SPEC>",
99
+         "Array Handle": "0x0020",
100
+         "Handle": "Handle 0x0022, DMI type 17, 40 bytes",
101
+         "Serial Number": "EF3D2255",
102
+         "Total Width": "72 bits",
103
+         "Minimum voltage": "Unknown",
104
+         "Form Factor": "DIMM",
105
+         "Manufacturer": <manufacturer name>,
106
+         "Data Width": "64 bits",
107
+         "Configured Clock Speed": "1866 MHz",
108
+         "Asset Tag": "",
109
+         "Bank Locator": "NODE 1",
110
+         "Part Number": "9965600-012.A01G",
111
+         "Set": "None",
112
+         "Maximum voltage": "Unknown",
113
+         "Error Information Handle": "Not Provided",
114
+         "Locator": "DIMM_A1",
115
+         "Type Detail": "Synchronous",
116
+         "Speed": "2133 MHz",
117
+         "Size": "16384 MB"
118
+        },
119
+        ...
120
+      ]
121
+    },
122
+    "cpu": {
123
+      "devices": [
124
+        {
125
+         "Upgrade": "<OUT OF SPEC>",
126
+         "Socket Designation": "CPU1",
127
+         "L2 Cache Handle": "0x0019",
128
+         "Version": <cpu device version>,
129
+         "Type": "Central Processor",
130
+         "Core Count": "18",
131
+         "Status": "Populated, Enabled",
132
+         "Handle": "Handle 0x001B, DMI type 4, 48 bytes",
133
+         "Core Enabled": "18",
134
+         "External Clock": "100 MHz",
135
+         "Serial Number": "",
136
+         "Current Speed": "2300 MHz",
137
+         "Manufacturer": <cpu device manufacturer name>,
138
+         "L3 Cache Handle": "0x001A",
139
+         "Asset Tag": "",
140
+         "Flags": "",
141
+         "Signature": "Type 0, Family 6, Model 63, Stepping 2",
142
+         "L1 Cache Handle": "0x0018",
143
+         "ID": "F2 06 03 00 FF FB EB BF",
144
+         "Part Number": "",
145
+         "Family": <cpu device family>,
146
+         "Thread Count": "36",
147
+         "Voltage": "1.6 V",
148
+         "Max Speed": "4000 MHz",
149
+         "Characteristics": ""
150
+        },
151
+        ...
152
+      ]
153
+    }
154
+  },
155
+
156
+
157
+Alternatives
158
+------------
159
+
160
+None
161
+
162
+Data model impact
163
+-----------------
164
+
165
+None
166
+
167
+HTTP API impact
168
+---------------
169
+
170
+None
171
+
172
+Client (CLI) impact
173
+-------------------
174
+
175
+None
176
+
177
+Ironic python agent impact
178
+--------------------------
179
+
180
+The change proposed above will be implemented in **ironic-python-agent**.
181
+
182
+Performance and scalability impact
183
+----------------------------------
184
+
185
+None
186
+
187
+Security impact
188
+---------------
189
+
190
+None
191
+
192
+Deployer impact
193
+---------------
194
+
195
+The deployer will be able to get more data about the CPUs, DIMMs, and BIOS.
196
+This information would be useful in configuring the system for better
197
+performance. The deployer will provide the optional collector via
198
+the ``ipa-inspection-collectors`` kernel argument.
199
+
200
+
201
+Developer impact
202
+----------------
203
+
204
+None
205
+
206
+
207
+Implementation
208
+==============
209
+
210
+Assignee(s)
211
+-----------
212
+
213
+Primary assignee:
214
+  Ramamani Yeleswarapu <Rama_Y>
215
+
216
+Work Items
217
+----------
218
+
219
+* Implement the collection of processor, memory, and BIOS fields mentioned
220
+  above using the `dmidecode utility`_ in a new collector in the
221
+  **ironic-python-agent**.
222
+
223
+
224
+Dependencies
225
+============
226
+
227
+None
228
+
229
+
230
+Testing
231
+=======
232
+
233
+Unit test cases will be added.
234
+
235
+
236
+References
237
+==========
238
+
239
+* `Dmidecode utility`_
240
+
241
+* `SMBIOS/DMI standard`_
242
+
243
+* `Scheduling`_
244
+
245
+.. _scheduling:
246
+   http://docs.openstack.org/project-install-guide/baremetal/draft/configure-integration.html#configure-compute-flavors-for-use-with-the-bare-metal-service
247
+
248
+.. _dmidecode utility:
249
+   http://www.nongnu.org/dmidecode/
250
+
251
+.. _SMBIOS/DMI standard:
252
+   http://www.dmtf.org/standards/smbios
253
+
254
+.. _sample output:
255
+   http://www.nongnu.org/dmidecode/sample/dmidecode.txt

Loading…
Cancel
Save