发布大页面的正确方法?
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()
。
假设我在 /mnt/hugepages
上安装了大页面;然后两个应用程序 open()
然后 mmap()
到同一个大页面。
一个crash,一个close()
,然后munmap()
,我发现hugepage还在/mnt/hugepages
里面分配,numastat -vm
也显示有一个hugepage被占用了。然后,我手动删除那个文件(/hugepage),numastat -vm
仍然显示一个hugepage被占用。然后,我杀死了剩下的应用程序。最后,numastat -vm
显示hugepage不再被占用。
现在我的问题是,在这种情况下释放大页面的正确方法是什么,而不会杀死之前对页面进行 mmap 处理的所有应用程序?
我读过这个post。
但我的post不同,我不想杀死所有的应用程序,而是尽快释放大页面,我不想卸载。
谢谢!
要删除文件,您需要取消所有映射、关闭所有文件描述符并取消链接所有名称。
您需要对文件调用 unlink()
。