如何使用Linux hugetlbfs共享文件的内存映射?

我有一个程序使用mmap和共享内存来有效地访问大型数据库文件。 我想用大页面来试验,看看它是否能够加快速度。

我认为一个简单快捷的方法是将数据库文件复制到Linux的hugetlbfs目录中,并在旧位置创build一个符号链接。

但是,这不起作用,因为cp命令不能写入文件。 我怀疑只能通过调用ftruncmmap来写入文件才能创build文件。 我可能会尝试写一个这样做的复制工具,除非我得到一个描述现有工具的答案。

我正在寻找任何其他好的方法来在Linux中使用大页面来共享内存映射。

现在是一个老问题。 但看到没有人回答,我实际上也想试验巨大的页面支持(由于不同的原因)。 我会提供一个答案。

尽管现代内核中的大页面现在是透明的,但仍然可以获得更多的控制权。

这些功能可能是你正在寻找的。

get_huge_pages() , free_huge_pages() , get_hugepage_region() , free_hugepage_region()

你需要安装一个包含hugetlbfs的libhugetlbfs 。

这里有一篇Linux周刊文章,你可能会发现有帮助。 巨大的页面 – 第1部分(介绍)