DPDK如何释放大页内存(巨页内存hugepage)

按照官方文档说的 使用

int rte_eal_init(int argc, char **argv);

使用上面初始化的EAL应该使用下面的cleanup函数释放其初始化的资源

int rte_eal_cleanup();

但是,并不能,可能你加上上面的cleanup函数,程序编译都编译不过,为什么,这一点要问具体的编译方法了,我现在还没有搞明白,但是,通过阅读DPDK源代码的 arguments getopt_long中的入参,我可以发现一个选项

--huge-unlink

实测,可以释放上一次初始化过程中申请的大页内存。检点点,给出一个伪代码

#include <rte_eal.h>
...

int main(int argc, char *argv[]) {
    /* 通过运行程序参数填写为 --huge-unlink */
    int ret = rte_eal_init(argc, argv);
    if ( ret ... ) {
        ...
    }
    return 0;
}

代码喽就是这么简单,至于他的Makefile文件呢,参见 examples中的helloworld就行了。

然后编译出可执行文件后执行

# make
# ./build/releasehuge --huge-unlink
...

然后在查看大页内存,已经被释放了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章