0

感谢您花时间阅读我的问题。我将继续进行一些假设,所以如果我说的事实不正确,请纠正我。

在函数pick_next_task_fair()中,通常要选择的下一个任务组是包含与min_vruntime值关联的任务的任务组。cfs_rq我想改为手动干预,并将所需的任务组放在它所属的最左侧,只是为了探索它的效果。

所以我的主要问题是:

  1. 可以只修改任务组的 CPU 份额吗?相同的标准是否也适用于 cgroup?
  2. 如果修改 CPU 份额不会使我达到我想要的目标,我需要做什么?

到目前为止,对于第二个问题,我有以下步骤:

  1. 识别感兴趣的任务组的调度实体,以及它所属的 CFS_RQ。
  2. 将该任务组的值更改为min_vruntime低于 CFS RQ 中当前最低值的值。
  3. 将其插入 CFS_RQ 的最左侧
  4. 再次运行 __schedule()。

但我真的不知道我可以使用的工具。我熟悉内核模块和 eBPF,但仅限于数据收集、跟踪和修改网络流量领域。不确定他们如何(甚至是否)可以修改内核数据结构。

如果我必须修改调度程序,那就这样吧 xD。但我以前从未这样做过,所以我不知道从哪里开始,也不知道我需要修改多少个文件。

非常感谢我能得到的任何输入!再次感谢您的宝贵时间。

4

0 回答 0