sched_rt_entity中数据成员的含义

时间:2012-10-07 23:06:47

标签: linux linux-kernel kernel

以下是linux调度中RT策略的实体类的代码。

struct sched_rt_entity {
     struct list_head run_list;
     unsigned long timeout;
     unsigned int time_slice;

     struct sched_rt_entity *back;
     #ifdef CONFIG_RT_GROUP_SCHED
     struct sched_rt_entity  *parent;
     /* rq on which this entity is (to be) queued: */
     struct rt_rq            *rt_rq;
     /* rq "owned" by this entity/group: */
     struct rt_rq            *my_q;
     #endif
};

列表已经实施时,数据成员back是什么。

我也不明白如何实施群组安排政策,特别是为什么需要my_rqrt_rq以及parent将指向谁。

timeout数据成员的含义是什么。

P.S: 我有很多这样的问题,任何人都可以提出一个好的阅读。

1 个答案:

答案 0 :(得分:2)

使用组调度时,没有单个队列,而是组树及其队列。例如,当两个用户各有一个调度组时,整个组/队列可能会为每个用户的组分配50%的CPU,而所有用户的程序都在其组的队列中并竞争50%。 有关多个队列如何工作的更详细说明,请参阅CFS group scheduling

parent指向树中一级的实体; rt_rq是运行此实体的队列,而my_q是此实体的子进程运行的队列。

back字段用作dequeue_rt_stack()函数中的临时存储来实现堆栈,其中我们有一个指向最低实体的指针,但是想要从顶层实体开始删除它们

监视程序计时器增加了

timeout并用于检查任务是否占用CPU的时间超过RLIMIT_RTTIME


没有关于最近内核更改的书籍。 使用来源,Luke。