Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp6043357ybv; Tue, 18 Feb 2020 08:47:43 -0800 (PST) X-Google-Smtp-Source: APXvYqxmycJjYysTHCaNJAoPoWO51HkiofSGZ1mQxxwI7k3dFosWx3XdiAdCkw0XDwfzVAdmR/RL X-Received: by 2002:aca:cf12:: with SMTP id f18mr1836803oig.81.1582044463011; Tue, 18 Feb 2020 08:47:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582044463; cv=none; d=google.com; s=arc-20160816; b=rhczead+4cm7eYCZGellrLKDvanOY+kOIZHZGZqvODbYhsOrg30Qa0x0HViu7W6ZQN +OnRarsg0Fsc83cvdRFOF7jKsSocBoDDtFc8o6aEAUFdP9qQyRktm+hhTdHFVopeus7+ lgQNu3jQTnJx31WVUpCHfPxln2278K40cwS9ZS/a+YY2f6QHBLm1M+o0cIrhGxyBh3s9 WKmCzB6ahd3g89ox5XetCKaiowyt11tz2SyYBqqg4p2BVPYjSp33++4ono3r5VjK4pCj MV6hcuoV6wIIa7zk/1wRAfqaBm2kmcmNEbymiCNmVsVM8SspBkqlgmkgS5uUccdwtGq8 ONOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=OnRwgMtsiuUI9qO3NZBD9zgErPE4VWq7Y8DLi1isfiY=; b=NcK94F87BHDbW3sGWgJY7z9yVwZ/ZScqxaLhLnjygGUuw127JJiMkvuLg8vKyo02ad mLioe5Ozl2vuYO9NA/9ZbPINUI36lszDnuzeZYL2LluJV1bWgFGVlUivkU8oETQ/uaqa suxB1pfjnPk7Mnz4FKuoi5sNS6UAq6aJ8li03Qr8CSY1r7UeY43asfHMzqfNvU1Vpcl1 2iBjRRR+bnP9nLlQJAJkA0NQQY+w59U8QtjZTCRz31gKBCbOCyrN2GCjV9h8kOnfYcKc q6ZeHSX2L6HelBrK678rB5SGqTeOuor5cpiEaegYTogJBvAD2g4XMhNBGd5B96uad0hN Z1BA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e20si8256515oig.199.2020.02.18.08.47.30; Tue, 18 Feb 2020 08:47:43 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726703AbgBRQrB (ORCPT + 99 others); Tue, 18 Feb 2020 11:47:01 -0500 Received: from mail.kernel.org ([198.145.29.99]:32838 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726399AbgBRQrB (ORCPT ); Tue, 18 Feb 2020 11:47:01 -0500 Received: from gandalf.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id E8E15208C4; Tue, 18 Feb 2020 16:46:59 +0000 (UTC) Date: Tue, 18 Feb 2020 11:46:58 -0500 From: Steven Rostedt To: Qais Yousef Cc: Dietmar Eggemann , Ingo Molnar , Peter Zijlstra , Pavan Kondeti , Juri Lelli , Vincent Guittot , Ben Segall , Mel Gorman , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] sched/rt: cpupri_find: implement fallback mechanism for !fit case Message-ID: <20200218114658.74236b3c@gandalf.local.home> In-Reply-To: <20200217234549.rpv3ns7bd7l6twqu@e107158-lin> References: <20200214163949.27850-1-qais.yousef@arm.com> <20200214163949.27850-2-qais.yousef@arm.com> <20200217234549.rpv3ns7bd7l6twqu@e107158-lin> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 17 Feb 2020 23:45:49 +0000 Qais Yousef wrote: > --- a/kernel/sched/rt.c > +++ b/kernel/sched/rt.c > @@ -14,6 +14,8 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun); > > struct rt_bandwidth def_rt_bandwidth; > > +typedef bool (*fitness_fn_t)(struct task_struct *p, int cpu); > + > static enum hrtimer_restart sched_rt_period_timer(struct hrtimer *timer) > { > struct rt_bandwidth *rt_b = > @@ -1708,6 +1710,7 @@ static int find_lowest_rq(struct task_struct *task) > struct cpumask *lowest_mask = this_cpu_cpumask_var_ptr(local_cpu_mask); > int this_cpu = smp_processor_id(); > int cpu = task_cpu(task); > + fitness_fn_t fitness_fn; > > /* Make sure the mask is initialized first */ > if (unlikely(!lowest_mask)) > @@ -1716,8 +1719,17 @@ static int find_lowest_rq(struct task_struct *task) > if (task->nr_cpus_allowed == 1) > return -1; /* No other targets possible */ > > + /* > + * Help cpupri_find avoid the cost of looking for a fitting CPU when > + * not really needed. > + */ > + if (static_branch_unlikely(&sched_asym_cpucapacity)) > + fitness_fn = rt_task_fits_capacity; > + else > + fitness_fn = NULL; > + > if (!cpupri_find(&task_rq(task)->rd->cpupri, task, lowest_mask, > - rt_task_fits_capacity)) > + fitness_fn)) > return -1; /* No targets found */ > > /* If we are going to use static branches, then lets just remove the parameter totally. That is, make two functions (with helpers), where one needs this fitness function the other does not. if (static_branch_unlikely(&sched_asym_cpu_capacity)) ret = cpupri_find_fitness(...); else ret = cpupri_find(...); if (!ret) return -1; Something like that? -- Steve