添加 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_BASE1 -
CUSTOM_INTEL_SPEED_SELECT_CONFIG_12 -
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 功能的支持以及如何使用它。