20.04.1 lts mmap 在 hugetlbfs 文件上失败

20.04.1 lts mmap 在 hugetlbfs 文件上失败
mmap() fails on hugetlbfs file.
julu@julu-lap:~$ pwd
/home/julu
julu@julu-lap:~$ uname -a
Linux julu-lap 5.8.0-36-generic #40~20.04.1-Ubuntu SMP Wed Jan 6 10:15:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
julu@julu-lap:~$ ls /dev/hugepages/
libvirt
julu@julu-lap:~$ mount | grep huge
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
julu@julu-lap:~$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-5.8.0-36-generic root=UUID=8fa78c96-50d3-4db8-8a27-f96a328706b8 ro quiet splash hugepagesz=1G hugepages=1 hugepagesz=2M hugepages=128 vt.ha

即使配置了 hugetlbfs,hugetlb 支持文件的 mmap() 在该 ubuntu 上也会失败。有什么想法吗?

答案1

看起来 hugeTLB 支持文件的 MMAP 不起作用。hugeTLB 的 MAP_SHARED 不可用。我通过使用 hugeTLB 页面的 MMAP 解决了我的问题 - MAP_PRIVATE|MAP_HUGETLB|MAP_HUGE_1G|MAP_ANONNYMOUS。mmap 调用上的标志。

这可能会对使用“dpdk/spdk”用户模式 ​​NVME/网络应用程序的用户造成困扰。

相关内容