From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S969195AbdAELtz (ORCPT ); Thu, 5 Jan 2017 06:49:55 -0500 Received: from merlin.infradead.org ([205.233.59.134]:46800 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752251AbdAELts (ORCPT ); Thu, 5 Jan 2017 06:49:48 -0500 Date: Thu, 5 Jan 2017 12:48:38 +0100 From: Peter Zijlstra To: luca abeni Cc: linux-kernel@vger.kernel.org, Juri Lelli , Daniel Bristot de Oliveira Subject: Re: Doubt about push_dl_task() / find_lock_later_rq() Message-ID: <20170105114838.GJ3093@worktop> References: <20170104154935.7f08d550@sweethome> <20170105082923.639adcf9@sweethome> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170105082923.639adcf9@sweethome> User-Agent: Mutt/1.5.22.1 (2013-10-16) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 05, 2017 at 08:29:23AM +0100, luca abeni wrote: > On Wed, 4 Jan 2017 15:49:35 +0100 > luca abeni wrote: > > > Hi all, > > > > trying to debug a reclaiming issue discovered by Daniel, I find myself > > confused by the push logic... Maybe I am misunderstanding something > > very obvious, so I ask here: > > > > - push_dl_task() selects a task to be pushed, and then searches for a > > runqueue to push the task to by calling find_lock_later_rq() > > - if I understand well, find_lock_later_rq() checks all the candidate > > runqueues for pushing, and then compares the deadline of the task > > with "dl.earliest_dl.curr" of the candidate runqueue, to check if > > pushing the task there makes sense or not > > - now, my understanding is that in order to implement gEDF task T must > > be pushed on CPU C if the deadline of T is smaller than the earliest > > deadline of tasks on C... That is to say, the deadline of T must be > > smaller than the deadline of the task that is currently executing on > > C... No? > > - But as far as I understand "dl.earliest_dl.curr" is the earliest > > deadline of _pushable_ tasks that are on the remote runqueue... > > So, after re-reading the code I now see that my understanding here was > wrong: "dl.earliest_dl.curr" is really supposed to be the deadline of > the earliest deadline task on the runqueue... So, if I do not play > with affinities it should be the deadline of the task that is currently > executing on that CPU. > So, everything is fine. Right, that's what I remember. > > I was confused by the fact that in some cases I saw > rq->dl.earliest_dl.curr != rq->curr->dl.deadline > > I still do not understand how this can happen (I am not changing tasks > affinities), and I am investigating this. I'm having trouble spotting code that does that...