【发布时间】:2019-08-29 03:39:35
【问题描述】:
我有以下代码:
mmap(NULL, 2048, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_HUGETLB, -1, 0);
我想知道在我的应用程序异常退出(例如崩溃)后如何释放大页面。
重新启动机器将释放所有大页面。但这对生产服务器有点破坏性。因此,我正在寻找一种不破坏现有流程的方法。
提前致谢!
【问题讨论】:
-
如果应用程序已经崩溃,我很确定没有什么需要清理的了 :)
-
@tangrs 我注意到 numa 的可用页数正在下降 (
numastat -vm)。 -
Linux 会有复杂的内存管理算法。我怀疑
numastat的输出与您的进程崩溃或启动有任何直接关系。 Linux Ate My RAM 与此没有直接关系,但有助于说明这一点(特别是 free 和 available 之间的区别)。 -
@tangrs right 计数器可能是错误的,但是当我的应用程序再次尝试 mmap 时。 Mmap 不再抱怨资源
-
@HCFS 也许,只是也许尝试删除大页面挂载点中的文件。这不是一个解决方案,而是一个肮脏的黑客。它对我有用,但可能对你不起作用,特别是如果多个应用程序共享 tlbpages。 ymmv。
标签: c linux centos7 mmap huge-pages