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

然後在查看大頁內存,已經被釋放了。

 

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