Cyborg Intel PMEM 驱动程序提案

https://blueprints.launchpad.net/openstack-cyborg/+spec/add-pmem-driver

本文档提出了 Cyborg Intel PMEM 驱动程序的初始设计。

问题描述

本文档将为 Cyborg 添加 Intel PMEM 驱动程序,以管理特定的 Intel PMEM 设备。

PMEM 设备可以用作一个大容量、低延迟、高带宽的内存池,可以在其中存储用于计算的数据。这可以提高实例的性能。

PMEM 必须被划分为 PMEM 命名空间 1 才能供应用程序使用。此 vPMEM 功能仅使用 devdax 模式下的 PMEM 命名空间作为 QEMU vPMEM 后端 2。如果您想深入了解相关概念,建议阅读 NVDIMM Linux 内核文档 3

从 20.0.0 (Train) 版本开始,Nova 中的虚拟持久内存 (vPMEM) 功能允许使用 libvirt 计算驱动程序的部署为实例提供 vPMEM,使用物理持久内存 (PMEM) 可以提供虚拟设备 4

用例

  • 作为操作员,我希望使用 Cyborg 代理管理 PMEM 资源并定期检查。Cyborg Intel PMEM 驱动程序应提供 discover() 函数来枚举 Intel PMEM 设备的列表,并报告主机上所有可用 Intel PMEM 加速器的详细信息,例如 PID(产品 ID)、VID(供应商 ID)、设备 ID。

  • 作为用户,我希望启动一个附加了 Intel PMEM 设备的虚拟机,以加速计算能力。Cyborg 应该能够管理这种加速资源并将其分配给虚拟机(绑定)。

提议的变更

1. 一般来说,目标是开发一个支持 Intel PMEM 加速器框架的发现接口的 Intel PMEM 设备驱动程序。该驱动程序应包括 discover() 函数。此函数通过执行“ndctl list”命令来工作,该命令报告设备的原始信息,如下所示

[
  {
  "vendor": "8086",
  "product": "ns200_0",
  "device": "dax0.0"
  }
]

2. 生成 Cyborg 特定的驱动程序对象和资源提供程序建模,用于 PMEM 设备。以下对象描述了一个 PMEM 设备,符合 Cyborg 数据库模式和 Placement 数据模型。

Hardware     Driver objects       Placement data model
   |               |                      |
1 PMEM         1 device                    |
   |               |                      |
   |         1 deployable       ---> resource_provider
   |               |            ---> parent resource_provider: compute node
   |               |                      |
n Namespace  n attach_handle    ---> inventories(total:n)
  1. 需要在 Cyborg 代理配置文件中添加“enable_driver=intel_pmem_driver”。

  2. 需要在 Cyborg 代理配置文件中添加“pmem_namespaces=$LABEL:$NSNAME|$NSNAME,$LABEL:$NSNAME|$NSNAME”,例如:“pmem_namespaces = 6GB:ns0|ns1|ns2,LARGE:ns3”。

  3. 资源类遵循标准资源类,如下所示

    “CUSTOM_PMEM_NAMESPACE_$LABEL”

  4. Traits 遵循 placement 自定义 trait 格式。在 Cyborg 驱动程序中,它将使用以下格式报告两个 traits:trait1:“CUSTOM_PMEM_NAMESPACE_$LABEL1” trait2:“CUSTOM_PMEM_NAMESPACE_$LABEL2”。

  5. 在 cyborg 发现命名空间之前,它们应该被创建。如何创建命名空间可以参考 56

备选方案

数据模型影响

需要在 devices 和 attach_handle 表中添加新的类型,例如 PMEM。

REST API 影响

无。

安全影响

通知影响

其他最终用户影响

用户可以通过 Cyborg Intel PMEM 驱动程序管理 Intel PMEM 设备。例如,Intel PMEM 设备的列表,报告主机上所有可用 Intel PMEM 加速器的详细信息,与 Intel PMEM 绑定等等。

性能影响

其他部署者影响

无。

开发者影响

实现

负责人

主要负责人

qiujunting(qiujunting@inspur.com)

工作项

  • 在 Cyborg 中实现 Intel PMEM 驱动程序

  • 添加相关的测试用例。

依赖项

测试

  • 将添加单元测试来测试此驱动程序。

文档影响

记录 Cyborg 项目中的 Intel PMEM 驱动程序。在 cyborg wiki 中添加测试报告。

参考资料

1

https://pmem.io/ndctl/ndctl-create-namespace.html

2

https://github.com/qemu/qemu/blob/19b599f7664b2ebfd0f405fb79c14dd241557452/docs/nvdimm.txt#L145

3

https://linuxkernel.org.cn/doc/Documentation/nvdimm/nvdimm.txt

4

https://docs.openstack.org/nova/latest/admin/virtual-persistent-memory.html

5

https://docs.openstack.org/nova/latest/admin/virtual-persistent-memory.html#configure-pmem-namespaces-compute

6

https://pmem.io/ndctl/ndctl-create-namespace.html

历史记录

修订历史

发布

描述

瑜伽

引入