在Linux(我们的系统是CentOS5)中,是否可以将CPU资源分配给进程?例如,我有一个tomcat应用程序,我希望tomcat调用的所有进程和线程占总CPU周期的p%,无论有多少其他应用程序正在运行。我想动态调整p%(例如,在这个时隙,tomcat有40%的cpu周期,而在下一个时隙,它有70%的cpu周期)。
如果可以,可以保守地做到这一点吗?我的意思是,即使tomcat有40%的cpu周期,但如果它的当前工作负载仅消耗10%,其他应用程序可以使用剩余的30%CPU周期。
感谢。
答案 0 :(得分:3)
如果您可以使用RHEL6 / CentOS6(或升级内核),则可以使用cgroup执行您想要执行的操作。 http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
答案 1 :(得分:2)
您熟悉该工具的漂亮和漂亮程度吗?
您可能需要检查好处级别以及如何在CentOS中设置它们,而不是试图指定确切的百分比。您的应用程序将按预期运行,优先级较高的进程可以声明更多资源,而优先级较低的进程不会因资源不足而受到影响,即使优先级较高的进程处于空闲状态。
答案 2 :(得分:1)
如果你真的真的想这样做(而且esnyder建议优先使用不错的关卡几乎肯定是一个更好的解决方案,无论你真正想要实现什么) AND 您很高兴以1 / CPU数量的粒度(例如,在8核系统上,将利用率指定为总CPU资源的12.5%的倍数)来执行此操作,然后您可以使用sched_setaffinity
来执行此操作为要控制的进程设置CPU关联掩码(可以从其他进程执行此操作)。 (实际上,我认为你需要识别所有进程的'线程并在每个进程上调用它)。
或者,cpusets可能会引起人们的兴趣,但我不知道如何启用它们或它们有多动态。