pipe理Linux计算机上的资源使用限制

大家好,我想知道是否有一个很好的pipe理工具,以限制Linux环境中的用户资源消耗。

为了更详细地介绍我的问题,我正在尝试解决用户跨系统使用整个CPU的问题。 无论是运行模拟还是testing不良的并发代码,我遇到的问题是,单个用户最多只能在一台服务器或一台计算机上运行。

我知道/etc/security/limits.conf,但我没有看到一种方法来限制用户/用户组的CPU使用情况,这是有用的,当一个进程占用一个CPU的多个核心。

如果我错过了limits.conf手册页中的任何内容,请随时指出我的方向,如果您还有其他build议,我很乐意听到!

谢谢!

我会看cgroups – 这允许通过给一个进程分配“分片”系统。

你可以在内存,CPU,磁盘等方面给予限制。

例如,将10MB的内存限制在一个组foo中

echo 10000000 > /sys/fs/cgroup/memory/groupname/foo/memory.limit_in_bytes 

这里有几个选项需要考虑。

一个,你可以在/etc/security/limits.conf中设置每个用户或每个组的好值。 你可以通过添加如下所示的行来设置它:

 @users - priority 10 username - priority 19 

但是这并不能阻止用户创build大量的进程。 您可以进一步限制用户的最大打开文件数量,这将减less他们可以使用的打开的句柄数量到一个可pipe理的数量。

您也可以考虑使用虚拟机来执行此任务。 这种隔离在用户不断将共享系统中的资源饱和的情况下非常有用。 使用像OpenStack或CloudStack这样的良好的协调和部署系统(或者甚至是简单的libvirt和KVM来缩小规模)可以使事情变得更容易,特别是考虑到这些堆栈的“易用”部署工具的数量,比如Mirantis Fuel 。

你可以看看CloudLinux的操作系统,它是“cageFs”和“lve”特性。 这允许你创build一个用户并为每个用户定义ram / cpu / hdd空间/ iops / mysql查询。