导读
这是关于数据面开发套件(DPDK)内存管理功能系列文章的第三篇。本系列的第一篇文章描述了DPDK基础的基本概念。第二篇文章深入介绍了输入输出虚拟地址(IOVA)和适用于所有DPDK版本的内核驱动程序。本文概述了DPDK版本中可用的内存管理工具,包括17.11版本。
DPDK17.11是(目前)仍然支持的最早的长期支持(LTS)版本。因此,描述DPDK 17.11提供的内存管理功能不仅为DPDK内存管理功能的发展提供了宝贵的历史视角,而且对许多使用这些较旧但仍受支持的版本的DPDK消费者有所帮助。
从内存管理的角度来看,18.11之前的LTS版本表现完全相同,因此,除非另有说明,否则关于17.11版本的所有内容也适用于任何早期DPDK版本。本文中涉及的一些概念已在本系列的第1篇和第2篇文章中介绍过,因此也请阅读这些文章。
01
作者简介
Anatoly Burakov:英特尔软件工程师,目前在维护DPDK中的VFIO和内存子系统。
02
为DPDK提供标准大页内存
为了使应用程序访问大页内存,Linux*使用了一个特殊的hugetlbfs文件系统。因此,为了利用标准大页,DPDK 17.11必须使用hugetlbfs文件系统挂载点。因为大页可以有不同的大小,hugetlbfs 挂载点可以提供对不同大小页面的访问,具体取决于它的配置方式。如果未明确指定特定hugetlbfs挂载点的大页大小,则它使用默认的大页大小,该大小通过内核命令行设置(或者是如果在启动时未指定默认的大页大小,则设置为某个默认值)。
在许多当前发行版中,默认情况下通过systemd可以使用hugetlbfs挂载点,在少数情况下(例如开发或调试),只有一个默认挂载点就足够了。用户也可以选择通过编辑/etc/fstab创建自己的hugetlbfs挂载点。如何设置hugetlbfs挂载点,设置默认大页大小以及保留标准大页超出了本系列文章的范围,但是有关如何执行这些操作的相关指南可以在DPDK文档以及Linux发行版文档中找到。
使用DPDK管理大页内存
一旦系统被设置为为应用程序使用保留大页,DPDK就可以使用它。默认情况下,如果没有指定与内存相关的环境抽象层(