首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Linux内核

    vDPA:支持 Linux 和 QEMU 中的块设备及内核VDPA块仿真设备vdpa-sim-blk源码分析

    支持不同的总线,例如 vhost-vdpa和virtio-vdpa。 `$ vdpa dev add mgmtdev vdpasim_blk name vdpa0# `vdpa0` is attached to the first vDPA bus driver loaded $ driverctl -b vdpa list-devicesvdpa0 virtio_vdpa# change the `vdpa0` bus to `vhost-vdpa` 迁移总线vdpa0 - > vhost-vdpa$ driverctl -b vdpa set-override vdpa0 vhost_vdpa# `vdpa0` is now attached to the `vhost-vdpa 此补丁引入了软件 vDPA 总线,它抽象了 vDPA 设备、vDPA 总线驱动程序的通用属性以及 vDPA 设备抽象和 vDPA 总线驱动程序之间的通信方法 (vdpa_config_ops)。

    1.3K20编辑于 2024-07-15
  • 来自专栏虚拟化笔记

    虚拟化硬件加速-vdpa

    ,配合dpdk中的vpda运行,dpdk再调用厂商开发的用户态vdpa驱动,另一种是vhost-vdpa,通过ioctl调用到内核通用vdpa模拟,通用vdpa模块再调用厂商硬件专有的vdpa驱动。 用dpdk中的vdpa示例程序配置,说明需要把vdpa示例程序集成到ovs-dpdk中,实现vdpa/openflow/vxlan offload,如果用ovs-kernel那么用内核vdpa通用框架即可 VDUSE vdpa可以由硬件实现,intel有自己的硬件驱动,mellanox有自己的硬件驱动,硬件驱动生成一个vdpa_device,挂载到vdpa_bus上。 我理解好处就是硬件支持vdpa用硬件的,硬件不支持用软件实现的vdpa,屏蔽底层差异,软件实现在用户态更简单,很多硬件实现了网络io vdpa加速,但目前没有看到硬件实现存储io vdpa加速,字节跳动提出的 vdpa

    6.2K21发布于 2021-07-28
  • 来自专栏虚拟化笔记

    虚拟化硬件加速-vdpa

    以前提到过vdpa,只有mellanox connectx-5网卡,不支持vdpa,公司最近来了mellanox DPU,也就是bluefield-2,自带connectx-6网卡,硬件支持vdpa,再分析一下看怎么个搞法 ,配合dpdk中的vpda运行,dpdk再调用厂商开发的用户态vdpa驱动,另一种是vhost-vdpa,通过ioctl调用到内核通用vdpa模拟,通用vdpa模块再调用厂商硬件专有的vdpa驱动。 用dpdk中的vdpa示例程序配置,说明需要把vdpa示例程序集成到ovs-dpdk中,实现vdpa/openflow/vxlan offload,如果用ovs-kernel那么用内核vdpa通用框架即可 我理解好处就是硬件支持vdpa用硬件的,硬件不支持用软件实现的vdpa,屏蔽底层差异,软件实现在用户态更简单,很多硬件实现了网络io vdpa加速,但目前没有看到硬件实现存储io vdpa加速,字节跳动提出的 vdpa

    2.6K40编辑于 2022-04-28
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现

    在Redhat提出硬件vDPA架构之前,Mellanox实现了软件vDPA(即VF Relay)。 Qemu支持两种方式的vDPA,一种是vhost-user,配合DPDK中的vDPA运行,DPDK再调用厂商用户态vDPA驱动;另一种方式是vhost-vdpa,通过ioctl调用到内核通用vDPA模块 ,通用vDPA模块再调用厂商硬件专有的vDPA驱动。          2) 硬件vDPA: 硬件vDPA实际上是借助virtio硬件加速,以实现更高性能的通信。由于控制面复杂,所以用硬件难以实现。 厂商自己开发驱动,对接到用户空间DPDK的vDPA和内核vDPA架构上,可以实现硬件vDPA

    3K41编辑于 2022-06-30
  • 来自专栏Linux内核

    用户态vdpa设备vduse简介及结合QEMU源码分析

    不熟悉 vDPA 内核框架,请参阅我们的vDPA 内核框架和用于内核子系统交互的 vDPA 总线驱动程序简介博客,以熟悉vDPA 总线、vDPA 总线驱动程序和vDPA 设备等概念,因为我们假设读者很熟悉以及本博客中的这些主题 内核中的VDUSE模块负责桥接VDUSE守护进程和vDPA框架,以便用户空间vDPA设备可以在vDPA框架下工作,它包含三个功能模块:VDUSE 使用char 设备接口将 vDPA 配置操作和内存映射信息中继到用户空间 vDPA 设备将VDUSE 模块连接到 vDPA 框架,通过将其附加(通过实现通用 vDPA 总线操作)到 vDPA 总线,VDUSE 模块可以接收来自 vDPA 框架的控制消息,然后 VDUSE 模块可以对其进行处理 目前,vDPA 内核框架支持两种类型的 vDPA 总线驱动程序:virtio-vdpa(用于容器)和vhost-vdpa(用于虚拟机, 如QEMU中的GUEST)如果您想通过 VDUSE 为容器工作负载提供接口 ,则 vDPA 设备应与 virtio-vdpa 绑定(如下所示)。

    1.1K10编辑于 2024-07-16
  • 来自专栏Linux内核

    Intel FPGA 100G VF(IFCVF) DPDK用户态VDPA设备probe探测流程

    在驱动程序Probe探测期间,将创建一个新容器,使用此容器 vDPA 驱动程序可以使用 VM 的内存区域信息对 DMA 重映射表进行编程。 SW 协助 vDPA 实时迁移。 先决条件 具有 IOMMU 功能的平台。 , ifcvf_vdpa.c -> net/ifcvf:添加 ifcvf vDPA 驱动程序,IFCVF vDPA(vhost 数据路径加速)驱动程序为 Intel FPGA 100G VF(IFCVF 由于 vDPA 驱动程序需要设置 MSI-X 向量来中断客户机,因此目前仅支持 vfio-pci RTE_PMD_REGISTER_PCI(net_ifcvf, rte_ifcvf_vdpa) static ) rte_kvargs_process(kvlist, IFCVF_VDPA_MODE, &open_int, &vdpa_mode) list = rte_zmalloc("ifcvf

    73420编辑于 2024-08-04
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案

    其主要差别在于:其一,支持vdpa的设备驱动通过rte_vdpa_register_device函数注册了rte_device和支持的功能接口到vdpa_device_list链表中,如此应用程序可以通过 vdpa” 目录下,该部分代码实现的功能主要通过上述的rte_vdpa_register_device来对vhost 设备呈现并产生关联。 这里以ifc驱动的为例,将其主要机制概述如下: 匹配设备并调用vdpa设备驱动进行初始化;         “DPDK/drivers/vdpa/ifc” 目录下为Intel的SmartNIC的对应vdpa 在ifcvf_pci_probe函数中,即会调用rte_vdpa_register_device来注册vdpa设备和函数接口;    2. vhost机制获取注册的vdpa设备并在frond-end建链时关联 DPDK代码中现可跑起来的vdpa的example在 “DPDK/examples/vdpa” 目录下。可以通过编译DPDK时由 “-Dexamples=vdpa” 来指定编译,并参考37.

    2.9K20编辑于 2022-06-27
  • 来自专栏LINUX阅码场

    Linux阅码场 - Linux内核月报(2020年12月)

    还有一些补丁集我们之前没有介绍过,其中有一个关于vDPAvDPA: API for reporting IOVA range: 这个补丁集导出了一个API,可以向用户态程序报告IOVA范围。 这个补丁比较简单,但我们正好借此机会简单介绍下vDPA (Virtual data path acceleration): vDPA本质上是一种标准化的方法用来设计SRIOV的网卡。 我们在上面的vDPA中提到了控制面,但那个并不是VIRTIO控制面。 而且VIRTIO full offload也会带来产品的同质化,不利于厂商做差异化功能,这样才有了vDPA。 ? vDPA的控制面可以简单看作是一个转换层。 但是vDPA的控制面可以将虚拟机的VIRTIO控制命令,通过vDPA定义的通用控制面接口转换为各个厂商自定义的接口。这只需要在主机端添加vDPA设备厂商提供的vDPA addon驱动即可。

    2K60发布于 2021-01-27
  • 来自专栏虚拟化云计算

    Virtio网络的演化之路

    vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。 总体来看,vDPA的数据平面与SR-IOV设备直通的数据平面非常接近,并且在性能数据上也能达到后者的水准。 更重要的是vDPA框架保有virtio这套标准的接口,使云服务提供商在不改变virtio接口的前提下,得到更高的性能。 需要注意的是,vDPA框架中利用到的硬件必须至少支持virtio ring的标准,否则可想而知,硬件是无法与前端进行正确通信的。另外,原先软件交换机提供的交换功能,也转而在硬件中实现。 ? 图 4 vDPA架构 5.总结 纵观virtio网络的发展,控制平面由最原始的virtio到vhost-net协议,再到vhost-user协议,逐步得到了完善与扩充。

    8.8K24发布于 2019-11-18
  • 来自专栏虚拟化笔记

    virtio+ovs转发原理和性能分析

    vdpa ? vfio控制iommu的代码,vdpa需要自己开发,内核中没有upstream,控制面利用vhost协议,vhost再调用vhost-vdpa,vhost-vdpa调用硬件厂商提供的接口把控制信息下放到硬件中 这种方法硬件网卡直接把包DMA到guest中了,问题是kick和call还是很麻烦,kick到了kvm,kvm通知vhost-vdpa,vhost-vdpa调用硬件驱动通知硬件。 硬件call时中断给了硬件驱动,硬件驱动通知vhsot-vdpa,vhost-vdpa通知kvm,kvm把中断注入guest,如果guest用dpdk poll mode driver,kick和call vdpa就是zero-copy。

    4.1K21发布于 2021-02-24
  • 来自专栏网络虚拟化

    DPDK 21.11.1版本的交叉编译

    默认是应用层驱动都编译,如果目标机网卡不支持需要将默认编译的驱动去掉比如: meson build -Ddisable_drivers=net/mlx5,crypto/mlx5,compress/mlx5,vdpa true -Dcpu_instruction_set=broadwellmeson build -Ddisable_drivers=net/mlx5,crypto/mlx5,compress/mlx5,vdpa

    1.1K30编辑于 2023-10-09
  • 来自专栏深度学习与python

    我们这群90后,正在字节跳动“死磕”Linux内核 | 卓越技术团队访谈录

    为了将 virtio 和 VFIO 的优势结合,2020 年,vDPA(Virtio Data Path Acceleration)技术框架被合入 Linux 内核主线。 通过 VDUSE,开发者可以在一个用户进程中实现一个软件定义的 vDPA 设备,并可以通过 vDPA 框架接入 virtio 或者 vhost 子系统,供容器或者虚机使用。 在初始化之后,VDUSE 设备可以通过 VDPA_CMD_DEV_NEW 这条 netlink 消息绑定到 vDPA 总线。

    80620编辑于 2022-11-28
  • 来自专栏SDNLAB

    详解:网络虚拟化卸载加速技术的演进

    vDPA(硬件) 是virtio的半硬件虚拟化实现。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。 在硬件vDPA架构中,通过OVS转发的流量首包依然由主机上的OVS转发平面处理,对应数据流的后续报文由硬件网卡直接转发。 在性能方面能够接近SR-IOV设备直通的数据平面。 通常情况下,以性能为中心的应用程序利用SR-IOV加速,数据密集程度较低的应用使用virtio接口或者硬件vDPA

    2.7K41发布于 2021-11-17
  • 华为DPU SP900系列以及配套编程框架简介

    属性的高级功能: • 大数据加速:支持Spark过滤算子下推 • 裸金属:裸金属业务发放、回收、冷迁移;电源状态管理、网络端口热插拔;云盘扩容/热插拔、云盘单盘限速;网络和存储卸载 • 虚机管理:内核态vDPA

    77310编辑于 2025-05-30
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.7.6节——virtio-blk存储虚拟化方案

    1.2 基于硬件加速的virtio-blk方案 基于vDPA架构的virtio-blk硬件卸载         由于virtio机制通过硬件实现加速已经是通用做法,所以利用这个优势,virtio-blk 在2021年KVM论坛会议中,Redhat提出统一软硬件卸载virtio-blk方案,正式将virtio-blk加入vDPA框架,同virtio-net公用相同的框架,来完成硬件卸载控制平面。

    2.7K30编辑于 2022-06-28
  • 来自专栏DPU

    Nvidia Mellanox MLX5驱动源码分析-DPU-BlueFiled3-算力加速

    pci_vsc_init mlx5_init_one mlx5_init_one_devl_locked -> net/mlx5:轻探测本地 SF 如果用户想要配置 SF,例如:仅使用 vdpa 这些 SF 的 enable_* devlink 参数的默认值设置为 false vdpa: https://www.redhat.com/en/blog/introduction-vdpa-kernel-framework , cx6 vdpa 虚拟io硬件卸载: https://wangzheng422.github.io/docker_env/notes/2021/2021.10.cx6dx.vdpa.offload.html CAP_QOS, MLX5_CAP_DEBUG, MLX5_CAP_DEV_MEM, MLX5_CAP_DEV_EVENT, MLX5_CAP_TLS, MLX5_CAP_VDPA_EMULATION

    3.1K21编辑于 2024-02-01
  • 来自专栏虚拟化笔记

    virtio代码分析(一)-qemu部分

    那么vhost-net/vhost-user/vhost-vdpa时有时怎么处理NetClientState的?

    3.2K30发布于 2021-02-24
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.9.4.3节——智能网卡使用场景-网络加速实现

    4.7.2节——virtio网络半虚拟化简介 第四章云网络4.7.3节——Vhost-net方案 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案 第四章云网络4.7.5节vDPA

    1.3K20编辑于 2022-09-09
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.8.5节——OpenDayLight

    4.7.2节——virtio网络半虚拟化简介 第四章云网络4.7.3节——Vhost-net方案 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案 第四章云网络4.7.5节vDPA

    1.2K10编辑于 2022-07-12
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.9.1节——网络卸载加速技术综述

    腾讯智能网卡采用FPGA+SoC架构,网络加速技术实现方面自研vDPA,支持VIRTIO-net卸载,能够实现虚拟化性能零损耗,数据面直通,软硬结合跟踪脏页的功能。 4.7.2节——virtio网络半虚拟化简介 第四章云网络4.7.3节——Vhost-net方案 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案 第四章云网络4.7.5节vDPA

    4K20编辑于 2022-07-12
领券