Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1088605pxu; Thu, 26 Nov 2020 22:29:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdvJjJmah5war2k+HhcF2WKOdhXzWqZgU4C8REKpMAVemCBx9eCRZfTMICuu/ywHrhKjEb X-Received: by 2002:a17:906:4805:: with SMTP id w5mr6083217ejq.378.1606458589186; Thu, 26 Nov 2020 22:29:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606458589; cv=none; d=google.com; s=arc-20160816; b=vhjdRCNeesDaAUKL86yoD95kXCt+VBmHFd414KKIjpPDzxIb468SKmk/zGZ270KcT6 S0sfAqWbRCWgETHBQyRDHR/2kK3TW1sxsrldjYzkfeYbhUsz7lIGAPEU9txL4Y64RvHX fn8fOIAwPsfPa2b5ljxi6ieD8C99cei9Uv45MT+ivMmyw8Be90nfIbda/6IAiNE80aeg xINS9KWjBP7/xHnMx/GK/eSddc/dgUsbgTnx5SG5XGMH8NnYPQ10+UiYh2IVyMYb7nZN gxffgVwaUFzBGwygBw9zIVEYtmUGj0QbDz2avdxB9PV6EU3nUDkuRsMDwPd0rZUaS/Cb SOVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=F3gSDfUsKRUY3FZX1HOALC3kUdm90Fc5VLcRsSCj8q8=; b=kihT0CXIJYaL85uo2DbQk3/IPt5heqs8H4gKrLV4WcskIX+EpzmCwLRb2mVtp5Fu26 i/HoIbWFWXCpBL+jhMrkb312QRzRSN/4PxOM6bi42oMLVAdTI/dZXEZeNMkBscdVCzrI UUrQcwnbyoyiVqs4kKLnKNPcfrNOYd6656Z2OhZj6twKV5V7+bfkVLHFZimFR1YAY58a RUEaLFHOi3huzcF+zIUTcIY0+S7/Hw31DLE/SpRjZG0VKwHy7o+IvI+QkWVxuJH5LyZn 03zE86dT+skaHp/YwQAKFae2KoVJhdwRVoQyCgFWc+dDGJdIaxGr3ogzzLREwXGC+41W t+/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nnymFjQm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f3si4513914edy.186.2020.11.26.22.29.26; Thu, 26 Nov 2020 22:29:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nnymFjQm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387509AbgKZKSC (ORCPT + 99 others); Thu, 26 Nov 2020 05:18:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726099AbgKZKSB (ORCPT ); Thu, 26 Nov 2020 05:18:01 -0500 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B561C0613D4 for ; Thu, 26 Nov 2020 02:18:01 -0800 (PST) Received: by mail-lj1-x22c.google.com with SMTP id s9so1710901ljo.11 for ; Thu, 26 Nov 2020 02:18:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=F3gSDfUsKRUY3FZX1HOALC3kUdm90Fc5VLcRsSCj8q8=; b=nnymFjQm/mN5O96fAZhiLaPH+OGvEJvz1VHlRqbEinYSBTvXnZkVwKrixyYtBJpFlS kqTM3h+dkgoBwHFIoAqXypp1t9SjuJS7cZrowMZ9RzzbPHDMSIqvL0QvOTbXxkXLdYRx WOMwGRDYQx8ch+Zwj/SumPp7/nFz/aYjcvh4uKNhPuGxOC9EViOruQJfd70HCrfOXxqI fSkFtkVJ867xiNKI8etNYZDRpTvOiwjj2A75SFoB8ZzYVhPN3L65P+X6OshhNBP20+1J H5GUmHDhoQV6Es7Eh2ydxN5qSEumiK9WrYEV6DRMPC2kJSRquJdlZnqNjKjtdlLI3Nq2 o04w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=F3gSDfUsKRUY3FZX1HOALC3kUdm90Fc5VLcRsSCj8q8=; b=c2TrZAD+WQq1Msqe/5jN/D8BNsF+rVJTm2K7ARlqQJAHEsGyYdcCTVOReU7DhKKuLJ 3pV7UzA7WW7wqPKiUCb7fFl6Tt/jlyknooaqKG8e2DmdxqpraQgnK42xn0zv9XLdloh1 IePTkMDSYl2W2lGEcMbdKJnsx4qaJht6FT9KVX13fw4nL9ZgBtS4AZSSmsc4PzzrueIc zc81PHlifACFcZC+buGNdj8WBsvNrKSZssqV6HBLDE904iMBn8ycf3FeiaNdNGUpBVsE MaswArVDV1bznCEKFx+QNy0rdnsMXUCAKmiRzh6hFZYaHIV6/bsZzsMzMGm0cBo0TIq+ pa2A== X-Gm-Message-State: AOAM533XoiUkNngAG0yLgD63jP+6ZyggqYvomS37fCk68vRB/5iBbI0q G/CLKy+/WtmhL1Paks+ycCmDBg5WJ49tQIjlxS8Xpw== X-Received: by 2002:a2e:8050:: with SMTP id p16mr1024017ljg.69.1606385879690; Thu, 26 Nov 2020 02:17:59 -0800 (PST) MIME-Version: 1.0 References: <20201117232003.3580179-1-joel@joelfernandes.org> <20201117232003.3580179-3-joel@joelfernandes.org> <20201126090710.GF2414@hirez.programming.kicks-ass.net> In-Reply-To: <20201126090710.GF2414@hirez.programming.kicks-ass.net> From: Vincent Guittot Date: Thu, 26 Nov 2020 11:17:48 +0100 Message-ID: Subject: Re: [PATCH -tip 02/32] sched: Introduce sched_class::pick_task() To: Peter Zijlstra Cc: "Joel Fernandes (Google)" , Nishanth Aravamudan , Julien Desfossez , Tim Chen , Vineeth Pillai , Aaron Lu , Aubrey Li , Thomas Gleixner , linux-kernel , Ingo Molnar , Linus Torvalds , Frederic Weisbecker , Kees Cook , Greg Kerr , Phil Auld , Valentin Schneider , Mel Gorman , Pawan Gupta , Paolo Bonzini , vineeth@bitbyteword.org, Chen Yu , Christian Brauner , Agata Gruza , Antonio Gomez Iglesias , graf@amazon.com, konrad.wilk@oracle.com, dfaggioli@suse.com, Paul Turner , Steven Rostedt , Patrick Bellasi , Jiang Biao , Alexandre Chartre , James Bottomley , OWeisse@umich.edu, Dhaval Giani , Junaid Shahid , jsbarnes@google.com, "Hyser,Chris" , Ben Segall , Josh Don , Hao Luo , Tom Lendacky , Aubrey Li , "Paul E. McKenney" , Tim Chen Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 26 Nov 2020 at 10:07, Peter Zijlstra wrote: > > On Wed, Nov 25, 2020 at 05:28:36PM +0100, Vincent Guittot wrote: > > On Wed, 18 Nov 2020 at 00:20, Joel Fernandes (Google) > > > > +#ifdef CONFIG_SMP > > > +static struct task_struct *pick_task_fair(struct rq *rq) > > > +{ > > > + struct cfs_rq *cfs_rq = &rq->cfs; > > > + struct sched_entity *se; > > > + > > > + if (!cfs_rq->nr_running) > > > + return NULL; > > > + > > > + do { > > > + struct sched_entity *curr = cfs_rq->curr; > > > + > > > + se = pick_next_entity(cfs_rq, NULL); > > > > Calling pick_next_entity clears buddies. This is fine without > > coresched because the se will be the next one. But calling > > pick_task_fair doesn't mean that the se will be used > > Urgh, nice one :/ > > > > + > > > + if (curr) { > > > + if (se && curr->on_rq) > > > + update_curr(cfs_rq); > > > + > > > > Shouldn't you check if cfs_rq is throttled ? > > Hmm,... I suppose we do. > > > > + if (!se || entity_before(curr, se)) > > > + se = curr; > > > + } > > > + > > > + cfs_rq = group_cfs_rq(se); > > > + } while (cfs_rq); > > > + > > > + return task_of(se); > > > +} > > > +#endif > > Something like so then? yes. it seems ok > > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4354,6 +4354,8 @@ check_preempt_tick(struct cfs_rq *cfs_rq > static void > set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) > { > + clear_buddies(cfs_rq, se); > + > /* 'current' is not kept within the tree. */ > if (se->on_rq) { > /* > @@ -4440,8 +4442,6 @@ pick_next_entity(struct cfs_rq *cfs_rq, > se = cfs_rq->last; > } > > - clear_buddies(cfs_rq, se); > - > return se; > } > > @@ -6982,20 +6982,29 @@ static void check_preempt_wakeup(struct > #ifdef CONFIG_SMP > static struct task_struct *pick_task_fair(struct rq *rq) > { > - struct cfs_rq *cfs_rq = &rq->cfs; > struct sched_entity *se; > - > + struct cfs_rq *cfs_rq; > + > +again: > + cfs_rq = &rq->cfs; > if (!cfs_rq->nr_running) > return NULL; > > do { > struct sched_entity *curr = cfs_rq->curr; > > - if (curr && curr->on_rq) > - update_curr(cfs_rq); > + /* When we pick for a remote RQ, we'll not have done put_prev_entity() */ > + if (curr) { > + if (curr->on_rq) > + update_curr(cfs_rq); > + else > + curr = NULL; > > - se = pick_next_entity(cfs_rq, curr); > + if (unlikely(check_cfs_rq_runtime(cfs_rq))) > + goto again; > + } > > + se = pick_next_entity(cfs_rq, curr); > cfs_rq = group_cfs_rq(se); > } while (cfs_rq); >