Real-time group scheduling

Similar to group scheduling under CFS, real-time processes can also be grouped for scheduling with CONFIG_RT_GROUP_SCHED set. For group scheduling to succeed, each group must be assigned a portion of CPU time, with a guarantee that the timeslice is enough to run the tasks under each entity, or it fails. So "run time" (a portion of how much time a CPU can spend running in a period) is allocated per group. The run time allocated to one group will not be used by another group. CPU time that is not allocated for real-time groups will be used by normal-priority tasks and any time unused by the real-time entities will also be picked by the normal tasks. FIFO and RR groups are represented by struct sched_rt_entity:

struct sched_rt_entity {
struct list_head run_list;
unsigned long timeout;
unsigned long watchdog_stamp;
unsigned int time_slice;
unsigned short on_rq;
unsigned short on_list;

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
};
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.119.131.178