添加 Intel® Speed Select 支持

https://storyboard.openstack.org/#!/story/2005390

需要多种类型的服务器来处理不同的工作负载。购买和管理这些服务器会增加复杂性并提高总体拥有成本 (TCO)。Intel Speed Select Technology (SST)[1] 是一系列功能,通过提供对 CPU 性能的更多控制来提高性能并优化 TCO。借助 Intel SST,一台服务器可以完成更多工作,这意味着同一台服务器可以用于运行不同的工作负载。其中一项功能是 Intel Speed Select Technology-Performance Profile (SST-PP),它允许将 CPU 配置为在 3 个不同的运行点或配置文件下运行。

借助 Intel SST-PP,可以设置所需的内核数量及其基本和睿频,这有助于将服务器调整到特定的工作负载性能。

问题描述

本规范建议在 Ironic 中支持 Intel SST-PP 功能。借助 Intel SST-PP,Ironic 用户可以

  • 以不同的配置级别运行服务器。

  • 每个配置级别支持不同数量的活动内核和频率。

  • 同一台服务器可以用于运行多个不同的工作负载,从而降低 TCO。

Intel SST-PP Speed Select 支持三种配置级别

  • 0 - Intel SST-PP 基本配置

  • 1 - Intel SST-PP 配置 1

  • 2 - Intel SST-PP 配置 2

下表显示了不同 SST-PP 配置级别下活动内核及其基本频率的列表

---------------------------------------------
|   Config    |  Cores  |  Base Freq (GHz)  |
---------------------------------------------
| Base        | 24      | 2.4               |
| Config 1    | 20      | 2.5               |
| Config 2    | 16      | 2.7               |
---------------------------------------------

提议的变更

可以通过 IPMI 设置 Intel SST-PP。每个配置级别都有自己的十六进制原始代码,服务器可以理解该代码。Ironic 通过 IPMI 将此代码发送到服务器以设置所需的 SST-PP 级别。

我们将把这些配置映射到 Ironic 理解的特性 (traits)。

  • 0 - CUSTOM_INTEL_SPEED_SELECT_CONFIG_BASE

  • 1 - CUSTOM_INTEL_SPEED_SELECT_CONFIG_1

  • 2 - CUSTOM_INTEL_SPEED_SELECT_CONFIG_2

该解决方案分两个阶段进行

调度

支持 Intel SST-PP 的解决方案首先是在支持它的节点上调度裸机实例部署请求。我们将所需的配置设置为 flavor 中的特性 (trait)。

$ openstack flavor set --property \
  trait:CUSTOM_INTEL_SPEED_SELECT_CONFIG_2=required baremetal

现在,我们还需要使用支持的配置级别更新 Ironic 节点的特性 (trait)。

$ openstack baremetal node add trait node-0 \
  CUSTOM_INTEL_SPEED_SELECT_CONFIG_BASE CUSTOM_INTEL_SPEED_SELECT_CONFIG_1 \
  CUSTOM_INTEL_SPEED_SELECT_CONFIG_2

现在,当用户发送请求以使用 baremetal flavor 启动节点时,placement API 服务将选择支持 Intel SST-PP 的 Ironic 节点。

配置

Intel SST-PP 需要在配置过程中启动节点之前通过 IPMI 进行设置。Ironic API 服务在启动请求中的 node.instance_info.traits 中接收所需的配置。然后,Ironic 将运行与该特性 (trait) 匹配的部署模板步骤。部署模板将指定新的 configure_intel_speedselect 步骤,该步骤配置 Intel SST-PP 配置级别,然后启动节点。

Ironic 需要以下详细信息才能在节点上配置 Intel SST-PP

  • Intel SST-PP 配置级别:这是节点上所需的配置级别。可能的值是上面列出的特性 (traits)。此信息由管理员在他们想要启动裸机节点的 flavor 的特性 (trait) 中设置。Nova 反过来使用特性 (trait) 更新 Ironic 的节点信息。

  • 套接字数量:这是每个 CPU 的套接字数量。设置 Intel SST-PP 需要为每个套接字完成。

可以将这两个信息作为参数提供给 configure_intel_speedselect 部署步骤。

备选方案

继续不支持 Intel SST-PP,或者用户可以手动配置它,独立于 Ironic。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

“ironic” CLI

“openstack baremetal” CLI

RPC API 影响

驱动程序 API 影响

  • 添加新的硬件类型 IntelIPMIHardware 以支持启用 Intel SST-PP 的服务器。

    class IntelIPMIHardware(IPMIHardware):
    
  • 添加新的管理接口 IntelIPMIManagement 以管理服务器上 Intel SST-PP 的配置。该类将具有一个新的部署步骤 configure_intel_speedselect 以配置节点上的 Intel SST-PP。它也将启用为清理步骤,以便在节点清理时重置配置。

    class IntelIPMIManagement(ipmitool.IPMIManagement):
        @base.deploy_step(priority=200, argsinfo={
            'intel_speedselect_config': {
                'description': (
                     "Intel SST-PP configuration."
                ),
                'required': True
            },
            'socket_count': {
                'description': (
                    "No. of sockets."
                )
            }
        })
        def configure_intel_speedselect(self, task, **kwargs):
            return None
    

    下表包含建议的部署模板的 intel_speedselect_config

    -----------------------------------------------------------------------
    |   Deploy Template                      |  intel_speedselect_config  |
    -----------------------------------------------------------------------
    | CUSTOM_INTEL_SPEED_SELECT_CONFIG_BASE  |  0x00                      |
    | CUSTOM_INTEL_SPEED_SELECT_CONFIG_1     |  0x01                      |
    | CUSTOM_INTEL_SPEED_SELECT_CONFIG_2     |  0x02                      |
    -----------------------------------------------------------------------
    

Nova 驱动程序影响

Ramdisk 影响

安全影响

其他最终用户影响

用户必须更新特性 (traits),在相应的 flavor 中使用所需的 Intel SST-PP 配置级别。

可扩展性影响

性能影响

其他部署者影响

希望使用该功能的部署者必须将 Intel SST-PP 配置添加到节点特性 (trait) 中,并创建相应的部署模板。

开发人员影响

实现

负责人

主要负责人

mkrai

工作项

  • 在 Ironic 中实现 Intel SST-PP 支持代码。

  • 编写测试代码。

  • 编写文档,解释如何使用 Intel SST-PP。

依赖项

测试

  • 单元测试

升级和向后兼容性

文档影响

将添加新的文档,以解释 Ironic 中对新 Intel SST-PP 功能的支持以及如何使用它。

参考资料

[1] https://www.intel.com/content/www/us/en/architecture-and-technology/speed-select-technology-article.html