DPDK无法分出连续大页面(contiguous hugepages)的几个解决方法

当使用DPDK或SPDK时,遇到初始化失败的问题,原因是无法找到连续的Hugepages。本文提供了五种解决方法,包括清空系统hugepages、重新mount、修改RTE_MAX_MEMSEG宏等,并探讨了透明大页面功能对DPDK分配连续大页面的影响及关闭该功能的解决方案。
摘要由CSDN通过智能技术生成

在使用DPDK或者SPDK的时候,需要在进程刚启动的时候使用rte_eal_init初始化Environment Abstract Layer,应用进程会通过这个函数告诉EAL为它映射多大的hugepages,这通常通过ealargs的-m参数来指定,就像下面这样:

char *ealargs[] = {
    argv[0],            // name
    NULL,               // core_mask(to be decided)
    "-n 4",             // number of memory channels per processor socket
    "--proc-type=auto", // The type of process instance.
    "-m 512",
};
 // ....
int rc = rte_eal_init(sizeof(ealargs) / sizeof(ealargs[0]), ealargs);
if (rc < 0)
{
    // error handles
}

需要注意的是,此处-m指定的hugepages的大小需要小于系统可用的hugepages大小(系统可用的Hugepages大小可以通过 `cat /proc/meminfo | grep Hugepage`查看。

但是!在系统运行一段时间后,就算是-m指定的hugepages的大小小于系统可用的Hugepages大小,EAL初始化的时候依然会panic掉,输出类似于下面的日志:

EAL: Detected 64 lcore(s)
EAL: Auto-detected process type: PRIMARY
EAL: No free hugepages reported in hugepages-1048
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值