解决方法
您应该使用cgroups来执行此操作.
请参阅“man cgrules.conf”和“man cgconfig.conf”.
Fedora上的systemctl的更高版本应该支持将用户直接粘贴到cgroup中,这样你就可以更好地做到这一点.
这不会限制cpu,因为如果有可用的cpu资源(没有人使用),它将使用所有cpu但是其他东西也要求cpu它将根据配置的“cpu”分配cpu的份额.分享“价值.
另外,正如建议在cpu时间上坚持ulimit将确保运行过程被给予一个cuculative数量的jiffies之前被杀死使用太多的cpu.这可能会对用户正在使用的长时间运行的流程产生负面影响,这些流程在很长一段时间内自然会积累一定数量的jiffies.
您还可以使用cgroup强制所有用户仅在您的某个核心上进行实时处理,这样您至少可以保证一个cpu是否被淹没,它对其余的操作系统进程没有负面影响.
CGroups也是限制内存使用的一种很棒的方法.你可以将它与pam_limits结合起来以防止叉轰炸.
编辑:我还应该指出我认为你的要求不一定相关.让1个进程占用100%的cpu并不一定是坏事,为其他进程提供运行时间. Linux上完全公平的调度程序无论如何都能保证这种行为.
如果cpu只是空闲,那么使用所有cpu的进程没有任何问题.您的问题只出现在多个进程要求cpu时间且其中一个进程占用cpu的情况下.这就是cgroup应该受益的地方,因为它允许你控制在cpu争用情况下你将分配不同进程的cpu时间.