Messages in this thread | | | From | Con Kolivas <> | Subject | Re: RSDL v0.31 | Date | Fri, 23 Mar 2007 09:03:20 +1100 |
| |
All code reviews are most welcome indeed!
On Thursday 22 March 2007 20:18, Ingo Molnar wrote: > * Mike Galbraith <efault@gmx.de> wrote: > > Actually, the numbers are an interesting curiosity point, but not as > > interesting as the fact that the deadline mechanism isn't kicking in. > > it's not just the scheduling accounting being off, RSDL also seems to be
I'll look at that when I have time.
> accessing stale data here: > > >From pull_task(): > > > > /* > > * If this task has already been running on src_rq this priority > > * cycle, make the new runqueue think it has been on its cycle > > */ > > if (p->rotation == src_rq->prio_rotation) > > p->rotation = this_rq->prio_rotation; > > > > The intent here is clearly that this task continue on the new cpu as > > if nothing has happened. However, when the task was dequeued, > > p->array was left as it was, points to the last place it was queued. > > Stale data.
I don't think this is a problem because immediately after this in pull_task it calls enqueue_task() which always updates p->array in recalc_task_prio(). Every enqueue_task always calls recalc_task_prio on non-rt tasks so the array should always be set no matter where the entry point to scheduling is from unless I have a logic error in setting the p->array in recalc_task_prio() or there is another path to schedule() that I've not accounted for by making sure recalc_task_prio is done.
> it might point to a hot-unplugged CPU's runqueue as well. Which might > work accidentally, but we want this fixed nevertheless.
The hot unplugged cpu's prio_rotation will be examined, and then it sets the prio_rotation from this runqueue's value. That shouldn't lead to any more problems than setting the timestamp based on the hot unplug cpus timestamp lower down also in pull_task()
p->timestamp = (p->timestamp - src_rq->most_recent_timestamp) + this_rq->most_recent_timestamp;
Thanks for looking!
-- -ck - 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/
| |