在 Linux 中限制用户可用的内存和 CPU

Posted

技术标签:

【中文标题】在 Linux 中限制用户可用的内存和 CPU【英文标题】:Limit the memory and cpu available for a user in Linux 【发布时间】:2010-10-01 01:08:36 【问题描述】:

我有点担心我可以在共享机器中使用的资源量。有什么方法可以测试管理员对我可以使用的资源数量是否有限制?如果是这样,为了提出一个更完整的问题,我该如何设置这样的限制?

【问题讨论】:

【参考方案1】:

对于进程相关的限制,您可以查看/etc/security/limits.conf(阅读文件中的 cmets,使用 google 或使用 man limits.conf 了解更多信息)。正如 jpalecek 指出的那样,您可以使用 ulimit -a 查看(并可能修改)当前有效的所有此类限制。

您可以使用命令quota 来查看磁盘配额是否生效。

【讨论】:

所有输入都有注释,是不是没有限制? 最有可能,至少在 CPU 和内存使用方面。对于磁盘使用情况,我认为您需要使用配额命令进行检查【参考方案2】:

你可以试试跑

ulimit -a

查看有效的资源限制。此外,如果允许您更改此类限制,您可以通过ulimit 命令更改它们,例如。

ulimit -c unlimited

取消对进程可以创建的核心文件大小的任何限制。

【讨论】:

我意识到这个问题已有 3 年历史,但手册页将此程序列为已过时(说使用 getrlimit 代替) ulimit() C 库函数是(见ulimit(3)),内置shell 不是(见bash(1))。【参考方案3】:

在C层,相关函数(实际上是syscalls(2)...)可以是setrlimit(2)和setpriority(2)和sched_setattr(2)。您可能希望从您的 shell 中调用它们。

另请参阅proc(5) - 并尝试cat /proc/self/limits 和sched(7)。

您可能想要使用renice(1) 命令。

如果您运行不需要用户交互的长时间程序(几个小时),您可以考虑使用一些batch processing。一些 Linux 系统有一个batch or at command。

【讨论】:

以上是关于在 Linux 中限制用户可用的内存和 CPU的主要内容,如果未能解决你的问题,请参考以下文章

cpu,disk,mem 针对用户限制使用率

Docker之Linux Cgroup实践

docker 如何限制和查看container 内存 和cpu

限制PHP中的CPU使用率

Docker: 限制容器可用的内存

linux进程数限制导致无法连接服务