我有以下问题:一些动态生成的进程倾向于占用 100% 的 CPU。我想将所有符合某些条件(例如进程名称)的进程限制为一定数量的 CPU 百分比。
我要解决的具体问题是利用 fold@home 工作进程。我能想到的最佳解决方案是定期执行并使用 cpulimit 实用程序来限制进程的 perl 脚本(如果您对更多细节感兴趣,请查看 blog post)。它有效,但它是一个黑客:/
有什么想法吗?我想把进程的处理留给操作系统:)
再次感谢您的建议,但我们仍然没有捕获重点:)
“slowDown”解决方案本质上是“cpulimit”实用程序所做的。我仍然需要注意要减慢哪些进程,一旦工作进程完成就终止“slowDown”进程,并为新的工作进程启动新进程。这正是我使用 Perl 脚本和 cron 作业所做的。
主要问题是我事先不知道要限制哪些进程。它们是动态生成的。
也许有一种方法可以将一个用户的所有进程限制为一定的 CPU 百分比?我已经设置了一个用户来执行 fold@home 作业,希望我可以使用/etc/security/limits.conf 文件来限制他。但我能得到的最接近的是每个用户的总 CPU 时间......
如果有一些东西可以让你说: “此用户进程的所有 CPU % 使用率总和不能超过 50%”。然后让进程根据它们的优先级争夺那 50% 的 CPU...
各位,感谢您的建议,但这与优先级无关 - 即使有足够的可用 CPU 时间,我也想限制 CPU 百分比。这些进程的优先级已经很低,因此不会导致任何性能问题。
我只是想防止 CPU 长时间 100% 运行...
最佳答案
我在 gzip
上遇到了一个稍微类似的问题。
假设我们想减少 gzip
进程的 CPU:
gzip backup.tar & sleep 2 & cpulimit --limit 10 -e gzip -z
选项:
- 我发现
sleep
很有用,因为cpulimit
有时不会立即启动新的gzip
进程 --limit 10
将gzip
CPU 使用率限制为 10%-z
在gzip
进程完成时自动关闭cpulimit
另一个选项是运行 cpulimit
守护进程。
关于linux - 将某些进程限制为 CPU % - Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386945/