在Linux上的程序cpulimit是伟大的。 你可以告诉它限制一个进程,使它不会占用超过X%的CPU。 例如,如果CPU运行时间过长,我知道某人的笔记本电脑过热。 当进行一些video编码时,他们使用cpulimit来防止CPU被完全使用,从而导致过热。 你不能用nice来阻止。
有没有这样的负载 ?
理想情况下,我想能够做loadlimit 4 my-command-here ,它会启动my-command-here每X秒loadlimit将检查(1分钟)负载的机器,如果它高于4,然后my-command-here将被暂停。 当负载低于4时,命令将被暂停。 这正是cpulimit所做的。
这样的工具是否存在?
用你在评论中描述的内容,看来你的实际问题可以通过ionice来解决。
ionice -c 3 -p <pid>
其中-p <pid>是您要重新计划的进程的pid, -c 3将其放入idle类,因此只有在没有其他人需要的情况下才会获得磁盘时间。 在一个繁忙的系统上,这可能会使问题变得缓慢,因此您可以尝试不同的值来获得更高级别的优先级,例如
ionice -c 2 -n 6 -p <pid>
阅读man ionice了解更多详情。
您提出的载入loadlimit的问题是,高负载可能由非常不同的事情引起,并且放慢一个过程不一定会影响负载。