Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3752413pxj; Tue, 15 Jun 2021 07:57:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSa2Rhm9NXvbBSZ4QWvPZ/KCViKwalDtJ2pFR28bgSMQ8dpgafw3M3aTCspyv1XwfpWxcu X-Received: by 2002:a17:906:ce4a:: with SMTP id se10mr22253272ejb.235.1623769042005; Tue, 15 Jun 2021 07:57:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623769041; cv=none; d=google.com; s=arc-20160816; b=dTQdCf0Wyk9X0zrDnXk2uhbawTAJW5KAJoc5psT2Kxz8HOY8ELzt1Wa/9JtUsoU9cb 0FdQuNaUszP/kzBRgz754uPQFCMASkgk8OZT2yB+uxFTdwbdDMg8Pu0JV7z+jNZdN6xD Z9SVWsWTrFoM7OMBv5zCaSXW5vTGexKlGrpFNfjtPfb1j0OHhmWl8Q5FpSH3H/Gw3fjL D8ggRDGnXFOXkCOmlYFvGxgJq9uxxpPBS63uHMgD9COzq908rZCKaZBjacLpwnt1o3Su NDdfr5JY/iTewRWgq9U+mHtWyRCFnU+l6ozuJbT3jdWHl9r831PpRuQAdzKjgzvPpb/h BjJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from; bh=oiY11Bm0v7XRa6wXdbz5kRoFLIgC0HprRR/Ore0y128=; b=dn35d8K6re44Go6SbFU4WVZiv2BV/xHPWVheDsXxrXvdjDVWKfpqGlBD2qd9yqt+J3 AIFR2rhSxJU3jJr0usdcnsDO36OFiPLNhqdNLDQsv2g7n3L19cpoAHMPsmsz1RhlPdS7 7YLWbEkEdB+V7WjqzBuPwrZSC+GPNlkPd+JuW/2agJ0axPdyoybguOyxKnZvwm7Emc5z wDwtebhSJox4+kA/+mFYBuwq210qKY4iUiFtmmEwDzMKTzMeAUR7swQP5CFRwI9ypDhY oFNK1jlOUZ3s7nw3nklYQvDNUWegqivzTPCMdw4tWyiNcGX4f3r3nPS6xO3RpHwymYbB ZyTA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z2si242369edr.77.2021.06.15.07.56.59; Tue, 15 Jun 2021 07:57:21 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231602AbhFOO5n (ORCPT + 99 others); Tue, 15 Jun 2021 10:57:43 -0400 Received: from foss.arm.com ([217.140.110.172]:37730 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231609AbhFOO51 (ORCPT ); Tue, 15 Jun 2021 10:57:27 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5714DD6E; Tue, 15 Jun 2021 07:55:22 -0700 (PDT) Received: from e113632-lin (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C2A163F70D; Tue, 15 Jun 2021 07:55:20 -0700 (PDT) From: Valentin Schneider To: Yafang Shao , vincent.guittot@linaro.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com Cc: linux-kernel@vger.kernel.org, Yafang Shao Subject: Re: [PATCH] sched, fair: try to prevent migration thread from preempting non-cfs task In-Reply-To: <20210615121551.31138-1-laoar.shao@gmail.com> References: <20210615121551.31138-1-laoar.shao@gmail.com> Date: Tue, 15 Jun 2021 15:55:15 +0100 Message-ID: <87mtrrb2jw.mognet@arm.com> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 15/06/21 20:15, Yafang Shao wrote: > - Prev version > https://lore.kernel.org/lkml/CAKfTPtBd349eyDhA5ThCAHFd83cGMQKb_LDxD4QvyP-cJOBjqA@mail.gmail.com/ > > - Similar discussion > https://lore.kernel.org/lkml/CAKfTPtBygNcVewbb0GQOP5xxO96am3YeTZNP5dK9BxKHJJAL-g@mail.gmail.com/ I knew that sounded familiar :-) > --- > kernel/sched/fair.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 3248e24a90b0..597c7a940746 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -9797,6 +9797,20 @@ static int load_balance(int this_cpu, struct rq *this_rq, > /* Record that we found at least one task that could run on this_cpu */ > env.flags &= ~LBF_ALL_PINNED; > > + /* > + * There may be a race between load balance starting migration > + * thread to pull the cfs running thread and the RT thread > + * waking up and preempting cfs task before migration threads > + * which then preempt the RT thread. > + * We'd better do the last minute check before starting > + * migration thread to avoid preempting latency-sensitive thread. > + */ This can be summarized as in the below, no? /* * Don't cause a higher-than-CFS task to be preempted by * the CPU stopper. */ > + if (busiest->curr->sched_class != &fair_sched_class) { > + raw_spin_unlock_irqrestore(&busiest->lock, > + flags); > + goto out; Since you goto out this could be moved before the env.flags &= ~LBF_ALL_PINNED; above (it only has an impact if you'd goto out_balanced). > + } > + Other than the above, this looks OK to me. Back then I had argued that having a >CFS task and holding the remote rq lock could let us invoke detach_one_task() locally (rather than on the stopper thread), but realistically if we got to this !ld_moved condition then the chances of us actually pulling something here are very slim (we'd depend on enqueues happening between ~detach_tasks() and here). > /* > * ->active_balance synchronizes accesses to > * ->active_balance_work. Once set, it's cleared > -- > 2.17.1