Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp875681pxj; Thu, 27 May 2021 13:49:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJywlI6HvwVOeNE9FEB5wrU4k94Qo1UvuN3R03kETGjcppLgpkeCTFjSekAvhYItd8LZSDo/ X-Received: by 2002:a05:6e02:1561:: with SMTP id k1mr4515360ilu.218.1622148557082; Thu, 27 May 2021 13:49:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622148557; cv=none; d=google.com; s=arc-20160816; b=qW7BmRU9U4WtTWDgfUpENh6Vqr2KbiW5hNLFDvHzW44bodfgA65OxnqyURupfom6/J mDRuepnUSb+IMiDxjcSQ2bwh2tGkK8BCOM3Iyy4FE1UEekKvHOEINeALwBbiyzDBIZIk BW4D7YkUclzihWec7miTrYffpSo/3VH6nJ7484AcRQp1eKCLDd8Mbs4lgqUqgm5QFHhn SjwCQ9sKJ5VFRToFrUiuc0nBb/mOZ8M4KpaZWKpwUmMkABRjdjWsblQLYO7jkO9hI2JX cicKk7jcYiDSjP5XOPttVpGMuSZs+364rdePWpy0/e24H9Wx3HIDrYgWMJ9dNyOCZ/8L h1tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=feWZMUYFZ71LXIww+/K1g6h9ffmtTe9rHf/tlHSqmL4=; b=dvopYSq4Ih+gZ34wXRCHdg0gmOYveeePePVkGAoSYWShPbinhtUKHTz7pmx0U3pg2e L94ggfFQIbNuxNRSMHdk8w8SEdT90ug5IJIkr7zKhjlke9AREBdhcem2INRJycshmQj7 xJhzvImYCmWS6pKn+yUYEQ7d3/Ju9iH8KH76JHUhmPY7bTPfxZQ736Ob9CNlGrPfxHh1 Nnqq9V4lju6rMMwklCWYqmJF4tK3Rj5jsEkm+4lN2HLxYWJ5yBWa3g4E7pd0fWglbFA7 sk5QuGLulimCYvUhPAk48XbpXnuoLQ2bRMQvDXLWietSokfmG3u+hNAYHTVEgaGfjvhy dijg== 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 k23si3423868iom.85.2021.05.27.13.49.03; Thu, 27 May 2021 13:49:17 -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 S235369AbhE0Md7 (ORCPT + 99 others); Thu, 27 May 2021 08:33:59 -0400 Received: from foss.arm.com ([217.140.110.172]:56900 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234904AbhE0Md6 (ORCPT ); Thu, 27 May 2021 08:33:58 -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 43F8213A1; Thu, 27 May 2021 05:32:25 -0700 (PDT) Received: from e120325.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 18FFB3F73D; Thu, 27 May 2021 05:32:22 -0700 (PDT) Date: Thu, 27 May 2021 13:32:14 +0100 From: Beata Michalska To: Dietmar Eggemann Cc: Peter Zijlstra , Valentin Schneider , linux-kernel@vger.kernel.org, mingo@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, corbet@lwn.net, rdunlap@infradead.org, linux-doc@vger.kernel.org Subject: Re: [PATCH v5 2/3] sched/topology: Rework CPU capacity asymmetry detection Message-ID: <20210527123214.GA26465@e120325.cambridge.arm.com> References: <20210524101617.8965-1-beata.michalska@arm.com> <20210524101617.8965-3-beata.michalska@arm.com> <87fsyc6mfz.mognet@arm.com> <20210524225508.GA14880@e120325.cambridge.arm.com> <87a6oj6sxo.mognet@arm.com> <20210525102945.GA24210@e120325.cambridge.arm.com> <98ad8837-b9b8-ff50-5a91-8d5951ee757c@arm.com> <315b4b5d-05f5-e311-8ed9-b55072cf84f9@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <315b4b5d-05f5-e311-8ed9-b55072cf84f9@arm.com> User-Agent: Mutt/1.9.4 (2018-02-28) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 27, 2021 at 02:22:52PM +0200, Dietmar Eggemann wrote: > On 27/05/2021 09:03, Peter Zijlstra wrote: > > On Wed, May 26, 2021 at 11:52:25AM +0200, Dietmar Eggemann wrote: > > > >> For me asym_cpu_capacity_classify() is pretty hard to digest ;-) But I > >> wasn't able to break it. It also performs correctly on (non-existing SMT) > >> layer (with sd span eq. single CPU). > > > > This is the simplest form I could come up with this morning: > > > > static inline int > > asym_cpu_capacity_classify(struct sched_domain *sd, > > const struct cpumask *cpu_map) > > { > > struct asym_cap_data *entry; > > int i = 0, n = 0; > > > > list_for_each_entry(entry, &asym_cap_list, link) { > > if (cpumask_intersects(sched_domain_span(sd), entry->cpu_mask)) > > i++; > > else > > n++; > > } > > > > if (WARN_ON_ONCE(!i) || i == 1) /* no asymmetry */ > > return 0; > > > > if (n) /* partial asymmetry */ > > return SD_ASYM_CPUCAPACITY; > > > > /* full asymmetry */ > > return SD_ASYM_CPUCAPACITY | SD_ASYM_CPUCAPACITY_FULL; > > } > > > > > > The early termination and everything was cute; but this isn't > > performance critical code and clarity is paramount. > > This is definitely easier to grasp. > > What about the missing `if (cpumask_intersects(entry->cpu_mask, > cpu_map))` condition in the else path to increment n? > > Example: > > cpus = {[446 446] [871 871] [1024 1024]} > > So 3 asym_cap_list entries. > > After hp'ing out CPU4 and CPU5: > > DIE: 'partial asymmetry' > > In case we would increment n only when the condition is met, we would > have `full asymmetry`. > > I guess we want to allow EAS task placement, hence have > sd_asym_cpucapacity set in case there are only 446 and 871 left? > I will rewrite the function as per all the suggestions and make things .... more readable. --- BR B.