限制用户启动程序的最大 CPU 时间

限制用户启动程序的最大 CPU 时间

我们有一个运行 CentOS 和 Sun Grid Engine 的集群,用于研究模拟。但是,一些不太熟悉系统的用户最终会在头节点上运行作业,这当然会使其他人的速度变慢。

将来,我想放置一个 SSH 登录消息,警告人们用户直接在头节点上运行的程序的最大运行时间,但如果他们愿意的话,也允许运行长时间的作业(例如大的 tar/gzip 操作)。

TL;DR:如果 nice 值 <= 0,如何将用户运行的作业限制为 24 小时 CPU 时间?

答案1

您可以尝试编写一个脚本来检查正在运行的作业并记录其利用率,并决定在一定数量之后要做什么。您也可以尝试AND - 自动良好守护进程ulimitsPAM limits限制 CPU 时间用户的(在用户使用了那么多的 CPU 时间之后,进程/会话将被终止)。

答案2

使用CPU限制;在 debian 中是在存储库中,但在 centos 中不在。这里他们有一个编译和使用它的指南:关联如果你有一个集群,只需在一台备用机器上编译它,用你的配置管理工具(如cfengine)测试它然后部署它。

答案3

这不是一个完整的解决方案,但我随后找到了我需要的命令:

ps alr | sed 1d | awk '{print ($6 <= 0)? $2 " " $3 " " $12 : ""}' | grep -v "^$"

它列出了所有正在运行的、且 nice 值 <= 0 的作业(分为三列),包括 UID、PID 和总运行时间,如下所示:

543 3208 11436:31
511 16491 0:00

我希望这是一个相对简单的事情,即设置一个 cron 作业来解析这些数据、检查 UID 并在适当的时候终止作业。

相关内容