我正在寻找解决方案来管理一些Linux软件包以实现资源管理,如下所述。我知道我可能会编写一个可能做我想做的守护进程,但我想省去那些非常重要而冗长的工作。
我管理一台机器,用于长时间计算,占用大量CPU。在该机器上,几个用户可以登录并开始计算。目标是优化机器负载并且每个用户获得他公平的CPU时间份额。到目前为止,一个类似的问题,但不太重要,存在记忆。
所以这是我的想法,它可以如何起作用以澄清我的意思:
负载优化器会将所有请求的CPU时间提供给系统进程(最终为root)并计算剩余容量。此容量将除以登录用户的数量。每个需要少于他的份额的用户都能得到他所要求的一切。递归直到所有用户都需要超过他们的份额。然后限制其余用户以获得相等的份额,例如通过租借。
这不一定要准确到jiffy。长时间的计算运行数小时,有时是几天。因此,如果在平均5-10分钟内平衡是公平的,那么这已经是完美的用户安排。
有没有人知道一个大致相同的解决方案?
答案 0 :(得分:3)
安排将用户进程分类到每个用户的cgroup,然后只使用Linux的CFS cgroup调度(CONFIG_CGROUP_SCHED)。在此期间,我将推荐 systemd ,因为它已经按用户排序。