这是双核情况。虽然这两个过程的价值并不相同,但它们每个都陷入了两个核心。
这是单核的情况:CPU占用率与不错的比例相对应。

正常运行的进程(nice值0)获得更多的cpu运行时间,相反,使用nice命令运行的进程将占用更少的cpu时间(nice值1 0))。
在实际使用中,如果要运行CPU密集型程序,最好使用nice命令启动它,以便可以确保其他进程获得更高的优先级。换句话说,即使您的服务器或台式机负载很重,您也可以快速做出响应。
nice还具有一个称为renice的关联命令,该命令可以在运行时调整进程的精确值。使用renice命令时,首先找出该进程的PID。这是一个示例:
renice +10 1234其中,1234是进程的PID。
在测试好命令和renice命令之后,切记要杀死所有数学素过程。
cpulimit命令
cpulimit命令的工作原理是为该进程预设一个cpu占用阈值,并实时监视该进程是否超过该阈值,如果超过该阈值,则该进程将被暂停一段时间。 cpulimit使用两个信号SIGSTOP和SIGCONT来控制该过程。它不会修改进程的精确值,而是通过监视进程的cpu占用率进行动态调整。
cpulimit的优点是它可以控制进程的cpu使用率的上限。但是与nice相比,有一个缺点,就是即使cpu处于空闲状态,该进程也无法完全使用整个cpu资源。
在CentOS上,您可以使用以下方法来安装cpulimit:

wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
cp src/cpulimit /usr/bincpulimit的用法类似于nice命令,但是用户需要使用-l选项来显式定义进程的cpu用法的上限。例如:
cpulimit -l 50 matho-primes 0 9999999999 >/dev/null &
从上面的示例中可以看出,mathe-primes仅使用50%的cpu资源,而剩余的cpu时间是空闲的。
cpulimit还可以在运行时动态限制进程。使用-p选项指定进程的PID。下面是一个示例,其中1234是进程的PID。 :
cpulimit -l 50 -p 1234cgroups命令集
检查是否已安装:
rpm -qa libcgroup
libcgroup-0.40.rc1-18.el6_8.x86_64如果未安装,请使用centos安装方法:
yum -y install libcgroup开始:
/etc/init.d/cgconfig start
Starting cgconfig service: [确定]
/etc/init.d/cgconfig status
Runningcgroups是Linux内核提供的一种机制,可用于指定一组进程的资源分配。具体来说,使用cgroup,用户可以为一组进程限制cpu占用率,系统内存消耗,网络带宽以及这些资源的组合。
与nice和cpulimit相比,cgroups的优势在于它可以控制一组进程,而前者只能控制一个进程。同时,nice和cpulimit只能限制cpu的使用,而cgroups可以限制其他进程资源的使用。
充分利用cgroup来控制整个子系统的资源消耗。以CoreOS为例。这是专为服务器部署而设计的最简化的Linux发行版。其升级过程由cgroups控制。这样,当系统下载并安装升级版本时,系统的性能将不会受到影响。
为进行下面的演示,我们将创建两个控制组(cgroup)并为其分配不同的cpu资源。这两个对照组分别命名为“ cpulimited”和“ lesscpulimited”。
使用cgcreate命令创建一个控制组,如下所示:
sudo cgcreate -g cpu:/cpulimited
sudo cgcreate -g cpu:/lesscpulimited“-g cpu”选项用于设置cpu使用量的上限。除了cpu外,cgroups还提供cpuset,内存,blkio和其他控制器。 cpuset控制器与cpu控制器的区别在于,cpu控制器只能限制一个cpu内核的利用率,而cpuset可以控制多个cpu内核。
cpu控制器中的cpu.shares属性用于控制cpu的使用率。它的默认值为1024。我们将lesscpulimited控制组的cpu.shares设置为1024(默认值),将cpulimited设置为512。配置后,内核将以2:1的比例为两个控制组分配资源。
要将cpulimited组的cpu.shares设置为512,请输入以下命令:
sudo cgset -r cpu.shares=512 cpulimited使用cgexec命令启动控制组的操作。为了测试这两个对照组,我们首先使用cpulimited对照组启动数学素数过程。命令行如下:
sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &打开htop,您会看到math-primes进程占用了所有CPU资源。

因为系统中仅运行一个进程,所以无论在哪个控制组中启动它,都将使用尽可能多的cpu资源。仅当两个进程争用cpu资源时,cpu资源限制才生效。
所以,现在我们开始第二个数学素数处理,这次是在lesscpulimited控制组中开始:
sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &再次打开顶部,您会看到cpu.shares值较大的对照组将获得更多的cpu运行时间。

现在,让我们向cpulimited控制组添加一个数学素数处理:
sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &
可以看出,两个控制组的CPU占用率仍为2:1。其中,cpulimited控制组中的两个math-primes进程获得相同的cpu时间,而另一组中的matho-primes进程显然获得了更长的运行时间。
摘要
好的,cpulimit和cgroups可以帮助管理系统资源,尤其是cpu资源:

本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-367787-1.html
应该说爱卿所言甚是