Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp167211rwb; Wed, 14 Dec 2022 15:34:34 -0800 (PST) X-Google-Smtp-Source: AA0mqf5ka496uugfvBcG1s5Hw0pG+Y3zR2IwZmcmLob1Ag8yyPgzH5L942qaAkyYtl9A4dbmoIOc X-Received: by 2002:a05:6402:5410:b0:463:7489:ce0a with SMTP id ev16-20020a056402541000b004637489ce0amr21340048edb.11.1671060873898; Wed, 14 Dec 2022 15:34:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671060873; cv=none; d=google.com; s=arc-20160816; b=Vyj+XE4UrWOHb23p9qJQBwg3xSeuVWLK29D+zLk2HfMI0+DYGX3wyjovChe6xvJVfO e6KJMON7cPRTFhpwDjDtAvg0+ZPp6qp78jt/Q4zxH7EX0LmcKQ9iaMB5gQ9zmNl4H1FL FhlCQonLh90odth6W6P8LGilCk5S0DtHFgyajNXnHNx572MOnuVxl4pA5dC8XrA02C2g msYKMDdfS77/nVMm1c9X03aOnxWBLdqXvTB/LBxteveC6K6+wvZLsKFRbo7tq23KtUiG WVVDHUw9ckrf2T1N50nkyLG4lt/wFDEztXGNXaNdBvwnUSi43ZyrAPqtNGhuW2ktS8f1 p7ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=WjaRosztNR/3ifObjcLNg9cL6aKsw7w3ZwUY+Ghl0R0=; b=WxKvTnjYBM+1BWv3K+ehuYgTumFPO8OUc0lzFG6OLlzfHKzrdBTg7HmYlwL3tkc6Tf esnyNzRw+zzOcyiJkTfYViz86Q2FycfYJnUGxA/Q6Y+g00RDAUikJmVryH3AQPU7phhw 73lemgp6mB0Y0JX5IEsHGL4H6sQK3g8L/DMe6qK1Q9SfpFZezcMirBWY+ZlwMDAt6iFq CEfLEWpCAZ6bMV4MKt9tIkG1lLW1VmbwWlaTZY/h0X9YuGgD7tWZxtqctpMuBJxifWP5 IL+AZmIYOQ8C0yRt8Dlqy18z6OWPPBJJ7Naj6L6+vBHgj0mgQ5vjKtVA0VlZwXTeXhij YAiw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n14-20020a05640205ce00b0046b1ffb7211si15233414edx.423.2022.12.14.15.34.17; Wed, 14 Dec 2022 15:34:33 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229762AbiLNXQw (ORCPT + 69 others); Wed, 14 Dec 2022 18:16:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229780AbiLNXQp (ORCPT ); Wed, 14 Dec 2022 18:16:45 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9FFF249B5A; Wed, 14 Dec 2022 15:16:41 -0800 (PST) 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 00A69FEC; Wed, 14 Dec 2022 15:17:22 -0800 (PST) Received: from localhost (ionvoi01-desktop.cambridge.arm.com [10.1.196.65]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F2F8A3F5A1; Wed, 14 Dec 2022 15:16:40 -0800 (PST) Date: Wed, 14 Dec 2022 23:16:39 +0000 From: Ionela Voinescu To: Ricardo Neri Cc: "Peter Zijlstra (Intel)" , Juri Lelli , Vincent Guittot , Ricardo Neri , "Ravi V. Shankar" , Ben Segall , Daniel Bristot de Oliveira , Dietmar Eggemann , Len Brown , Mel Gorman , "Rafael J. Wysocki" , Srinivas Pandruvada , Steven Rostedt , Tim Chen , Valentin Schneider , x86@kernel.org, "Joel Fernandes (Google)" , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, "Tim C . Chen" Subject: Re: [PATCH v2 09/22] sched/fair: Use IPC class score to select a busiest runqueue Message-ID: References: <20221128132100.30253-1-ricardo.neri-calderon@linux.intel.com> <20221128132100.30253-10-ricardo.neri-calderon@linux.intel.com> <20221214003243.GC30234@ranerica-svr.sc.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221214003243.GC30234@ranerica-svr.sc.intel.com> X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE 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 Hi Ricardo, On Tuesday 13 Dec 2022 at 16:32:43 (-0800), Ricardo Neri wrote: [..] > > > /** > > > @@ -10419,8 +10442,8 @@ static struct rq *find_busiest_queue(struct lb_env *env, > > > { > > > struct rq *busiest = NULL, *rq; > > > unsigned long busiest_util = 0, busiest_load = 0, busiest_capacity = 1; > > > + int i, busiest_ipcc_delta = INT_MIN; > > > unsigned int busiest_nr = 0; > > > - int i; > > > > > > for_each_cpu_and(i, sched_group_span(group), env->cpus) { > > > unsigned long capacity, load, util; > > > @@ -10526,8 +10549,37 @@ static struct rq *find_busiest_queue(struct lb_env *env, > > > > > > case migrate_task: > > > if (busiest_nr < nr_running) { > > > + struct task_struct *curr; > > > + > > > busiest_nr = nr_running; > > > busiest = rq; > > > + > > > + /* > > > + * Remember the IPC score delta of busiest::curr. > > > + * We may need it to break a tie with other queues > > > + * with equal nr_running. > > > + */ > > > + curr = rcu_dereference(busiest->curr); > > > + busiest_ipcc_delta = ipcc_score_delta(curr, > > > + env->dst_cpu); > > > + /* > > > + * If rq and busiest have the same number of running > > > + * tasks, pick rq if doing so would give rq::curr a > > > + * bigger IPC boost on dst_cpu. > > > + */ > > > + } else if (sched_ipcc_enabled() && > > > + busiest_nr == nr_running) { > > > + struct task_struct *curr; > > > + int delta; > > > + > > > + curr = rcu_dereference(rq->curr); > > > + delta = ipcc_score_delta(curr, env->dst_cpu); > > > + > > > + if (busiest_ipcc_delta < delta) { > > > + busiest_ipcc_delta = delta; > > > + busiest_nr = nr_running; > > > + busiest = rq; > > > + } > > > } > > > break; > > > > > > > While in the commit message you describe this as breaking a tie for > > asym_packing, > > Are you referring to the overall series or this specific patch? I checked > commit message and I do not see references to asym_packing. Sorry, my bad, I was thinking about the cover letter, not the commit message. It's under "+++ Balancing load using classes of tasks. Theory of operation". > > > the code here does not only affect asym_packing. If > > another architecture would have sched_ipcc_enabled() it would use this > > as generic policy, and that might not be desired. > > Indeed, the patchset implements support to use IPCC classes for asym_packing, > but it is not limited to it. > So is your current intention to support IPC classes only for asym_packing for now? What would be the impact on you if you were to limit the functionality in this patch to asym_packing only? > It is true that I don't check here for asym_packing, but it should not be a > problem, IMO. I compare two runqueues with equal nr_running, either runqueue > is a good choice. This tie breaker is an overall improvement, no? > It could be, but equally there could be other better policies as well - other ways to consider IPC class information to break the tie. If other architectures start having sched_ipcc_enabled() they would automatically use the policy you've decided on here. If other policies are better for those architectures this generic policy would be difficult to modify to ensure there are no regressions for all other architectures that use it, or it would be difficult to work around it. For this and for future support of IPC classes I am just wondering if we can better design how we enable different architectures to have different policies. Thanks, Ionela. > Thanks and BR, > Ricardo