据我所知,目前,在Linux上,没有办法mmap文件(在xfs或ext4上),然后写入它,并以某种方式使用大页面。
这是正确的还是这个过时的信息,现在有办法吗?
谢谢。
如果使用不是来自'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()