计算机集群管理员:如何限制用户运行程序但允许文件传输

计算机集群管理员:如何限制用户运行程序但允许文件传输

我在 CentOS 7 上使用 slurm 管理一个小型计算机集群。我想阻止用户在登录节点上运行程序。这可以通过添加user hard cpu 1到文件来实现/etc/security/limits.conf。但是,我不希望从另一个集群传输文件sshd中断。有没有办法协调这些看似相互冲突的目标?

答案1

CPU 限制似乎是显而易见的答案,但有效的答案是使用内存限制。像 ssh 这样的工具往往具有恒定的内存配置文件,因此可以找到不会影响它们的合适的内存 ulimit,而大多数实际计算应用程序都有大量内存需求,很快就会超出限制。

此外,在 CPU 使用率较高的情况下,操作系统往往能够很好地平衡进程之间的 CPU 使用率。每个用户的总进程数 ulimit 可能也是必要的。

如果您坚决要限制 CPU 的使用,而不是进行硬性 CPU 限制,那么可以重新调整 CPU 占用高进程的速度,或者使用 cgroups 来限制它们。

如果您想要更严厉一些,请在 cron 中使用一个脚本,该脚本使用ps -o并按 pcpu、总 cpu 使用率进行过滤,并将 ssh、screen、tmux 和系统用户等一些命令列入白名单,并自动终止剩余的可疑进程。(我建议打印候选进程并手动检查几个月,然后再按下终止开关。)

然而,关键是要教育用户使用 slurm。上述内容可能是实现这一目标的一种艰难说服方式。

相关内容