提交 6830c8db 编写于 作者: L Linus Torvalds

Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Ingo Molnar:
 "Misc fixes: a documentation fix, a Sparse warning fix and a debugging
  fix"

* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/debug: Fix task state recording/printout
  sched/deadline: Don't use dubious signed bitfields
  sched/deadline: Fix the description of runtime accounting in the documentation
...@@ -204,10 +204,17 @@ CONTENTS ...@@ -204,10 +204,17 @@ CONTENTS
It does so by decrementing the runtime of the executing task Ti at a pace equal It does so by decrementing the runtime of the executing task Ti at a pace equal
to to
dq = -max{ Ui, (1 - Uinact) } dt dq = -max{ Ui / Umax, (1 - Uinact - Uextra) } dt
where Uinact is the inactive utilization, computed as (this_bq - running_bw), where:
and Ui is the bandwidth of task Ti.
- Ui is the bandwidth of task Ti;
- Umax is the maximum reclaimable utilization (subjected to RT throttling
limits);
- Uinact is the (per runqueue) inactive utilization, computed as
(this_bq - running_bw);
- Uextra is the (per runqueue) extra reclaimable utilization
(subjected to RT throttling limits).
Let's now see a trivial example of two deadline tasks with runtime equal Let's now see a trivial example of two deadline tasks with runtime equal
......
...@@ -473,10 +473,10 @@ struct sched_dl_entity { ...@@ -473,10 +473,10 @@ struct sched_dl_entity {
* conditions between the inactive timer handler and the wakeup * conditions between the inactive timer handler and the wakeup
* code. * code.
*/ */
int dl_throttled : 1; unsigned int dl_throttled : 1;
int dl_boosted : 1; unsigned int dl_boosted : 1;
int dl_yielded : 1; unsigned int dl_yielded : 1;
int dl_non_contending : 1; unsigned int dl_non_contending : 1;
/* /*
* Bandwidth enforcement timer. Each -deadline task has its * Bandwidth enforcement timer. Each -deadline task has its
......
...@@ -116,9 +116,9 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct * ...@@ -116,9 +116,9 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct *
* RUNNING (we will not have dequeued if state != RUNNING). * RUNNING (we will not have dequeued if state != RUNNING).
*/ */
if (preempt) if (preempt)
return TASK_STATE_MAX; return TASK_REPORT_MAX;
return task_state_index(p); return 1 << task_state_index(p);
} }
#endif /* CREATE_TRACE_POINTS */ #endif /* CREATE_TRACE_POINTS */
...@@ -164,7 +164,7 @@ TRACE_EVENT(sched_switch, ...@@ -164,7 +164,7 @@ TRACE_EVENT(sched_switch,
{ 0x40, "P" }, { 0x80, "I" }) : { 0x40, "P" }, { 0x80, "I" }) :
"R", "R",
__entry->prev_state & TASK_STATE_MAX ? "+" : "", __entry->prev_state & TASK_REPORT_MAX ? "+" : "",
__entry->next_comm, __entry->next_pid, __entry->next_prio) __entry->next_comm, __entry->next_pid, __entry->next_prio)
); );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册