2

我想以某种方式修改 cfs,对于特定进程 id(将在运行时由 sysctl 或 /proc 文件系统定义)vruntime(任务运行的时间量和红黑树的索引) cfs) 被人为地增强,因此 cfs 认为该进程已经运行了很长时间,而实际上它已经运行了,比如说,一半的时间。

我想实现必须使用通常每个 cpu 50% 的相同进程的目标,并让它们使用例如 10% 和 90% ......

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

4

1 回答 1

1

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

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

    nice -n 10 your_process 参数

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

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

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

    mount -t cgroup -ocpu cgroup /cgroup

    然后使用它。

我建议第一个。

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

于 2012-07-13T08:27:44.397 回答