我是个不受欢迎的人,上周我两次搞垮了我们的高内存 Linux 机器,因为我运行的一些进程消耗的内存比预期的多得多。解决这个问题的一种方法是设置每个进程的 ulimit,这样如果每个进程的内存使用量超过一定量,该进程将被终止。但有时我需要为单个进程分配大量内存,而不是将一些内存分散到一堆并行进程中。与其依靠我记得在以不同并行度运行不同类型的作业时主动管理我的 ulimit,有没有某种与 ulimit 等效的东西,它查看用户的总内存使用量,然后终止该用户的所有或部分进程,而不是使整个系统瘫痪?
答案1
这几乎就是为什么 Linux对照组(cgroups)被发明。这允许将一组进程(例如,从您最初的交互式登录开始的所有进程)视为一个单一实体,以便进行资源控制——例如限制所消耗的内存总量(或 CPU 资源等)。
很遗憾...
Cgroups 相对较新,大多数发行版都缺乏对它的便捷支持。