使用巨大的页面映射编写mmapped文件

问题描述 投票:2回答:1

据我所知,目前,在Linux上,没有办法mmap文件(在xfs或ext4上),然后写入它,并以某种方式使用大页面。

这是正确的还是这个过时的信息,现在有办法吗?

谢谢。

linux mmap huge-pages
1个回答
0
投票

如果使用不是来自'hugetlbfs'的MAP_HUGETLB来映射文件,则mmap将失败。来自ksys_mmap_pgoff()

if (!(flags & MAP_ANONYMOUS)) {
    ...
    if (unlikely(flags & MAP_HUGETLB && !is_file_hugepages(file)))
         goto out_fput;

qazxsw poi检查文件ops是否为hugetlbfs file_operations,这对于例如EXT4。

但是,您可以使用透明的大页面。目前(4.19左右),您还必须使用DAX(直接访问,通常与nvdimms和持久内存一起使用)。我还没有这样做,但那是通过代码进行追踪。具体来说,为了让大页面正常工作,你至少需要一个大页面对齐的地址,它来自is_file_hugepages(),如果你没有使用DAX,它会挽救:

thp_get_unmapped_area()
© www.soinside.com 2019 - 2024. All rights reserved.