![有没有办法让程序不占用超过50%的CPU?](https://linux22.com/image/485348/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%AE%A9%E7%A8%8B%E5%BA%8F%E4%B8%8D%E5%8D%A0%E7%94%A8%E8%B6%85%E8%BF%8750%EF%BC%85%E7%9A%84CPU%EF%BC%9F.png)
答案1
您可以尝试使用 nice 降低优先级来限制您的程序。这无需编程。
答案2
以“50%”的 CPU 运行并没有多大意义。您希望程序在可用时尽可能地使用所有资源。如果 CPU 没有执行任何其他操作,该程序不妨充分利用它。如果您希望程序实际上什么都不做,您必须修改源代码并在可能的情况下设置暂停/睡眠。
你想要的是让其他所有东西都具有更高的优先级。请参阅 nice 命令的手册页,以 nice 19 运行它
限制资源的另一种可能更有效的方法是安装 schedutils 包,并使用 SCHED_BATCH 进程调度程序运行该程序。
答案3
设置极限和公司...
#include <sys/resource.h>
#include <sys/time.h>
#include <unistd.h>
int main ()
{
struct rlimit rl;
/* Obtain the current limits. */
getrlimit (RLIMIT_CPU, &rl);
/* Set a CPU limit of 1 second. */
rl.rlim_cur = 1;
setrlimit (RLIMIT_CPU, &rl);
/* Do busy work. */
while (1);
return 0;
}
从这里
答案4
如果您不想修改程序,可以考虑的另一个选择是虚拟化。