我正在尝试编写脚本来使用cpulimit控制VM n KVM的cpu使用率。使用cpulimit我可以通过pid say 2112限制VM的cpu使用率,方法是:
我想写一个可以打开界面的脚本
可以调用任意次,我将覆盖现有限制。我可以通过将限制值添加为正在运行的cpulimit进程的运行时参数来覆盖现有限制。类似于subprocess.Popen(...,stdin = subprocess.PIPE)。对于如何获取正在运行的进程并提供运行时参数,我有些困惑。例如(不带脚本):
现在它将为该过程设置一个上限,现在我只需输入
覆盖现有限制。我想编写这种行为的脚本。如果您可以提供有关如何编写此脚本的指针或想法,那将是很棒的。非常感谢
最佳答案
编辑:如果您需要与现有的cpulimit
对话,则应查看How to write data to existing process's STDIN from external process?的可接受答案
基本上,做
(while [ 1 ]; do sleep 1; done) | ./cpulimit -p 2112 -l 50.
当您启动
cpulimit
时,因为它的输入必须是管道。然后,从Python写入
/proc/{pid_of_cpulimit}/fd/0
。如果您生成了一个带有
process = subprocess.Popen(['./cpulimit', '-p', '2112', '-l', '50'], stdin=subprocess.PIPE)
做就是了
process.communicate(input='40')
process.communicate(input='80')