Re: [patch 1/1] sched: update_curr versus correct cfs_rq in check_preempt_wakeup

From: Paul Turner
Date: Tue Jul 05 2011 - 21:55:46 EST


On Sat, Jul 2, 2011 at 2:57 AM, Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> wrote:
> On Sat, 2011-07-02 at 11:08 +0200, Ingo Molnar wrote:
>> * Paul Turner <pjt@xxxxxxxxxx> wrote:
>>
>> > We update_curr() versus the current entity as the preemption
>> > decision is based on the relative vruntime.  However, update_curr()
>> > is not hierarchical and in the group scheduling case
>> > find_matching_se() will have us making the comparison on a cfs_rq
>> > different to the one just updated.
>>
>> Would be nice to include more contextual information in the
>> changelog: how did you find it, what effect (if any) did you
>> see from this patch, what effect do you expect others to see
>> (if any).
>
> Agreed that the Changelog can be improved. From talking to pjt on IRC
> though, I think he spotted this by reading through the code.
>
> The effect of not updating the correct se for comparison is that you
> compare the new task to old data of the existing task, thereby giving a
> slight preference to the old task (its further to the left than it
> should be and thus more desirable to run).
>
> That said, I'm not quite sure the patch is correct though, both se and
> pse can change in find_match_se(), maybe we should do update_curr() on
> every se we traverse in there, or at least the final two.
>

For the pre-emption decision we only need to update on the final
entity reached as the other levels do not factor into the decision
(and will be updated later).

We also don't need to worry about updates versus pse as until we reach
a common parent there can be no current entity for these levels (and
once we reach a common parent we're on the same cfs_rq anyway).


>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/