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