本文主要是介绍Linux Kernel调度管理之sched_dl_entity,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
sched_dl_entity是最终期限调度实体描述:
struct sched_dl_entity { struct rb_node rb_node; /* * Original scheduling parameters. Copied here from sched_attr * during sched_setattr(), they will remain the same until * the next sched_setattr(). */ u64 dl_runtime; /* maximum runtime for each instance */ u64 dl_deadline; /* relative deadline of each instance */ u64 dl_period; /* separation of two instances (period) */ u64 dl_bw; /* dl_runtime / dl_deadline */ /* * Actual scheduling parameters. Initialized with the values above, * they are continously updated during task execution. Note that * the remaining runtime could be < 0 in case we are in overrun. */ s64 runtime; /* remaining runtime for this instance */ u64 deadline; /* absolute deadline for this instance */ unsigned int flags; /* specifying the scheduler behaviour */ /* * Some bool flags: * * @dl_throttled tells if we exhausted the runtime. If so, the * task has to wait for a replenishment to be performed at the * next firing of dl_timer. * * @dl_boosted tells if we are boosted due to DI. If so we are * outside bandwidth enforcement mechanism (but only until we * exit the critical section); * * @dl_yielded tells if task gave up the cpu before consuming * all its available runtime during the last job. */ int dl_throttled, dl_boosted, dl_yielded; /* * Bandwidth enforcement timer. Each -deadline task has its * own bandwidth to be enforced, thus we need one timer per task. */ struct hrtimer dl_timer; };
DL调度实体也是内嵌在进程描述符中。
这篇关于Linux Kernel调度管理之sched_dl_entity的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!