Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp3661529rwb; Mon, 3 Oct 2022 19:45:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5LkXfTDvb7Q3pybTlxWUb82qB93As3FnzhF6VHL6/AmVw2Kyw9+c54NPW9HWgHReGCkDl3 X-Received: by 2002:a17:907:2705:b0:78b:6559:a692 with SMTP id w5-20020a170907270500b0078b6559a692mr5757847ejk.688.1664851524331; Mon, 03 Oct 2022 19:45:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664851524; cv=none; d=google.com; s=arc-20160816; b=aIHrtKqDy1dlVgmck+TadgMXLwMYsVsy2Fb4i/kBiwXYRcbW8cvIv3aL/zLa8F+dc5 IgfUGXk+tUt6+fYroMNeM9WYGDpS2O0HrzvUZPcoRQgjEZT5qA94mcG80Y+SbxMtNbiy VVvDG8Jm6o8ism5bkhMsS+WjLmNU/pYfQu6FVz5/4h43vALHMWwsgcxFmzJqtZKc0oht ZFHgcBMWh3MgjqFHZE6dbZIEcJE2RIhdqNJ9JYotLu00yuOmaa3HmRmTLd/cmPV1kvqU LEhv4W0ORmScBWrL8oltm1qf9yauOoTYtvvn8ji1BCBlfAR5XTS0kMEHWg5YomnojO4o OVpA== 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=LXc/Zr9rQnUyqTp1Msxz0HMk29xy25iHM+OGOUqnh3g=; b=DL/wVN2EbVU6tkxzRZbuXxId92E4PBCQ20//od/N8qMXlk7cOiUQlFYxhoj+G7Gg14 tBtDvYsl2VyskEl9Ay2jbU+e5lZiC523eTUtsDB8HJ8VsXbQxFcNiYGQydowrMUneIE8 Dg4kzb8N0oZNsTI9G/PusBC4RJe//Sks65QPAuju5IR+Qt39+VyahImFqhCQ5f2L45PS ELlQTgzyG8ncPIxxIIW5OHPLA3/QOu7TedmXhPB6R/cRDKZcxiWNeVHNVNjBCFgkdzvS IAHiafIHYP+Y2VoB4orXjMxad/ZVKxvhwywLrmqcbjur9QFg+LTchThqQNtHpsm7WIxl X87Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=P+9IwY0l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ga10-20020a1709070c0a00b007815a44de91si10138433ejc.771.2022.10.03.19.44.59; Mon, 03 Oct 2022 19:45:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=P+9IwY0l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229671AbiJDC3y (ORCPT + 99 others); Mon, 3 Oct 2022 22:29:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229495AbiJDC3v (ORCPT ); Mon, 3 Oct 2022 22:29:51 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C59563B1 for ; Mon, 3 Oct 2022 19:29:50 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id f37so842059lfv.8 for ; Mon, 03 Oct 2022 19:29:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=LXc/Zr9rQnUyqTp1Msxz0HMk29xy25iHM+OGOUqnh3g=; b=P+9IwY0lgP4SjANLp/p6iC3wXSkCq1AxDeGJ0pqe4skyVfuFjM1M9zc/uAOrvH2PmB iJtz8uJl+JevvJjA5NF5/ETPwATuYwT2epaVgFLTusaz7g+T9e+TieLroDz6JBlFAX19 Zz8gflffjQws1LnCy66HzYKz6lRkPZIP7kPKmQwax6veEg/svrGogvGXm3ImsfpFBA7c lkAiZgKqdCe6OGwz7402FAi/nrfYc9sPNH1HHLYXQZhUbTQc8M83JO327+AHaCaoM/OA BF4HMUlg5AziqwMl6iN2JAFlr5q0Z2I79K50LcKOxWuzVKSl4b73F3h7lo59z9OcZhy0 tUCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=LXc/Zr9rQnUyqTp1Msxz0HMk29xy25iHM+OGOUqnh3g=; b=bZbA7U4fSN96hADtVU/yoajIVZcy7jVhxMaJXDi+DIKcZjdNR//8KQCsDOWTUoAJRK UzbfpWUSow7FO2Qq2+iVdOdQSmh5o6J3qhtsZlBonuESNgOPKXH7zW+uD+bHoPbNprU9 s8IX6X1vqPh4ldbuw2gIGrVB8Bt8VMUBzmWUvaRnugTd+odGcpDLK3Dxp/3NfBpdGuDp ThXzi59O3Bm4isdIyxgIbRyNxDmjnyze3MaqezDugAVX0G/A2OylQuiJvCkiwnnPJkCN gfEaJAEaBtFOSZ8WWQVlcF1F87U0Emw+t4ACD+a94I3kTaCv0jsZmnyEsq1fjRXSj/Se X/lA== X-Gm-Message-State: ACrzQf0K6jclnkLHwb+0EoT4NrMWC/TNxwfW3zmqm1VDhscwvAXqlO4y soMxlTSAk0MoMSo6kZXV+ILu3aIRgeHlDtBhOItrjCYZHg== X-Received: by 2002:a05:6512:33d5:b0:49a:d2dc:e1e3 with SMTP id d21-20020a05651233d500b0049ad2dce1e3mr7608239lfg.628.1664850589042; Mon, 03 Oct 2022 19:29:49 -0700 (PDT) MIME-Version: 1.0 References: <20221003232033.3404802-3-jstultz@google.com> <20221004013611.1822-1-hdanton@sina.com> In-Reply-To: <20221004013611.1822-1-hdanton@sina.com> From: John Stultz Date: Mon, 3 Oct 2022 19:29:36 -0700 Message-ID: Subject: Re: [RFC PATCH v4 2/3] sched: Avoid placing RT threads on cores handling long softirqs To: Hillf Danton Cc: LKML , linux-mm@kvack.org, "Connor O'Brien" , Qais Yousef , Peter Zijlstra , Steven Rostedt Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 3, 2022 at 6:56 PM Hillf Danton wrote: > On 3 Oct 2022 23:20:32 +0000 John Stultz > > +#ifdef CONFIG_RT_SOFTIRQ_OPTIMIZATION > > +#define __use_softirq_opt 1 > > +/* > > + * Return whether the given cpu is currently non-preemptible > > + * while handling a potentially long softirq, or if the current > > + * task is likely to block preemptions soon because it is a > > + * ksoftirq thread that is handling slow softirq. > > + */ > > +static bool cpu_busy_with_softirqs(int cpu) > > +{ > > + u32 softirqs = per_cpu(active_softirqs, cpu) | > > + __cpu_softirq_pending(cpu); > > + struct task_struct *cpu_ksoftirqd = per_cpu(ksoftirqd, cpu); > > + struct task_struct *curr; > > + struct rq *rq = cpu_rq(cpu); > > + int ret; > > + > > + rcu_read_lock(); > > + curr = READ_ONCE(rq->curr); /* unlocked access */ > > + ret = (softirqs & LONG_SOFTIRQ_MASK) && > > + (curr == cpu_ksoftirqd || > > + preempt_count() & SOFTIRQ_MASK); > > + rcu_read_unlock(); > > + return ret; > > +} > > +#else > > +#define __use_softirq_opt 0 > > +static bool cpu_busy_with_softirqs(int cpu) > > +{ > > + return false; > > +} > > +#endif /* CONFIG_RT_SOFTIRQ_OPTIMIZATION */ > > + > > +static bool rt_task_fits_cpu(struct task_struct *p, int cpu) > > +{ > > + return !cpu_busy_with_softirqs(cpu) && rt_task_fits_capacity(p, cpu); > > +} > > On one hand, RT task is not layency sensitive enough if it fails to preempt > ksoftirqd. On the other, deferring softirq to ksoftirqd barely makes sense > in 3/3 if it preempts the current RT task. Apologies, I'm not sure I'm following you here. Why would ksoftirqd preempt the rt task? thanks -john