文章目录
0 快速回忆
2种方式
# mlnx-sf方式
## 创建
mlnx-sf --action create --device 0000:03:00.0 --sfnum 9 --hwaddr 02:25:f2:8d:a2:4c
## 查看
mlnx-sf --action show #或者mlnx-sf -a show
## 删除
mlnx-sf --action delete --sfindex pci/0000:03:00.0/163873
# mlxdev方式
## 创建
/opt/mellanox/iproute2/sbin/mlxdevm port add pci/0000:03:00.0 flavour pcisf pfnum 0 sfnum 8
## 设置
/opt/mellanox/iproute2/sbin/mlxdevm port function set pci/0000:03:00.0/163873 hw_addr 00:00:00:00:08:0
## 激活
/opt/mellanox/iproute2/sbin/mlxdevm port function set pci/0000:03:00.0/163873 state active
## 查看
/opt/mellanox/iproute2/sbin/mlxdevm port show pci/0000:03:00.0/163873
## 删除
删除前先inactive再删除
/opt/mellanox/iproute2/sbin/mlxdevm port function set pci/0000:03:00.0/163873 state inactive
/opt/mellanox/iproute2/sbin/mlxdevm port del pci/0000:03:00.0/163873
概览:
1 背景
Scalable functions (SFs), or sub-functions。 是和VF非常相似的虚拟设备。VF是 SR-IOV解决方案的一部分。
I/O 虚拟化通过让虚拟机直接访问硬件 I/O 设备来提高服务器的性能。SR-IOV 规范允许一个 PCIe设备将自身作为多个不同的“虚拟”设备呈现给主机。这是通过在传统 PCIe 功能(即物理功能或 PF)中添加新的 PCIe 功能结构来实现的。本文将介绍Mellanox DPU上的sf如何管理。
2 SF介绍
SF 是一种轻量级函数,它有一个部署它的父 PCIe 函数。因此,SF 可以访问其父 PCIe 函数的功能和资源,并拥有自己的函数能力和自己的资源。这意味着 SF 也将拥有自己的专用队列(即 txq、rxq)。
SF 与 PCIe SR-IOV 虚拟功能(在主机上)共存,但也不需要启用 PCIe SR-IOV。
SF 支持与现有 PF 和 VF 表示器一样的 E-Switch 表示卸载。SF 与其他 SF 和/或与其父 PCIe 函数共享 PCIe 级资源。
3 概要
三部曲:创造 -> 配置 -> 部署
配置SF有两个工具mlnx-sf 脚本和比较旧的mlxdevm 工具
4 实战
4.1 mlnx-sf
4.1.1 添加
4.1.2 查看
4.1.3 删除
4.1.4 删除后查看
4.2 mlxdev方式
4.2.1 创建
4.2.2 激活
4.2.3 查看用mlnx-sf --action show
注意mlxdev方式还需要指定驱动,本文不做详细介绍。
4.2.4 删除
5 综述
本文介绍sf如何创建删除,以及2个工具,重点使用mlxnf-sf。以及sf创建和删除的几个增删查CRUD(无U)的方法。mlnx-sf更加简单方便。并且都是–action [create|show|delete]比较标准的方式。
- –sfindex 是指包含pci和domain-bdf号和index,这样才能全局唯一。所以在后续show del等场景是要告诉程序查询用它。
- –sfnum 不是sfindex,sfnum用在创建eth口这些human可读性强的地方。 和pfnum类似。所以用在人类指定的
6 参考
https://docs.nvidia.com/doca/archive/doca-v1.1/scalable-functions/index.html