linux - 将某些进程限制为 CPU % - Linux

标签 linux limit cpu

我有以下问题:一些动态生成的进程倾向于占用 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 10gzip CPU 使用率限制为 10%
  • -zgzip进程完成时自动关闭cpulimit

另一个选项是运行 cpulimit 守护进程。

关于linux - 将某些进程限制为 CPU % - Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386945/

相关文章:

php - 减少服务器资源和 php 到 C++ 的编译

linux - 保持 SSH session 处于事件状态

c - 如何使用库从文件访问共享库中提到的指令的地址?

ios - iCloudKit 空间存储分配存储配额管理/监控

mysql联合限制问题

c++ - 累积 double vs 整数

python - 您的 CPU 支持此 TensorFlow 二进制文件未编译为使用 : AVX AVX2 的指令

linux - 解释基本的 ARM 指令

r - 在 Ubuntu 服务器上将 .R 文件转换为实际的 Shiny 应用程序

php - 限制偏移量大于实际记录的mysql select语句