DPDK17.02内存管理1 – eal_hugepage_info_init

DPDK通过 eal_hugepage_info_init() 函数获得系统中大页的信息,保存在 internal_config->hugepage_info[i] 中。该结构体定义如下:

该函数流程如下:

1、打开 /sys/kernel/mm/hugepages 目录,读取其中的每个目录名,得到大页的各种大小:
internal_config.hugepage_info[i].hugepage_sz
x86_64平台一般只有2MB大小和1GB大小。

2、通过读取 /proc/mounts 文件内容得到当前大小大页的挂载目录:
internal_config.hugepage_info[i].hugedir
如果还没有挂载当前大小的大页,则跳出继续判断下一个大小的大页。

3、得到当前大小的大页的总个数:
internal_config.hugepage_info[i].num_pages[0]
暂时保存在 socket 0 上

4、/sys/kernel/mm/hugepages 目录下的子目录分析完后,最终确定不同的大页大小的数量,保存到:
internal_config.num_hugepage_sizes

5、根据不同的大页大小,对internal_config.hugepage_info[i] 进行排序,使其按大页的大小从大到小排序。

6、检查确认是否至少获得到了一种大小的大页,也就是有至少一种大小的大页内存可用,如果有则返回0,否则返回-1。

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《DPDK17.02内存管理1 – eal_hugepage_info_init》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注