如何在 Linux 中为特定用户设置 RAM 限制?

如何在 Linux 中为特定用户设置 RAM 限制?

如何为特定用户设置 RAM 限制?我尝试编辑文件/etc/security/limits.conf并设置 RAM 限制,但仍然看到用户进程超出设置的限制。

我知道限制是以 kb 为单位指定的,因此我使用的数字没有错误。

例如,我尝试进行设置,以便用户不能使用超过 2,048mb(或 2,097,152kb)的内存,而他们的程序将使用 2500mb 左右的内存。

有没有办法不用虚拟机就能实现这一点?我也试图避免运行虚拟机。

这是我的/etc/sysconfig/limits.conf

此外,由于我运行的内核版本是 2.6.18,因此 RSS 限制被忽略

答案1

与内存相关的控制是通过每个进程的资源限制来强制执行的。在 Linux 下,与内存相关的进程限制长期以来一直存在部分问题。例如:

$ (ulimit -m 1; emacs)

如果 Emacs 启动,显然 RSS 资源限制没有被强制执行。我见过有效的限制是数据段和堆栈限制。

$ (ulimit -d 1; emacs)
emacs: Memory exhausted--use M-x save-some-buffers RET
$ (ulimit -s 1; emacs)
$

因此仅使用“数据”和“堆栈”内存限制,因为这些似乎是强制执行的。

答案2

要限制一组进程、用户或组的可用资源,您可以使用cgroupshttps://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt

相关内容