报告处理器、内存和BIOS dmidecode 内省数据

https://bugs.launchpad.net/ironic-python-agent/+bug/1635057

目前,节点内省数据提供与CPU、内存和BIOS相关的信息。然而,还有一些关键数据字段对于帮助部署者选择满足特定标准的节点以促进智能调度非常重要。目前,已收集总内存和物理内存大小。但是,关于DIMM的更具体信息将有助于部署者为低延迟工作负载调度节点。类似地,CPU数据字段,如签名和插槽指定,对于库存管理将非常有用。本规范提出一个用于ironic-python-agent的收集器,以获取CPU、内存和BIOS的更多关键细节。

问题描述

从操作员的角度来看,配置节点以获得更好的性能是优先事项。操作员可以在nova flavor中指定节点功能,以便为调度选择节点。收集关键的CPU、内存和BIOS数据字段将使操作员能够基于发现的硬件功能创建flavor。

以下是可能为此目的使用的关键数据字段列表

  • BIOS 版本:为了了解主机上运行的固件版本,以便进行维护。

  • 插槽 指定:为了了解CPU安装在哪个插槽中,这对于库存管理很有用。

  • 签名:为了了解可用的CPU功能。

  • 最大 速度:为了了解单线程性能。

  • 核心 数量, 核心 启用, 线程 数量:为了了解超线程,以便进行智能调度。

  • 内存 设备 数量:这对于低延迟工作负载是必需的,以确保应用程序的最低可能延迟环境(供nova调度器选择满足特定标准的节点)。

  • 内存 设备 大小:与上述相同。

  • 内存 设备 速度:与上述相同。

提议的变更

提议的更改是在ironic-python-agent的inspector模块中实现一个收集器,使用dmidecode 工具来列出处理器、内存和BIOS的详细信息,然后将收集到的数据返回给ironic-inspector。在ironic-python-agent中对这些数据进行的处理是有限的,以便允许服务器端插件处理所需的数据,多或少。

注意

dmidecode 工具根据SMBIOS/DMI标准报告系统硬件信息,如其系统BIOS所述(请参阅示例输出)。这些信息包括系统制造商、型号名称、序列号、BIOS版本和其他详细信息,例如CPU插槽和内存模块插槽的使用状态。dmidecode 输出是特定于供应商的,并且字段是可选的。部署者在使用数据时应注意这一点。

新收集器在ironic-python-agent中收集的数据格式如下

"inventory": {
}
...
"dmi": {
  "bios": {
    "Vendor": <vendor name>,
    "Characteristics": "",
    "Runtime Size": "64 kB",
    "BIOS Revision": "0.0",
    "Firmware Revision": "0.0",
    "Version": "SE5C610.86B.01.01.0016.033120161139",
    "ROM Size": "16384 kB",
    "Address": "0xF0000",
    "Handle": "Handle 0x0000, DMI type 0, 24 bytes",
    "Release Date": "03/31/2016",
  },
  "memory": {
    "Maximum Capacity": "192 GB",
    "Number Of Devices": "24",
    "Use": "System Memory",
    "Error Information Handle": "Not Provided",
    "Error Correction Type": "Single-bit ECC",
    "Location": "System Board Or Motherboard",
    "devices": [
      {
       "Configured voltage": "Unknown",
       "Rank": "2",
       "Type": "<OUT OF SPEC>",
       "Array Handle": "0x0020",
       "Handle": "Handle 0x0022, DMI type 17, 40 bytes",
       "Serial Number": "EF3D2255",
       "Total Width": "72 bits",
       "Minimum voltage": "Unknown",
       "Form Factor": "DIMM",
       "Manufacturer": <manufacturer name>,
       "Data Width": "64 bits",
       "Configured Clock Speed": "1866 MHz",
       "Asset Tag": "",
       "Bank Locator": "NODE 1",
       "Part Number": "9965600-012.A01G",
       "Set": "None",
       "Maximum voltage": "Unknown",
       "Error Information Handle": "Not Provided",
       "Locator": "DIMM_A1",
       "Type Detail": "Synchronous",
       "Speed": "2133 MHz",
       "Size": "16384 MB"
      },
      ...
    ]
  },
  "cpu": {
    "devices": [
      {
       "Upgrade": "<OUT OF SPEC>",
       "Socket Designation": "CPU1",
       "L2 Cache Handle": "0x0019",
       "Version": <cpu device version>,
       "Type": "Central Processor",
       "Core Count": "18",
       "Status": "Populated, Enabled",
       "Handle": "Handle 0x001B, DMI type 4, 48 bytes",
       "Core Enabled": "18",
       "External Clock": "100 MHz",
       "Serial Number": "",
       "Current Speed": "2300 MHz",
       "Manufacturer": <cpu device manufacturer name>,
       "L3 Cache Handle": "0x001A",
       "Asset Tag": "",
       "Flags": "",
       "Signature": "Type 0, Family 6, Model 63, Stepping 2",
       "L1 Cache Handle": "0x0018",
       "ID": "F2 06 03 00 FF FB EB BF",
       "Part Number": "",
       "Family": <cpu device family>,
       "Thread Count": "36",
       "Voltage": "1.6 V",
       "Max Speed": "4000 MHz",
       "Characteristics": ""
      },
      ...
    ]
  }
},

备选方案

数据模型影响

HTTP API 影响

客户端 (CLI) 影响

Ironic python agent 影响

上述更改将在ironic-python-agent中实现。

性能和可扩展性影响

安全影响

部署者影响

部署者将能够获取有关CPU、DIMM和BIOS的更多数据。这些信息对于配置系统以获得更好的性能非常有用。部署者将通过ipa-inspection-collectors内核参数启用可选的收集器dmi-decode

开发者影响

实现

负责人

主要负责人

Ramamani Yeleswarapu <Rama_Y>

工作项

  • ironic-python-agent中的新收集器中使用dmidecode 工具实现上述处理器、内存和BIOS字段的收集。

依赖项

测试

将添加单元测试用例。