DOCA 文档 v2.10.0

Virtio 通过硬件 vDPA 加速

硬件 vDPA 需要 QEMU v2.12(或上游 6.1.0 版本)和 DPDK v20.11 或更高版本。

安装 QEMU

  1. 克隆源代码

    复制
    已复制!
                

    git clone https://git.qemu.org/git/qemu.git cd qemu git checkout v2.12

  2. 构建 QEMU

    复制
    已复制!
                

    mkdir bin cd bin ../configure --target-list=x86_64-softmmu --enable-kvm make -j24

安装 DPDK

  1. 克隆源代码

    复制
    已复制!
                

    git clone git://dpdk.org/dpdk cd dpdk git checkout v20.11

  2. 安装依赖项(如果需要)

    复制
    已复制!
                

    yum install cmake gcc libnl3-devel libudev-devel make pkgconfig valgrind-devel pandoc libibverbs libmlx5 libmnl-devel -y

  3. 配置 DPDK

    复制
    已复制!
                

    export RTE_SDK=$PWD make config T=x86_64-native-linuxapp-gcc cd build sed -i 's/\(CONFIG_RTE_LIBRTE_MLX5_PMD=\)n/\1y/g' .config sed -i 's/\(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD=\)n/\1y/g' .config

  4. 构建 DPDK

    复制
    已复制!
                

    make -j

  5. 构建 vDPA 应用程序

    复制
    已复制!
                

    cd $RTE_SDK/examples/vdpa/ make -j

配置巨页

复制
已复制!
            

mkdir -p /hugepages mount -t hugetlbfs hugetlbfs /hugepages echo <more> > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages echo <more> > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages

在现有虚拟机的 xml 文件中配置 vDPA VirtIO 接口(使用 libvirt

  1. 打开虚拟机的配置 XML 文件进行编辑

    复制
    已复制!
                

    virsh edit <domain name>

  2. 执行以下操作

    1. 将顶行更改为

      复制
      已复制!
                  

      <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

    2. 分配内存量并为巨页使用 1GB 页面大小(大小必须与 vDPA 应用程序使用的大小相同),以便内存配置如下所示。

      复制
      已复制!
                  

      <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <memoryBacking> <hugepages> <page size='1048576' unit='KiB'/> </hugepages> </memoryBacking>

    3. 为 VM CPU 配置分配 CPU 数量,以便 vcpucputune 配置如下所示

      复制
      已复制!
                  

      <vcpu placement='static'>5</vcpu> <cputune> <vcpupin vcpu='0' cpuset='14'/> <vcpupin vcpu='1' cpuset='16'/> <vcpupin vcpu='2' cpuset='18'/> <vcpupin vcpu='3' cpuset='20'/> <vcpupin vcpu='4' cpuset='22'/> </cputune>

    4. 将 CPU 的内存访问设置为共享,以便 cpu 配置如下所示

      复制
      已复制!
                  

      <cpu mode='custom' match='exact' check='partial'> <model fallback='allow'>Skylake-Server-IBRS</model> <numa> <cell id='0' cpus='0-4' memory='8388608' unit='KiB' memAccess='shared'/> </numa> </cpu>

    5. 将使用的模拟器设置为在步骤 2中构建的模拟器,以便模拟器配置如下所示

      复制
      已复制!
                  

      <emulator><path to qemu executable></emulator>

    6. 添加使用 QEMU 命令行参数条目的 virtio 接口,以便新的接口代码段如下所示

      复制
      已复制!
                  

      <qemu:commandline> <qemu:arg value='-chardev'/> <qemu:arg value='socket,id=charnet1,path=/tmp/sock-virtio0'/> <qemu:arg value='-netdev'/> <qemu:arg value='vhost-user,chardev=charnet1,queues=16,id=hostnet1'/> <qemu:arg value='-device'/> <qemu:arg value='virtio-net-pci,mq=on,vectors=6,netdev=hostnet1,id=net1,mac=e4:11:c6:d3:45:f2,bus=pci.0,addr=0x6, page-per-vq=on,rx_queue_size=1024,tx_queue_size=1024'/> </qemu:commandline>

      注意

      在此代码段中,可以配置 vhostuser 套接字文件路径、队列数量、MAC 和 virtio 设备的 PCIe 插槽。

注意

硬件 vDPA 仅支持 switchdev 模式。

  1. 创建 ASAP2 环境

    1. 创建 VF。

    2. 进入 switchdev 模式。

    3. 设置 OVS。

  2. 运行 vDPA 应用程序

    复制
    已复制!
                

    cd $RTE_SDK/examples/vdpa/build ./vdpa -w <VF PCI BDF>,class=vdpa --log-level=pmd,info -- -i

  3. 通过 vDPA 应用程序 CLI 创建 vDPA 端口

    复制
    已复制!
                

    create /tmp/sock-virtio0 <PCI DEVICE BDF>

    注意

    vhostuser 套接字文件路径必须是配置 VM 时使用的路径。

  4. 启动 VM

    复制
    已复制!
                

    virsh start <domain name>

有关 vDPA 应用程序的更多信息,请访问 Vdpa 示例应用程序 DPDK 文档。

© 版权所有 2025 NVIDIA。 最后更新于 2025 年 2 月 12 日。