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

    上一篇: CFS scheduler: change vruntime of task to slow it down

    下一篇: How to schedule two processes if arrival time is same