将实时计算节点添加到 TripleO

https://blueprints.launchpad.net/tripleo/+spec/tripleo-realtime

实时客户机虚拟机需要具有特定配置的计算节点,以控制延迟峰值的原因。

问题描述

可以手动配置计算节点以支持实时客户机。但是,如果需要配置大量的计算节点,这将非常复杂且耗时。

在实时计算节点上,可用的物理 CPU (pCPU) 的一部分将被隔离并专用于实时任务。剩余的 pCPU 专用于常规维护任务。这需要一个实时 Linux 内核和实时 KVM,它们允许其维护任务被隔离。实时和维护 pCPU 通常位于不同的 NUMA 节点上。

还为客户机虚拟机保留了大页,以防止页面错误,可以通过内核命令行或通过 sysfs 实现。 建议使用 sysfs,因为它允许为每个单独的 NUMA 节点设置保留。

实时 Linux 客户机虚拟机以类似的方式进行分区,具有一个或多个实时虚拟 CPU (vCPU) 和一个或多个常规 vCPU 来处理非实时维护任务。

实时 vCPU 被固定到实时 pCPU,而维护 vCPU 被固定到维护 pCPU。

预计操作员将在同一个超云上需要实时和非实时计算节点。

用例

主要用例是由电信社区部署的 NFV 设备,这些设备需要严格的延迟保证。其他延迟敏感型应用程序也应该受益。

提议的变更

本规范建议更改以使用 TripleO 自动化部署具有实时能力的计算节点。

  • 实时计算节点的自定义超云镜像,其中应包括

    • 实时 Linux 内核

    • 实时 KVM

    • 实时 tuned 配置文件

  • 一个新的实时计算角色,它是现有计算角色的变体

    • 应在实时计算节点上启用大页。

    • 应为实时客户机保留大页。

    • 应使用 CPU 固定通过配置 tuned 将内核维护任务从实时任务中隔离。

    • 应使用 CPU 固定通过配置 nova 将虚拟化维护任务从实时任务中隔离。

替代方案

安全影响

其他最终用户影响

性能影响

实时客户机虚拟机中的最坏情况延迟应显著降低。但是,实时配置可能会降低计算节点的整体吞吐量。

其他部署者影响

操作员仍将负责

  • 计算节点上适当的 BIOS 设置。

  • 在环境文件中为实时角色设置适当的参数

  • 部署后配置

    • 创建/修改超云风味以启用 CPU 固定、大页、专用 CPU、实时策略

    • 为实时和非实时计算节点创建主机聚合

开发人员影响

实现

实时 overcloud-full 镜像创建

  • 创建一个 disk-image-builder 元素来包含实时软件包

  • 在 python-tripleoclient CLI 中添加对多个超云镜像的支持

    openstack overcloud image build
    openstack overcloud image upload
    

实时计算角色

  • 创建一个 ComputeRealtime 角色

    • 可以独立配置和扩展的 Compute 角色的变体

    • 允许为实时节点使用不同的镜像和风味

    • 包含适用于实时节点的任何其他参数/资源

  • 创建一个 NovaRealtime 服务

    • 包含一个嵌套的 NovaCompute 服务

    • 允许仅为实时角色覆盖参数

Nova 配置

  • Nova vcpu_pin_set 支持已经实现。 请参阅 References 中的 NovaVcpuPinSet。

内核/系统配置

  • hugepages 支持

    • 设置默认大页大小(内核命令行)

    • 启动时要保留的每个大小的大页数(内核命令行)

    • 启动后在每个 NUMA 节点上要保留的每个大小的大页数(sysfs)

  • 内核 CPU 固定

    • isolcpu 选项(内核命令行)

理想情况下,这可以在 TripleO 之外的 Tuned 配置文件中实现,在那里可以设置内核命令行并管理 sysfs。 然后,TripleO 将管理 Tuned 配置文件。 或者,可以直接管理 grub 和 systemd 配置文件。

注意

此要求与 OVS-DPDK 相同。 应协调开发,以确保为两种用例实现单一实现。 使用 UserData 脚本管理 grub 配置是 OVS-DPDK 当前使用的方法。 请参阅 References 中的 OVS-DPDK 文档。

负责人

主要负责人

owalsh

其他贡献者

ansiwen

工作项

如所提议的更改中所述。

依赖项

测试

在 CI 中不太可能测试到真正的实时客户机

  • 需要特定的 BIOS 设置。

  • 需要带有实时内核和 KVM 模块的镜像

但是,应该可以在 CI 中测试部署这些客户机的流程。

文档影响

操作员执行的手动步骤应记录在案

  • 用于低延迟的 BIOS 设置

  • 实时超云镜像创建

    注意

    CentOS 仓库不包含 RT 包。 CERN CentOS RT 仓库是一个替代方案。

  • 风味和配置文件创建

  • TripleO 环境文件中所需的参数

  • 部署后配置

参考资料

Nova 蓝图 “Libvirt 实时实例”

要求与 将 OVS-DPDK 添加到 Tripleo 类似

CERN CentOS 7 RT 仓库 http://linuxsoft.cern.ch/cern/centos/7/rt/

添加 NoveVcpuPinSet 参数:https://review.openstack.org/#/c/343770/

OVS-DPDK 文档(正在进行中):https://review.openstack.org/#/c/395431/