发布大页面的正确方法?

Proper Way to Release a Hugepage?

假设我在 /mnt/hugepages 上安装了大页面;然后两个应用程序 open() 然后 mmap() 到同一个大页面。

一个crash,一个close(),然后munmap(),我发现hugepage还在/mnt/hugepages里面分配,numastat -vm也显示有一个hugepage被占用了。然后,我手动删除那个文件(/hugepage),numastat -vm仍然显示一个hugepage被占用。然后,我杀死了剩下的应用程序。最后,numastat -vm显示hugepage不再被占用。

现在我的问题是,在这种情况下释放大页面的正确方法是什么,而不会杀死之前对页面进行 mmap 处理的所有应用程序?

我读过这个post

但我的post不同,我不想杀死所有的应用程序,而是尽快释放大页面,我不想卸载。

谢谢!

要删除文件,您需要取消所有映射、关闭所有文件描述符并取消链接所有名称。

您需要对文件调用 unlink()