Nvidia DPU BlueField 软件概述_AI_卸载_降本增效_DPU时代_内核表示模型

news2024/10/5 21:21:46

Nvidia_BF_DPU简介

随着摩尔定律的减弱,加速计算和人工智能是较经济实惠的方式实现数据中心能源效率所需的工具。 让我们一起跟随和了解 NVIDIA Grace CPU、NVIDIA L4 GPU 和 NVIDIA BlueField DPU 如何推动数据中心迈向更高效的未来。

NVIDIA® BlueField® DPU 软件基于 BlueField BSP(主板支持包)构建,其中包括操作系统和 DOCA 框架。BlueField BSP 包括引导加载程序以及加载和设置软件组件的其他必需组件。BSP 将官方 BlueField 操作系统(Ubuntu 参考 Linux 发行版)加载到 DPU。DOCA 是用于开发应用程序和基础设施服务的软件框架和 SDK。DOCA 包括运行时库;Arm 的 DOCA 运行时堆栈支持各种存储、网络和安全加速。因此,客户可以在 BlueField 软件环境中无缝运行任何基于 Linux 的应用程序

术语

BFB: BlueField 引导程序

BF2功能图

NVIDIA 提供的软件使用户能够充分利用 NVIDIA® BlueField® DPU 并享受其提供的丰富功能集。使用 BlueField 软件包,用户可以:

  • 在您的开发板上快速轻松地启动初始 Linux 映像
  • 将现有应用程序移植到 BlueField 并为 BlueField 开发新应用程序
  • 修补、配置、重建、更新或以其他方式自定义您的映像
  • 利用开源开发工具,充分利用多样化且充满活力的 Arm 生态系统,调试、分析和调整其开发系统

与 NVIDIA® ConnectX® 互连相结合,BlueField 系列 DPU 设备包含一系列 Arm 内核,具体如下:

  • 适用于 BlueField-2 DPU 的 64 位 Armv8 A72
  • 适用于 BlueField-3 DPU 的 64 位 Armv8 A78

标准 Linux 发行版在 Arm 内核上运行,允许使用常见的开源开发工具。开发人员应该会发现编程环境熟悉且直观,这反过来又使他们能够快速有效地设计、实现和验证其控制平面和数据平面应用程序。

BlueField SW 附带 NVIDIA ® BlueField ® 参考平台。BlueField SW 是一个基于 Ubuntu Server 发行版的参考 Linux 发行版,扩展后包含适用于 Arm 的 MLNX_OFED 堆栈和支持 NVMe-oF 的 Linux 内核。该软件发行版可以无缝运行所有基于客户的 Linux 应用程序。

以下是 BlueField DPU 附带的其他软件元素:

  • 适用于 BlueField 的 Arm 可信固件 (ATF)
  • BlueField 的 UEFI
  • 开发板上发现 OpenBMC for BMC (ASPEED 2500)
  • MLNX_OFED 堆栈
  • Mellanox MFT (迈络思固件工具集)

调试工具

BlueField DPU 包括对 Arm DS5 套件以及 CoreSight™ 调试的硬件支持。因此,各种商用现成 Arm 调试工具应与 BlueField 无缝协作。CoreSight 调试器接口可以通过 RSim 接口(如果使用 DPU,则为 USB 或 PCIe)访问,也可用于使用 OpenOCD 等开源工具进行调试。

BlueField DPU 还支持无处不在的 GDB。

基于 BlueField 的存储设备

BlueField 软件为构建 JBOF(Just a Bunch of Flash)存储系统提供了基础,包括 NVMe-oF 目标软件、PCIe 交换机支持、NVDIMM-N 支持和 NVMe 磁盘热插拔支持。

BlueField SW 允许启用 ConnectX 卸载,例如 RDMA/RoCE、T10 DIF 签名卸载、纠删码卸载、iSER、存储空间直通等。

BF架构

BlueField 架构是两个预先存在的标准现成组件: Arm AArch64 处理器和ConnectX-6 Dx(用于 BlueField-2)、ConnectX-7(用于 BlueField-3)或网络控制器的组合,每个组件都有其拥有丰富的软件生态系统。因此,BlueField 中几乎所有程序员可见的软件接口都来自各个组件的现有标准接口。

Interfaces_on_BlueField-version-1-modificationdate-1702597769530-api-v2.png

Interfaces_on_BlueField-version-1-modificationdate-1702597769530-api-v2.png

Arm 相关接口(包括与启动过程、PCIe 连接和加密操作加速相关的接口)是标准 Linux on Arm 接口。这些接口由 NVIDIA 提供的驱动程序和低级代码启用,作为 BlueField 软件的一部分,该软件已交付并上游到相应的开源项目(例如 Linux)。

ConnectX 网络控制器相关接口(包括用于以太网和 InfiniBand 连接、RDMA 和 RoCE、以及存储和网络操作加速的接口)与支持 ConnectX 独立网络控制器卡的接口相同。这些接口利用 MLNX_OFED 软件堆栈和基于 InfiniBand 动词的接口来支持软件。

系统连接

BlueField DPU 有多个连接(见下图)。用户可以通过不同的控制台、网络连接和 JTAG 连接器连接到系统。

System_Connections-version-1-modificationdate-1702597768883-api-v2.png

System_Connections-version-1-modificationdate-1702597768883-api-v2.png

系统控制台

BlueField DPU 具有多个控制台接口:

  • 串行控制台 0(Arm 内核上的/dev/ttyAMA0 )
    • 需要电缆连接至 DPU 25G 上的 NC-SI 连接器
    • 需要串行电缆连接到 DPU 100G 上的 3 针连接器
    • 连接BF1200平台BMC串口
  • 串行控制台 1(Arm 内核上的/dev/ttyAMA1 ,但仅适用于 BF1200 参考平台)
    • ttyAMA1 是 BF1200 前面板上的控制台连接
  • 虚拟 RSim 控制台(Arm 内核上的/dev/hvc0 )由以下驱动驱动
    • RSim PCIe 驱动程序(不需要电缆,但系统无法处于隔离模式,因为隔离模式会禁用所需的 PCIe 设备)
    • RSim USB 驱动程序(需要 USB 电缆)
    • 无法同时使用 PCIe 和 USB RShim 接口

rshim驱动:

systemctl status rshim

rshim设备:

网络接口

DPU 具有多个网络接口。

  • ConnectX 以太网/InfiniBand 接口
  • RSim 虚拟以太网接口(通过 USB 或 PCIe)虚拟以太网接口对于调试、安装或基本管理非常有用。主机 DPU 服务器上的接口名称取决于主机操作系统。Arm 内核上的接口名称通常为“tmfifo_net0”。虚拟网络接口只能以大约 10MB/s 的速度运行,不应考虑用于生产网络流量。
  • OOB 以太网接口基于 BlueField-2 的平台具有 OOB 1GbE 管理端口。该接口提供与 Arm 内核的 1Gb/s 全双工连接。接口名称通常为“oob_net0”。该接口支持与 Arm 内核的 TCP/IP 网络连接(例如,用于文件传输协议、SSH 和 PXE 启动)。OOB 端口不是 BlueField-2 引导流的路径(即,将 BFB 推送到此端口的任何尝试都将不起作用)。

操作模式

NVIDIA® BlueField® DPU 有多种操作模式:

  • DPU 模式,或嵌入式功能 (ECPF) 所有权,其中嵌入式 Arm 系统控制 NIC 资源和数据路径(默认
  • 零信任模式是 ECPF 所有权的延伸,对主机端有额外的限制
  • 从外部主机的角度来看,DPU 的行为与适配器卡完全相同的NIC 模式

内核表示模型

参考: NVIDIA 文档中心 NVIDIA 网络 网络软件 NVIDIA BlueField DPU BSP v4.5.0 内核表示模型

警告: 该模式仅适用于DPU工作在DPU模式下

BlueField® DPU 使用 netdev 表示器来映射每一项主机端物理和虚拟功能。

  1. 作为隧道,将Arm核上运行的虚拟交换机或应用程序的流量传递到主机侧的相关PF或VF。
  2. 作为通道来配置嵌入式开关的规则到相应的代表功能。

这些表示器用作连接到 OVS 或在 Arm 内核上运行的任何其他虚拟交换机的虚拟端口。

当在DPU 模式下运行时,我们看到 DPU 的每个网络端口都有 2 个表示器:一个用于上行链路(P0),另一个用于主机端 PF(pf0hpf, 即使在主机端未探测 PF,也会创建 PF 表示器)。对于在主机端创建的每个 VF,将在 Arm 端创建相应的表示器。代表者的命名约定如下:

  • 上行链路代表:p<port_number>
  • PF 代表:pf<port_number>hpf
  • VF 表示:pf<端口号>vf<功能号>

下图展示了主机端暴露的 PCIe 功能与表示器之间的映射。为了简单起见,显示了单个端口模型(为第二个端口重复)。

Kernel_Representors_Model-version-1-modificationdate-1702597804603-api-v2.png

Kernel_Representors_Model-version-1-modificationdate-1702597804603-api-v2.png

红色箭头演示了通过表示器的数据包流,而绿色箭头演示了将转向规则卸载到嵌入式交换机时的数据包流。有关更多详细信息,请参阅交换机卸载部分。

警告: 主机功能 (PF/VF) 的 MTU 必须小于上行链路和相应 PF/VF 表示器的 MTU。例如,如果主机 PF MTU 设置为 9000,则上行链路和 PF 表示器都必须设置为高于 9000。

典型应用场景(卸载)

物理主机与虚拟功能VF以及DPU网络设备代表间的映射结果如下

参考

DPU软件概述: https://docs.nvidia.com/networking/display/bluefielddpuosv450/bluefield+software+overview

DOCA文档: https://docs.nvidia.com/networking/dpu-doca/index.html#dpu-os

安装DPU操作系统: https://docs.nvidia.com/networking/display/bluefielddpuosv450/deploying+bluefield+software+using+bfb+from+host

BF驱动列表: https://docs.nvidia.com/networking/display/bluefielddpuosv450/installing+popular+linux+distributions+on+bluefield

主机端的配置参考(带有DPU的主机): https://docs.nvidia.com/networking/display/bluefielddpuosv450/host-side+interface+configuration

DPU操作模式: https://docs.nvidia.com/networking/display/bluefielddpuosv450/modes+of+operation

在 NVIDIA BlueField-2 DPU 上使用 OpenShift 进行 OVN/OVS 卸载: https://access.redhat.com/articles/6804281#masthead

DPU演化: https://zhuanlan.zhihu.com/p/402706136

史上最全DPU厂商大盘点(完整版)https://cloud.tencent.com/developer/article/2055768

使用 NVIDIA BlueField DPU 和 DPDK 开发应用程序: https://developer.nvidia.com/blog/developing-applications-with-nvidia-bluefield-dpu-and-dpdk/

DPU简介(历史): https://blog.csdn.net/gongtxy/article/details/128740434

晓兵(ssbandjl)

博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl

晓兵技术杂谈(系列)

https://cloud.tencent.com/developer/user/5060293/video

DAOS汇总: https://cloud.tencent.com/developer/article/2344030

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速傅立叶变换FFT学习笔记

什么是FFT&#xff1f; FFT&#xff08;Fast Fourier Transformation&#xff09; 是离散傅氏变换&#xff08;DFT&#xff09;的快速算法&#xff0c;即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少&#xff0c;特别是被变换的抽样点数N越多&#x…

MySQL索引的使用,大大提升你代码的效率

目录 &#x1f680;索引使用 &#x1f680;最左前缀法则 &#x1f680;范围查询 &#x1f680;索引失效情况 隐式类型转换是什么&#xff1f; 隐式类型转换的影响 举例说明 无隐式类型转换的情况 存在隐式类型转换的情况 总结 &#x1f680;模糊查询 &#x1f680;or…

经典面试题-死锁

目录 1.什么是死锁&#xff1f; 2.形成死锁的四个必要条件 3.死锁的三种情况 第一种情况&#xff1a; 举例&#xff1a; 举例&#xff1a; 第二种情况&#xff1a;两个线程 两把锁 举例&#xff1a; 第三种情况&#xff1a;N个线程 M把锁 哲学家进餐问题 1.什么是死锁&…

Docker基础语法

目录 一.docker安装 二.docker基础名词 三.docker基础命令 四.命令别名 五.数据卷 六.挂载本地目录或文件 七.Docker镜像 八.网络 一.docker安装 1.安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 docker yum源 yum-config-manag…

Git的安装与配置

目录 前言 Linux-centos&#xff1a;下安装 Linux_ubuntu下安装 创建Git本地仓库 配置用户名和Email 前言 Git是一种版本控制器&#xff0c;能够让我们了解一个文件的历史&#xff0c;以及它的发展过程。通俗的将就是可以记录一个工程的每一次改动和版本迭代的一个管理系统…

书法AI全自动切字+识别算法2.0版发布,草书篆书行书楷书识别准确率超过90%,覆盖书法单字30万张

我们开发的业界识别最准覆盖作品最全的书法AI小程序上线了 书法AI全自动切字识别算法2.0版发布&#xff0c;草书篆书行书楷书识别准确率超过90%&#xff0c;准确率甩百度OCR一条街&#xff0c;覆盖书法单字30万张&#xff0c;遥遥领先同行 我们还可为客户提供书法AI全自动切字a…

Tensorflow2.0笔记 - tensor的合并和分割

主要记录concat,stack,unstack和split相关操作的作用 import tensorflow as tf import numpy as nptf.__version__#concat对某个维度进行连接 #假设下面的tensor0和tensor1分别表示4个班级35名同学的8门成绩和两个班级35个同学8门成绩 tensor0 tf.ones([4,35,8]) tensor1 tf…

C#,入门教程(30)——扎好程序的笼子,错误处理 try catch

上一篇&#xff1a; C#&#xff0c;入门教程(29)——修饰词静态&#xff08;static&#xff09;的用法详解https://blog.csdn.net/beijinghorn/article/details/124683349 程序员语录&#xff1a;凡程序必有错&#xff0c;凡有错未必改&#xff01; 程序出错的原因千千万&…

基于PSO-BP神经网络的风电功率预测(MATLAB)

作品简介 &#xff1a;关注公众号“电击小子程高兴的MATLAB小屋”获取优惠 主要内容 该模型将粒子群算法与BP神经网络结合用于BP神经网络的训练&#xff0c;即优化BP网络中的连接权值和各项阈值&#xff0c;然后利用神经网络分布式并行处理优势、自适应学习能力以及较好的…

坚持刷题 | 二叉树的最大深度

文章目录 题目考察点代码实现实现总结扩展用迭代的方式实现二叉树最大深度可能的扩展问题 坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷&#xff1a;二叉树的最大深度 题目 104.二叉树的最大深度 考察点 二叉树的基本实现&#xff1a; 能够定义二叉树节点&…

Apifox接口测试教程(一)接口测试的原理与工具

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

性能优化-OpenCL 介绍

「发表于知乎专栏《移动端算法优化》」 本文首先对 GPU 进行了概述&#xff0c;然后着重地对移动端的 GPU 进行了分析&#xff0c;随后我们又详细地介绍了 OpenCL 的背景知识和 OpenCL 的四大编程模型。希望能帮助大家更好地进行移动端高性能代码的开发。 &#x1f3ac;个人简介…

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a; 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit提交修改2.2&#xff09;方式2&#…

柔性数组和C语言内存划分

柔性数组和C语言内存划分 1. 柔性数组1.1 柔性数组的特点&#xff1a;1.2 柔性数组的使用1.3 柔性数组的优势 2. 总结C/C中程序内存区域划分 1. 柔性数组 也许你从来没有听说过柔性数组&#xff08;flexible array)这个概念&#xff0c;但是它确实是存在的。 C99 中&#xff…

解决Git添加.gitignore文件后不生效的问题

1. 问题描述 如上图所示&#xff0c;在已存在.gitignore文件且已经提交过的Git管理的项目中&#xff0c;其中.class、.jar文件以及.idea目录内的内容全部都还是被Git管理了&#xff0c;可见.gitignore文件并没有生效。 2. 原因发现 .gitignore文件只能作用于 Untracked Files…

vue+elementUI el-select 中 没有加clearable出现一个或者多个×清除图标问题

1、现象&#xff1a;下方截图多清除图标了 2、在全局common.scss文件中加一个下方的全局样式noClear 3、在多清除图标的组件上层div加noClear样式 4、清除图标去除成功

iOS应用程序混淆加固原理及逆向工具介绍

概要 本文将介绍iOS应用程序混淆加固的原理和常见的加固类型&#xff0c;以及介绍一些常用的逆向工具。同时还会介绍一种代码虚拟化技术&#xff0c;用于进一步保护应用程序不被逆向分析。 引言 移动应用程序开发面临着越来越严峻的安全挑战&#xff0c;特别是在越狱设备上…

k8s1.27.2版本二进制高可用集群部署

文章目录 环境软件版本服务器系统初始化设置关于etcd签名证书etcd集群部署负载均衡器组件安装设置关于k8s自签证书自签CAkube-apiserver 自签证书kube-controller-manager自签证书kube-scheduler自签证书kube-proxy 自签证书admin 自签证书 控制平面节点组件部署**部署kube-api…

Uni-App三甲医院、医保定点三甲医院在线预约挂号系统源码

医院在线预约挂号系统是一种方便患者预约挂号的系统&#xff0c;患者可以通过该系统进行预约挂号&#xff0c;省去了到医院现场排队等待的时间&#xff0c;提高了就诊效率。随着医院信息化水平的不断发展&#xff0c;医院在线预约挂号管理系统已成为医院管理中不可或缺的一部分…

如何在Linux部署JumpServer堡垒机并实现远程访问本地服务

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…