使用 prlimit 限制 RAM 使用量

使用 prlimit 限制 RAM 使用量

我需要在 Linux(Ubuntu 20.04.3 LTS)上运行一个不是我编写的程序(即 BLAST),并且我需要为这种特定情况设置 RAM 使用限制,因为我正在使用共享 CPU。另外,我不想安装或使用其他人开发的脚本。我想我可以使用 prlimit,例如:

prlimit --pid xxxx --rss=yyy

但我不确定 --rss 是否是限制 RAM 使用量的正确参数,因为我是这个领域的新手,并且对报告中的不同选项有点困惑手册页。另外,我不知道如何表达这样的限制,我没有找到任何相关信息(我需要将 RAM 限制设置为 300GB 左右)。所以,我查看了较早的相关问题,但我仍然有这些疑问。

我也阅读了对其他建议使用 ulimit 的问题的答复,但据我所知,这会对当前用户应用限制(虽然我不想为特定用户设置限制,而只想为当前正在运行的特定进程设置限制)。

编辑

我尝试使用以下命令:

prlimit --memlock=1024 --rss=1024 --pid xxxxxx

将限制设置为 1024,只是想看看它是否有效,但事实并非如此。我的进程没有被终止。知道我做错了什么吗?还有其他解决方案吗?

提前致谢!

答案1

一般来说,当我需要一次性完成某个流程时,我会使用systemd-run但有一些限制:

systemd-run --scope -p MemoryMax=300G {program or script}

这会用于cgroups有效管理资源能够承担这一过程以及任何子线程。虽然该命令会要求您输入密码,但该过程在您的用户下运行,并且不会使用sudo

相关内容