CFS调度程序:更改任务的vruntime以减慢它的速度

时间:2012-05-30 11:59:29

标签: linux linux-kernel scheduling

我想以某种方式修改cfs,对于特定的进程id(将在运行时由sysctl或/ proc文件系统定义)vruntime(任务运行的时间量和红色的索引) cfs的黑树是人工增加的,所以cfs认为这个过程已经运行了很长时间,而实际上它已经运行了,比方说,那个时间的一半......

我想要获得通常使用50%cpu的相同进程的goad,并使它们使用例如10%和90%......

想法?如果我只是去编辑vruntime那么红黑树会搞乱,应该用什么函数来调整sched_entity中任务的vruntime?

1 个答案:

答案 0 :(得分:0)

你不需要在内核中执行它。(你的最终目标不是欺骗cfs)。 如果我理解,您需要使用较低的CPU使用率来运行特定的进程。

  1. 您可以使用较低的调度优先级启动特定进程。

    很好-n 10 your_process参数

    您可以输入“man nice”来获取更多信息

  2. 如果您可以更改特定流程的代码,则可以在代码中使用nice()。您也可以输入man 2 nice以获取更多信息

  3. 您可以使用cgroup / cpu来实现它。

    mount -t cgroup -ocpu cgroup / cgroup

    然后使用它。

  4. 我建议第一个。

    最后,如果您坚持使用内核,则可以尝试使用__dequeue_entity()将实体出列并更改vruntime,然后使用__enqueue_entity()将其插入。这只是一个提示,它可能是错误的,没有人喜欢吮吸黑客,这不是我的答案。