CFS调度程序:更改任务的vruntime以减慢速度
我想修改cfs的方式是:对于特定的进程id(它将在运行时由sysctl或/ proc文件系统定义)vruntime(任务运行的时间量和对于红黑树的索引cfs)是人为增加的,所以cfs认为这个过程已经运行了很长一段时间,而实际上它已经运行了,比方说,一半时间..
我想要实现相同的进程,通常每个CPU使用50%,并使它们使用例如10%和90%......
想法? 如果我只是去编辑vruntime,那么红黑树会搞乱,应该用什么函数来调整sched_entity中任务的vruntime?
你不需要在内核中执行它(你的最终目标不是欺骗cfs)。 如果我明白了,您需要使用较低的CPU使用率来运行特定的进程。
您可以以较低的调度优先级启动特定的进程。
nice -n 10 your_process参数
你可以输入`man nice'来获取更多信息
如果您可以更改特定进程的代码,则可以在代码中使用nice()
。 您也可以输入man 2 nice
以获取更多信息
你可以使用cgroup / cpu来实现它。
mount -t cgroup -ocpu cgroup / cgroup
然后使用它。
我建议第一个。
最后,如果你坚持使用内核,你可以尝试使用__dequeue_entity()来使实体出列并更改vruntime,然后使用__enqueue_entity()将其插回。 这只是一个暗示,它可能是错误的,没有人喜欢吮吸黑客,这不是我的答案。
链接地址: http://www.djcxy.com/p/84873.html