【发布时间】:2021-03-24 05:07:10
【问题描述】:
我有使用 DPDK 19.11 的 C 应用程序。目前,应用程序以 root 权限运行(使用 sudo 命令)。此外,我的应用程序正在运行大页面 (1GB)。
使用 DPDK 兼容驱动程序的网络设备:
0000:02:00.0 'Ethernet Controller X710 for 10GbE backplane 1581'
drv=igb_uio unused=
我想在没有 root 权限的情况下运行我的应用程序 - 摆脱“sudo”命令。 我更改了这些文件/文件夹的权限:
/sys/class/uio/uio*/device/resource*/sys/class/uio/uio*/device/config/dev/uio*/dev/hugepages/*
当我在没有“sudo”的情况下运行我的应用程序时,我遇到了 rte_eal_init 函数的问题。我收到了这个错误:
EAL: FATAL: Cannot use IOVA as 'PA' since physical addresses are not available
EAL: Cannot use IOVA as 'PA' since physical addresses are not available
我的操作系统是 Ubuntu 18.04,内核 4.15.0-128-generic 我注意到在 DPDK 文档中有一条关于在没有根权限的情况下运行 DPDK 应用程序的评论 - “从 4.0 版开始,内核不允许非特权进程读取pagemaps 文件中的物理地址信息,使得这些进程无法被非特权用户使用。在这种情况下,建议使用 VFIO 驱动程序。"
阅读 cmets 后,我尝试使用 vfio-pci。 我使用以下方式加载模块:
sudo modprobe vfio-pci enable_unsafe_noiommu_mode=1
我还更改了/dev/hugepages/* 和/dev/vfio/* 的权限
使用 vfio-pci 和 sudo 运行成功。
在没有 sudo 的情况下运行时,我遇到了同样的错误:
EAL: FATAL: Cannot use IOVA as 'PA' since physical addresses are not available
EAL: Cannot use IOVA as 'PA' since physical addresses are not available
我想知道是否有人有在内核 4.0 及以上版本的情况下在没有 root 的情况下运行 DPDK 应用程序的经验?
此外,另一种解决方案是启动具有 root 权限的简单 DPDK 应用程序,该应用程序将启动 DPDK。在没有root权限的情况下并行运行另一个应用程序 - 这个应用程序将消耗数据包并执行业务逻辑,这可能吗?
谢谢
【问题讨论】:
-
我记得我在 Linux Kernal
3.9和4.12上使用DPDK 18.11LTS 和19.11 LTS运行了 DPDK 应用程序。我无法找到您在此处遇到或列出的任何问题。So have you tried running with necessary changes?只要您使用 Huge pages,您提到的替代解决方案就不会起作用。注意:我不建议使用 syscall 隐藏或跳过sudo特权检查以作为non privelleged用户运行。 -
您是否有任何更新,尤其是错误日志?我必须假设您已经修改了大页面权限、网卡驱动程序使用、RUNTIME 环境。所以请分享您在运行时遇到的具体错误。我还没有将票标记为
insufficent details -
像往常一样,我注意到
https://stackoverflow.com/users/13121879/useme-alehosaini标记No Action Required。我谦虚地请求useme-alehosain证明为什么调试问题不需要日志和 DPDKlog-level=8?正如我在第一条评论中提到的,我可以在没有sudo的情况下使用 DPDK 18.11 和 19.11 运行。 -
你们那边有更新吗?
标签: dpdk