Cgroups 内存限制 - 脚本在达到限制之前就被终止

Cgroups 内存限制 - 脚本在达到限制之前就被终止

我正在尝试一个简单的例子来了解如何限制进程的内存消耗。

我已经创建了一个测试内存组,将memory.limit_in_bytes 和memory.memsw.limit_in_bytes 的限制都设置为 5 MB。

我有一个非常简单的程序,它以 1 MB 的增量分配内存(通过从随机设备读取)。

我本来期望我的脚本在被终止之前能够达到接近 5 MB 的大小,但它在读取 1 MB 之后就被终止了。

当我将 cgroup 限制提高到 8 MB 时,它在消耗 3 MB 后就会被杀死。

我尝试了不同的限制,并注意到它在达到分配限制的一半之前就被终止了。

如果我遗漏了其他任何东西,有人可以告诉我吗?

将非常感谢您的指导。

答案1

cgroups 内存限制还涵盖程序的可执行代码,包括可执行文件本身及其所需的任何共享库。在使用 cgroups 设置限制之前,以及可能在允许测试程序开始分配内存之前,您可以使用pstop(或其中一个顶级变体)等工具来观察实际内存使用情况。

相关内容