我正在尝试一个简单的示例来了解如何限制进程的内存消耗。
我创建了一个测试内存组,将 memory.limit_in_bytes 和 memory.memsw.limit_in_bytes 的限制设置为 5 MB。
我有一个非常简单的程序,它以 1 MB 的增量分配内存(通过从随机设备读取)。
我本来希望我的脚本在被杀死之前达到接近 5 MB 的大小,但它在读取 1 MB 后立即被杀死。
当我将 cgroup 限制提高到 8 MB 时,它会在消耗 3 MB 后被杀死。
我尝试了不同的限制,并注意到它在达到分配限制的一半之前一直被杀死。
如果我还缺少其他东西,有人可以告诉我吗?
将不胜感激一些指导。
cgroups 内存限制还包括程序的可执行代码,包括可执行文件本身和它需要的任何共享库。在使用 cgroup 设置限制之前,并且可能在允许测试程序开始分配内存之前,您可以使用
ps
和(或顶级变体之一)之类的工具来观察实际内存使用情况。top