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

    技术2025-09-15  28

    按照官方文档说的 使用

    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 ...

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

     

    Processed: 0.015, SQL: 9