我在 CentOS 6.3 x64 机器上运行 JVM 实例。有时,一个人的 CPU 使用率会变得猖獗,I/O 会阻塞整个机器。
如何将所有 Java 进程的使用限制为单个内核?还是两个核心?还是按照规定?
我试过cpulimit
了,它无法用于多个内核以及多个同名进程。
有没有一种简单的方法来限制指定名称的所有进程的 CPU 使用率?
好吧,我认为您所需要的只是pgrep
(查找 PID)和taskset
. 然后根据您的需要,您将运行(作为超级用户)类似:
for pid in $(pgrep <pattern>);
do
taskset -p 0x00000001 $pid
done
taskset
有关如何使用它的更多信息,请参阅手册页。您可能需要安装该schedutils
软件包。
当然,您可以通过修改处理器掩码(即您分配的 CPU)将该方案更改为您想要的任何复杂性。
我应该补充一点,我认为 cpuset
(假设你的意思是,我不知道一个名为cpulimit
但并不意味着什么的工具)使用相同的底层机制。因此,正如您过去的尝试一样,这可能是徒劳的。