dpdk 运行testpmd 出现: Couldn‘t get fd on hugepage file (已解决)

背景:

因工作需要, 经常用到dpdk, 所以在自己电脑上运行dpdk。

搭建环境时, 遇到了如题的问题。

问题步骤:

1. VMware 创建ubuntu 16 虚拟机。 4G内存,4个cpu。3个网卡。

2.将dpdk 源码:19.08.2 上传到虚拟机。

设置环境 变量:

export RTE_SDK=/home/zyb/share/dpdk/dpdk-stable-19.08.2

export RTE_TARGET=x86_64-native-linux-gcc      ①

3.执行dpdk-setup.sh , 选择:[39]x86_64-native-linux-gcc

这一步是build dpdk 源码。 build好后, 在dpdk/dpdk-stable-19.08.2 目录下会出现新目录:x86_64-native-linux-gcc

4. 编译成功后, 依次执行dpdk-setup.sh 中的43, 44, 49, 分别是:

插入IGB_UIO,

插入VFIO

绑定需要被DPDK 管的ETH口的PCI 号。 注意我用的eth0, 在绑定前先把eth0 down掉: ifconfig eth0 down.

5. 修改/etc/default/grub中关于大页的配置如下:

GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg noprompt net.ifnames=0 biosdevname=0 default_hugepagesz=1G hugepagesz=2M hugepages=1024 isolcpus=0-2"   
 

6. 执行dpdk-setup.sh 中的

[53] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)

这个时候报了以下错误:

 解决这个问题, 查看了/proc/meminfo中关于大页的配置如下:

geTables:         5436 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2488460 kB
Committed_AS:     148236 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       1
HugePages_Free:        1
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:    1048576 kB

DirectMap4k:       75584 kB
DirectMap2M:     3069952 kB
DirectMap1G:     3145728 kB

这显然和grub 配置中期望的不一样。 解决方法, 把处grub的配置的, 默认hugepage size改成2M。如下:

GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg noprompt net.ifnames=0 biosdevname=0 default_hugepagesz=2M hugepagesz=2M hugepages=1024 isolcpus=0-2"
然后sudo update-grub.

sudo reboot。 重启后查看:

/share/dpdk/dpdk-stable-19.08.2$  cat /proc/meminfo
MemTotal:        4028708 kB
MemFree:         1445036 kB
MemAvailable:    1404664 kB
Buffers:           18500 kB
Cached:           148224 kB
SwapCached:            0 kB
Active:           113728 kB
Inactive:          73796 kB
Active(anon):      37508 kB
Inactive(anon):    13712 kB
Active(file):      76220 kB
Inactive(file):    60084 kB
Unevictable:       56396 kB
Mlocked:           56396 kB
SwapTotal:        998396 kB
SwapFree:         998396 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         77196 kB
Mapped:            51312 kB
Shmem:             17276 kB
Slab:              52592 kB
SReclaimable:      22244 kB
SUnreclaim:        30348 kB
KernelStack:        5072 kB
PageTables:       136248 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1964172 kB
Committed_AS:     191504 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:     28672 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:    1024
HugePages_Free:      766
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

DirectMap4k:       79680 kB
DirectMap2M:     4114432 kB
DirectMap1G:     2097152 kB

这下能看到dpdk 分配 了1024 个大页, 每个为2M。

---------------------------------------------------------------------------

现在再执行testpmd 程序报如下的错误:

 testpmd能运行了, 不过显示eth0的信息有错, 研究了下, 因为刚重启了电脑, 需要重新绑定下eth0 到dpdk。 重启绑定后就可以了, 如下所示:

 另外在调试的过程, 还发现了testpmd 说找不到的情况 , 那是因为:

export RTE_TARGET=xx这里设置错误了, 设置成:

export RTE_TARGET=x86_64-native-linux-gcc  就可以了,

我错误的写成了如下:

export RTE_TARGET=x86_64-native-linuxapp-gcc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值