AI-RAN: DPU (Data Processing Unit) 與他的分類 (3)
回到原本的主題, 讓我們來介紹 DPU 的分類吧,
在功能方塊圖上, 我們可以看到 DPU 就是 ConnectX 和 ARM-based CPU 的組合,
在 Nvidia 的文件中, DPU 一共有 4 種不同的運作模式, 分別是:
- DPU mode or embedded function (ECPF) ownership where the embedded Arm system controls the NIC resources and data path (default)
- Restricted mode which is an extension of the ECPF ownership with additional restrictions on the host side
- NIC mode where the DPU behaves exactly like an adapter card from the perspective of the external host
- Separated host mode (symmetric model)
在上一篇文章所介紹的模式, 被稱為 DPU mode,
考慮到所有的裝置也都被命名為 DPU, Nvidia 又稱為 embedded function (ECPF) 模式,
在此模式下, DPU 中的 ARM (CPU) 控制所有的資料流.
在 Restricted mode 則是延伸原有的 ECPF 模式, 但是更限制主機的存取,
(無法從主機上對 DPU 進行對應的設定, 所有設定在 ARM 上執行)
主要應用的場域是在安全性較高的網路設定中.
NIC mode 則是之前提及的 ConnectX 網卡模式, 最簡單容易設置,
但是, 就無法發揮 DPU 進行負載平衡的功能.
最後 Separated host mode, 這邊的資料比較少, 不過按照文件敘述,
主要是對應於資料中心的網路規劃, 主機和 DPU 分開並平行處理資料流.
這些不同模式, 可以用下列的 MST 指令來設定, 首先是看目前 DPU 狀態:
$ mst status -v
...
DEVICE_TYPE MST PCI RDMA NET NUMA
BlueField(rev:0) /dev/mst/<device>.1 37:00.1 mlx5_1 net-ens1f1 0
BlueField(rev:0) /dev/mst/<device> 37:00.0 mlx5_0 net-ens1f0 0
設定 ECPF 模式:
$ mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_MODEL=1
設定 Restricted 模式:
$ mlxprivhost -d /dev/mst/<device> r --disable_rshim \
--disable_tracer \
--disable_counter_rd \
--disable_port_owner
設定 NIC 模式:
$ mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_MODEL=1 \
INTERNAL_CPU_PAGE_SUPPLIER=1 \
INTERNAL_CPU_ESWITCH_MANAGER=1 \
INTERNAL_CPU_IB_VPORT0=1 \
INTERNAL_CPU_OFFLOAD_ENGINE=1
設定 Separated host 模式:
$ mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_MODEL=0
簡單來說, 我們可以整理下列 DPU 參數的設定:
- INTERNAL_CPU_MODEL: 1 表示嵌入式 CPU 模式, 0 表示分離主機模式
*無論 DPU 模式還是 NIC 模式,這個值都設置為 1, 表示 DPU 中的晶片模式 - INTERNAL_CPU_PAGE_SUPPLIER: 0 表示在 DPU 端, 1 表示在主機端 (NIC模式)
- INTERNAL_ESWITCH_MANAGER: 0 表示在 DPU 端, 1 表示在主機端 (NIC模式)
- INTERNAL_IB_VPORT0: 0 表示在 DPU 端, 1 表示在主機端 (NIC模式)
- INTERNAL_CPU_OFFLOAD_ENGINE: 0表示在 DPU 端, 1表示在主機端 (NIC模式)
- INTERNAL_CPU_RSHIM: 0 表示在 DPU 端,1 表示在主機端
我們可以以下圖來解釋各元件的功能:
不論是 ECPF 模式, 或是 NIC 模式, 兩者的 ARM CPU 皆是開啟,
差別在於 ConnectX 網卡的控制權, 對應 CPU page, eSwitch, IB (InfiniBand) vPort,
以及對應功能面上 offload 與 RShim 的執行角色.
留言
張貼留言