dpdk进程启动提示无法分配足够的连续大页内存问题处理

背景

在启动dpdk多进程实例的时候,发现两个进程相互切换启动时,有一个进程必报无法申请足够的连续的大页数,导致dpdk主进程启动失败。

需求:

解决dpdk无法申请足够的连续大页数,让两个进程切换时都可以正常启动。

错误如下:

 

 1     EAL: Detected 32 lcore(s)
 2     EAL: No free hugepages reported in hugepages-1048576kB
 3     EAL: Multi-process socket /var/run/.rte_unix
 4     EAL: Probing VFIO support...
 5     EAL: Can only reserve 3105 pages from 4096 requested
 6     Current CONFIG_RTE_MAX_MEMSEG=256 is not enough
 7     Please either increase it or request less amount of memory.
 8     EAL: FATAL: Cannot init memory
 9 
10     EAL: Cannot init memory

 

解决方案:

1:首先整理一套干净的环境。即重启服务器即可,因为一般情况下配置的大页数据都是临时的,不具备永久性。如果需要配置永久性的大页,需要在启动项的grub里配置,具体博友们可以自行查阅资料。

2:查看大页的使用情况:

1 [root@localhost bin]# cat /proc/meminfo  | grep Huge
2 AnonHugePages:    452608 kB
3 HugePages_Total:       0
4 HugePages_Free:        0
5 HugePages_Rsvd:        0
6 HugePages_Surp:        0
7 Hugepagesize:       2048 kB

3:启动一个进程后,发现其申请了1024个大页,与另一个进程申请的大页数量不一致。

进程2:

[root@localhost bin]# cat /proc/meminfo | grep Huge
AnonHugePages:   1087488 kB
HugePages_Total:    4096
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

进程1:

[root@localhost bin]# cat /proc/meminfo | grep Huge
AnonHugePages:   1087488 kB
HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

所以为了避免HugePages_Surp字段有数据,分配的大页数量要求一样,操作首先将进程1的大页申请数量改成4096 这时候大页数据一致了,该字段就不会存在数据了。

接下来:就是在启动进程之前,手动或者自动对dpdk的大页等一些配置进行设置。这样进程在启动的时候只需要绑定网卡,挂载大页等就可以了。

博友么可能很疑惑:为什么会不一样,这是因为两个进程使用的dpdk版本不一样,如果两个进程使用的是同一个版本的话可能就不会存在这样的问题了。上述的操作就相当于大页相关的只分配一次,只要不重启,进程直接使用就可以了。

官网建议:

 

dpdk-getting-started-guide.pdf这个文档的2.3.2节中提到

 

The allocation of hugepages should be done at boot time or as soon as possible after system boot to prevent memory from being fragmented in physical memory.To reserve hugepages at boot time, a parameter is passed to the Linux* kernel on the kernel command line.

 

就是申请大页内存应该在系统启动时,或系统启动后尽快申请,避免内存被割裂。

 

posted @ 2020-12-25 15:30  first_semon  阅读(2082)  评论(0编辑  收藏  举报