总结一下大页的操作

Linux 操作系统采用了基于hugetlbfs 的特殊文件系统来加入对2MB 或者1GB 的大页面支持(x86架构)。  (如果是IBM power架构,是16M和16G)

为了使用大页,必须在编译内核的时候激活hugetlbfs。

在激活hugetlbfs 之后,还必须在Linux 启动之后保留一定数量的内存作为大页来使用。
现在有两种方式来预留内存。
第一种是在Linux 命令行指定,        default_hugepagesz=1G hugepagesz=1G hugepages=4

第二种是动态预留(仅用于2MB的大页)   echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages


NUMA 系统中,因为存在本地内存的问题,系统会均分地预留大页。

假设在有两个处理器的NUMA 系统中,以上例预留4GB 内存为例,在NODE0 和NODE1 上会各预留2GB 内存



DPDK 也是使用HUGETLBFS 来使用大页。它需要把大页mount 到某个路径,

临时性:
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

永久性:

修改/etc/fstab 文件,加上一行:
nodev /mnt/huge hugetlbfs defaults 0 0
对于1GB 大小的大页,则必须用如下的命令:
nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0
接下来,在DPDK 运行的时候,会使用mmap() 系统调用把大页映射到用户态的虚拟地址空间,然后就可以正常使用了。

猜你喜欢

转载自blog.csdn.net/wangcg123/article/details/78610950
今日推荐