Bash:限制具有指定名称的所有进程的CPU使用率

时间:2013-02-20 00:20:17

标签: bash centos cpu-usage

我在CentOS 6.3 x64机器上运行JVM实例。有时一个CPU的使用率很高,I / O会阻塞整个机器。

如何将所有Java进程的使用限制为单个核心?还是两个核心?或者按照规定?

我尝试了cpulimit,它无法用于多个核心,以及多个具有相同名称的进程。

是否有一种简单的方法来限制指定名称的所有进程的CPU使用率?

1 个答案:

答案 0 :(得分:1)

好吧,我认为你需要的只是pgrep(找到PID)和taskset。然后根据您的需要,您可以运行(以超级用户身份):

for pid in $(pgrep <pattern>);
do
  taskset -p 0x00000001 $pid
done

有关如何使用它的更多信息,请参阅taskset手册页。您可能需要安装schedutils包。

当然,您可以通过修改处理器掩码(即您指定的CPU)来将该方案改变为您想要的任何复杂度。

我应该补充一点,我认为 cpuset(假设您的意思是,我不知道名为cpulimit的工具,但这并不意味着什么)使用相同的潜在机制。因此,这可能与过去的尝试一样徒劳。