Messages in this thread | | | Date | Thu, 12 Apr 2012 20:56:04 +0800 | Subject | Re: [PATCH 06/16] sched: SCHED_DEADLINE push and pull logic | From | Hillf Danton <> |
| |
On Thu, Apr 12, 2012 at 8:51 PM, Steven Rostedt <rostedt@goodmis.org> wrote: > On Thu, 2012-04-12 at 20:28 +0800, Hillf Danton wrote: >> On Wed, Apr 11, 2012 at 10:10 PM, Steven Rostedt <rostedt@goodmis.org> wrote: >> > On Fri, 2012-04-06 at 21:39 +0800, Hillf Danton wrote: >> > >> >> > +static void inc_dl_migration(struct sched_dl_entity *dl_se, struct dl_rq *dl_rq) >> >> > +{ >> >> > + dl_rq = &rq_of_dl_rq(dl_rq)->dl; >> >> > + >> >> > + dl_rq->dl_nr_total++; >> >> > + if (dl_se->nr_cpus_allowed > 1) >> >> > + dl_rq->dl_nr_migratory++; >> >> > + >> >> > + update_dl_migration(dl_rq); >> >> >> >> if (dl_se->nr_cpus_allowed > 1) { >> >> dl_rq->dl_nr_migratory++; >> >> /* No change in migratory, no update of migration */ >> > >> > This is not true. As dl_nr_total changed. If there was only one dl task >> > queued that can migrate, and then another dl task is queued but this >> > task can not migrate, the update_dl_migration still needs to be called. >> > As dl_nr_migratory would be 1, but now dl_nr_total > 1. This means we >> > are now overloaded. >> > > > You're speaking in riddles. > >> if (2 == dl_nr_migratory + dl_nr_total) >> rq was not overloaded; >> >> after enqueuing a deadline task that is not migratory, > > Now rq would be overloaded because: > > dl_nr_migratory + dl_nr_total == 3 >
Which is the current task, and where?
> >> >> if (current task is not preempted) >> rq remains not overloaded; > > s/not// > >> >> else if (current task is not pushed out) { >> if (rq is not overloaded) >> maintenance of overloaded is __corrupted__; >> } >> >> btw, same behavior in RTS? > > I still don't understand what you are saying. > > I can see your scenario happening with the change you are suggesting > though. > > -- Steve > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |