赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 云服务器 ECS
  4. 操作指南
  5. 实例
  6. 管理实例
  7. 使用VFIO驱动替代UIO驱动

使用VFIO驱动替代UIO驱动

  • 管理实例
  • 发布于 2025-04-01
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何在普通云服务器和弹性裸金属服务器中使用VFIO驱动替代UIO驱动,解决DPDK应用运行异常的问题。

前提条件

  • 已为实例设置HugePages。具体操作,请参见调整Linux实例大页内存的方法。

  • 已为实例安装DPDK。关于DPDK的更多信息,请参见Data Plane Development Kit (DPDK*)。

背景信息

如果您在六代(g6、c6、r6等)及以后的实例规格(包含通用算力型实例)上部署DPDK应用,运行DPDK应用时可能发生异常。例如,使用pktgen-dpdk工具进行网络发包测试时可能检测不到网卡绑定的igb_uio端口,出现以下报错时,您可以使用VFIO驱动替代UIO驱动解决此类问题。

EAL: eal_parse_sysfs_value(): cannot open sysfs value /sys/bus/pci/devices/0000:00:06.0/uio/uio0/portio/port0/start

操作步骤

  1. 远程连接普通云服务器和弹性裸金属服务器。

    具体操作,请参见通过密码或密钥认证登录Linux实例。

  2. 检查GRUB配置。

    cat /proc/cmdline
    • 如果GRUB配置中包括intel_iommu=on,且没有iommu=pt,请执行步骤4。

    • 如果是其他情况,需要添加intel_iommu=on并删除iommu=pt,请执行步骤3。

      如下图所示,GRUB配置中没有intel_iommu=on,也没有iommu=pt,需要添加intel_iommu=on。

      image.png

  3. 在/etc/default/grub配置文件中添加intel_iommu=on。

    1. 打开配置文件。

      sudo vim /etc/default/grub
    2. 按i切换到编辑模式,在GRUB_CMDLINE_LINUX中添加intel_iommu=on,然后保存配置文件。

      修改完成后的示例如下图所示。grub-config

    3. 应用修改后的配置。

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg

      image.png

    4. 执行以下命令,重启实例并再次远程连接实例。

      reboot
      警告

      重启实例会造成您的实例停止工作,可能导致业务中断,建议您在非业务高峰期时执行该操作。

  4. 安装VFIO和VFIO-PCI驱动。

    sudo modprobe vfio && \
    sudo modprobe vfio-pci
  5. 配置noiommu_mode。

    sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
  6. 查看并记录网卡设备的bus-info值。

    ethtool -i ethX

    请将ethX替换为对应网卡的编号,查看eth1网卡的示例如下图所示。bus-info

  7. 切换到DPDK安装目录的usertools目录下,然后执行以下命令绑定网卡到vfio-pci驱动。

    sudo ./dpdk-devbind.py -b vfio-pci 0000:00:06.0
    说明

    0000:00:06.0为网卡的bus-info值,用于指定对应的网卡,请按实际情况替换。

    绑定后可以运行./dpdk-devbind.py --status查看绑定状态,下方示例表示0000:00:06.0对应的网卡已绑定到vfio-pci驱动。bound-status

  8. 切换到DPDK安装目录的build/app目录下,然后根据DPDK版本执行命令运行DPDK应用程序。

    • DPDK 18.02及更高版本

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 -ai
    • 低于DPDK 18.02的版本

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 --disable-hw-vlan -ai
    说明

    -w 0000:00:06.0用于指定网卡,total-num-mbufs=2048对应设置的HugePages大小,请按实际情况替换。

    运行DPDK应用程序的示例如下图所示。run-dpdk

相关文章

主机名 2025-04-01 11:59

主机名hostname指在局域网络中用于唯一识别一台计算机或设备的名称。它便于用户和网络服务定位网络内的个别主机,以确保网络中的每个主机都能被准确识别。同一子网或内部网络中的主机名必须保持唯一性,从而避免潜在的名称冲突。 主机名的作用 标识和区分实例:主机名作为一个独特的标识符,帮助用户在管理多个E

使用VFIO驱动替代UIO驱动 2025-04-01 11:59

本文介绍如何在普通云服务器和弹性裸金属服务器中使用VFIO驱动替代UIO驱动,解决DPDK应用运行异常的问题。 前提条件

修改实例属性 2025-04-01 11:59

修改实例属性是一种基础的实例资源管理方式,支持修改实例名称、主机名(HostName)和实例描述信息,以提高云资源的管理效率和可读性。本文为您介绍如何修改实例属性。 操作步骤

发送远程命令 2025-04-01 11:59

如果您想快速完成对实例资源的日常维护(例如批量在ECS实例上安装或卸载软件、重置用户密码及自动化运维脚本等),您可以通过ECS管理控制台使用发送远程命令功能进行操作。本文主要介绍如何通过ECS管理控制台对一个或多个ECS实例发送命令。 前提条件

实例元数据 2025-04-01 11:59

ECS实例元数据是指实例ID、VPC信息、网卡信息等实例属性信息,支持在ECS实例内部通过访问元数据服务(Metadata Service)获取。通过该获取方式,您无需登录控制台或调用API,在实例内部即可访问实例信息,可以更便捷、安全地配置或管理正在运行的实例或实例上的程序。 实例元数据内容列表

实例动态数据(实例标识) 2025-04-01 11:59

实例标识,包括实例标识文档和实例标识签名,可用于快速辨识并区分ECS实例,为应用程序权限控制和软件激活等提供重要的信任基础。本文主要介绍实例标识的定义、应用场景、获取方式以及使用示例。 什么是实例标识

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号