ALLOC_HUGEPAGES - Linux手册页

时间:2019-08-20 17:58:35  来源:igfitidea点击:

Linux程序员手册 第2部分
更新日期: 2017-09-15

名称

alloc_hugepages,free_hugepages-分配或释放大页面

语法

void *alloc_hugepages(int key, void *addr, size_t len,
                      int prot, int flag);

int free_hugepages(void *addr);

说明

系统调用alloc_hugepages()和free_hugepages()在Linux 2.5.36中引入,并在2.5.54中再次删除。它们仅存在于i386和ia64(使用CONFIG_HUGETLB_PAGE构建时)上。在Linux 2.4.20中,存在系统调用号,但调用失败,错误为ENOSYS。

在i386上,内存管理硬件知道普通页面(4KiB)和大页面(2或4MiB)。同样,ia64知道几种大小的大页面。这些系统调用用于将大页面映射到进程的内存中或再次释放它们。大量页面被锁定到内存中,并且不被交换。

key参数是一个标识符。如果为零,则页面是私有页面,不会被子代继承。当为正时,页面将使用相同的密钥与其他应用程序共享,并由子进程继承。

free_hugepages()的addr参数指示要释放的页面:这是对alloc_hugepages()的调用的返回值。 (实际上,所有用户都释放了内存之后,首先释放该内存。)alloc_hugepages()的addr参数是一个提示,表明内核可能会也可能不会跟随。地址必须正确对齐。

len参数是所需段的长度。它必须是巨大的页面大小的倍数。

prot参数指定段的内存保护。它是PROT_READ,PROT_WRITE和PROT_EXEC之一。

除非key为正,否则将忽略flag参数。在这种情况下,如果标志是IPC_CREAT,则在没有给定密钥的情况下会创建一个新的大页面段。如果未设置此标志,则在不存在具有给定键的段时返回ENOENT。

返回值

成功后,alloc_hugepages()返回分配的虚拟地址,而free_hugepages()返回零。如果出错,则返回-1,并正确设置errno。

错误说明

ENOSYS
该内核不支持系统调用。

文件

/proc/sys/vm/nr_hugepages
已配置的hugelb页面数。可以读取和写入。
/proc/meminfo
在三个变量HugePages_Total,HugePages_Free,Hugepagesize中提供有关已配置的巨大页面的数量及其大小的信息。

遵循规范

这些调用特定于Intel处理器上的Linux,不应在旨在可移植的程序中使用。

备注

这些系统调用不见了;它们仅在Linux 2.5.36至2.5.54中存在。现在可以改用hugetlbfs文件系统。通过使用mmap(2)映射此虚拟文件系统中的文件,可以获得由大页面支持的内存(如果CPU支持)。

可以使用hugepages = boot参数指定最大的大页面数。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/