是否存在将一个 PCIe 物理功能 (PF) 映射到数百甚至数千个虚拟功能 (VF) 的实际用例?

问题描述 投票:0回答:1

众所周知,单个 PF 可以映射到多个 VF。

关于单个 PF 关联的 VF 数量:

  • 在 PCIe 5.0 规范中:

    实施说明

    跨多个总线号码的 VF

    作为示例,请考虑支持单个 PF 的 SR-IOV 设备。最初,仅 PF 0 可见。软件设置了 ARI 能力的层次结构。根据 SR-IOV 扩展功能,它确定:InitialVFs 为 600,First VF Offset 为 1,VF Stride 为 1。

    • 如果软件将 NumVF 设置在 [0 … 255] 范围内,则设备使用单个总线编号。

    • 如果软件将 NumVF 设置在 [256 … 511] 范围内,则设备使用两个总线编号。

    • 如果软件将 NumVF 设置在 [512 … 600] 范围内,则设备使用三个总线编号。

    PF 0 和 VF 0,1 到 VF 0,255 始终位于第一个(捕获的)总线编号上。 VF 0,256 到 VF 0,511 始终位于第二个总线编号上(捕获的总线编号加 1)。 VF 0,512 到 VF 0,600 始终位于第三个总线编号上(捕获的总线编号加 2)。

  • 来自Oracle

    每个 SR-IOV 设备都可以有一个物理功能,每个物理功能最多可以有 64,000 个与其关联的虚拟功能。

从“共享 PCIe I/O 带宽”的角度来看,可以理解有数百或数千个 VF(与单个 PF 关联),每个 VF 分配给一个 VM,假设大多数 VF在特定时间点处于空闲状态;

但是,从“芯片制造”的角度来看,对于不重要的 PCIe 功能,在单个芯片内复制数百或数千个 IP 实例的 VF 部分会使芯片面积太大而不实用。

所以我的问题是,正如主题行中所述,是否有将如此多的 VF 与单个 PF 关联的实际用例?

pci-e
1个回答
0
投票

当服务器用于运行虚拟机时,使用由 Hypervisor 模拟的半虚拟化网络接口是最简单的,但到目前为止不是最有效的解决方案。因此,当 VM guest 虚拟机需要高性能网络接口时,会使用 SR-IOV 方法,即物理网卡公开许多虚拟功能 (VF),而虚拟机管理程序将这些 VF 中的一个或多个作为完整的虚拟功能公开给每个 VM。 PCI 设备。从那时起,VM guest 虚拟机就可以直接访问为分配的 VF 划分的网卡硬件资源。通常,单个 VM 来宾需要的不仅仅是一个网络接口,就像充当路由器或防火墙的虚拟设备的情况一样。此类 VF 代表物理网卡的碎片,通常称为“vNIC”(虚拟网络接口卡)或“ENA”(在 AWS 中为弹性网络适配器)。 所需的此类 vNIC(以及 VF)数量与服务器应支持的 VM 数量成正比,在具有 2 个插槽、每个具有超线程技术的 64 个 CPU 核心的服务器上,可以达到 256 个来宾 - 每个 VM 2 个 vNIC平均而言,VF的数量将达到1000个。 如果服务器旨在支持容器(例如 Kubernetes),那么比成熟的虚拟机更轻可以允许服务器上有更多容器,这与高性能网络的要求相结合,即 SR-IOV(直接容器访问网络)卡硬件队列),意味着需要支持数千个 VF。

在实现方面,Synopsis 发表了一篇文章解决您关心的触发器计数挑战,他们建议使用 SRAM 来存储 PCIe 设备的配置空间,而不是直接触发器。

© www.soinside.com 2019 - 2024. All rights reserved.