Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp204605pxy; Wed, 28 Apr 2021 02:34:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygvmc22WsitVi5j0Y/3wJ1ngOkGB0dz3mYzyPMAWlXR4RW/TIf7kOogRop2DgJhsjRpGEI X-Received: by 2002:a17:906:4d11:: with SMTP id r17mr6848029eju.217.1619602460695; Wed, 28 Apr 2021 02:34:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619602460; cv=none; d=google.com; s=arc-20160816; b=l+prVThnSsar8kbRlBJIHATdYFsgj581oVDtAgdWxnRFdZFravgckiTiZ3PT8HtxLI 4zZ8GnlQrhipjggaFlnbdFc1bakDdJmWO2dgSZZOm2yZu7Za3cbhLdp/BLcXryc4l3aA kNvda1Qt8MdsiWCNkLUBvQj6bj4bPOqDpUk4ibOLEEak5+2WGrUjRdcR64mlKvnpjxUp 4X+hI5I+TtNOeN+zjE8j+5LCoVJFxetoHiyF7NZwFnRGczSu2kZ8O9/xEsoRoIewjC1Y whllD/QmnIyPPVfQxsHfCmkz8J19BV+aA78+zbdirQwc4HjMDRM5/n/af6NRuS4ediuE HJtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=7bn6tAokMzLyn1wqIyAM7TuEaL/TWd2IZhCZgZo3sfs=; b=SAtiGk2rEy4/u4McSkUH0r51JZ887CeQ/zYDb27w6EQWnNIHVbtl7hSW2Ms6IytabE Oa97gzPrts2eysqZ4YmVcnpmVHAkPeLam544P/4OCfGbfh6WPKBA3WUaJ2RqQkcF9LCs No2sIRXzHXFcVD25hoZvllhGd4sWmVXTq44GMikLZQ8DIgly5bSv4IVbzrM8zg04OqbM 97rA2tKBRfKIs3USmIfT+TeqnARezOfwe3k+u2p5fl/73hovqFXpJ/u1avgeB2RQUiIk bp5+QfR6U0x6pJKYHJwBbPNiHrii2fAdeJG/iOAZd/zMne4mJKvnAcWXHKSp41zTyFkR o+aw== 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 lg25si2522609ejb.96.2021.04.28.02.33.57; Wed, 28 Apr 2021 02:34:20 -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 S238148AbhD1Jdj (ORCPT + 99 others); Wed, 28 Apr 2021 05:33:39 -0400 Received: from foss.arm.com ([217.140.110.172]:37972 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238126AbhD1Jdj (ORCPT ); Wed, 28 Apr 2021 05:33:39 -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 3F2B9ED1; Wed, 28 Apr 2021 02:32:54 -0700 (PDT) Received: from e113131-lin.cambridge.arm.com (e113131-lin.cambridge.arm.com [10.1.195.76]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 051893F70D; Wed, 28 Apr 2021 02:32:52 -0700 (PDT) From: Beata Michalska To: linux-kernel@vger.kernel.org Cc: peterz@infradead.org, mingo@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, valentin.schneider@arm.com, dietmar.eggemann@arm.com, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [RFC PATCH v2 0/3] Rework CPU capacity asymmetry detection Date: Wed, 28 Apr 2021 10:32:40 +0100 Message-Id: <1619602363-1305-1-git-send-email-beata.michalska@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As of now, the asym_cpu_capacity_level will try to locate the lowest topology level where the highest available CPU capacity is being visible to all CPUs. This works perfectly fine for most of existing asymmetric designs out there, though for some possible and completely valid setups, combining different cpu microarchitectures within clusters, this might not be the best approach, resulting in pointing at a level, at which some of the domains might not see any asymmetry at all. This could be problematic for misfit migration and/or energy aware placement. And as such, for affected platforms it might result in custom changes to wake-up and CPU selection paths. As mentioned in the previous version, based on the available sources out there, one of the potentially affected (by original approach) platforms might be Exynos 9820/990 with it's 'sliced' LLC divided between the two custom (big) cores and the remaining A75/A55 cores, which seems to be reflected in the made available dt entries for those platforms. The following patches rework how the asymmetric detection is being carried out, pinning the asymmetric topology level to the lowest one, where full range of CPU capacities is visible to all CPUs within given sched domain. The asym_cpu_capacity_level will also keep track of those levels where any scope of asymmetry is being observed, to denote corresponding sched domains with the SD_ASYM_CPUCAPACITY flag and to enable misfit migration for those. In order to distinguish the sched domains with partial vs full range of CPU capacity asymmetry, new sched domain flag has been introduced: SD_ASYM_CPUCAPACITY_FULL. The overall idea of changing the asymmetry detection has been suggested earlier by Valentin Schneider Verified on (mostly): - QEMU (version 4.2.1) with variants of possible asymmetric topologies - machine: virt - modifying the device-tree 'cpus' node for virt machine: qemu-system-aarch64 -kernel $KERNEL_IMG -drive format=qcow2,file=$IMAGE -append 'root=/dev/vda earlycon console=ttyAMA0 sched_debug loglevel=15 kmemleak=on' -m 2G --nographic -cpu cortex-a57 -machine virt -smp cores=6 -machine dumpdtb=$CUSTOM_DTB.dtb $KERNEL_PATH/scripts/dtc/dtc -I dtb -O dts $CUSTOM_DTB.dts > $CUSTOM_DTB.dtb (modify the dts) $KERNEL_PATH/scripts/dtc/dtc -I dts -O dtb $CUSTOM_DTB.dts > $CUSTOM_DTB.dtb qemu-system-aarch64 -kernel $KERNEL_IMG -drive format=qcow2,file=$IMAGE -append 'root=/dev/vda earlycon console=ttyAMA0 sched_debug loglevel=15 kmemleak=on' -m 2G --nographic -cpu cortex-a57 -machine virt -smp cores=6 -machine dtb=$CUSTOM_DTB.dtb v2: - Fixed style issues - Reworked accessing the cached topology data as suggested by Valentin Beata Michalska (3): sched/core: Introduce SD_ASYM_CPUCAPACITY_FULL sched_domain flag sched/topology: Rework CPU capacity asymmetry detection sched/doc: Update the CPU capacity asymmetry bits Documentation/scheduler/sched-capacity.rst | 6 +- Documentation/scheduler/sched-energy.rst | 2 +- include/linux/sched/sd_flags.h | 10 + kernel/sched/topology.c | 327 +++++++++++++++++++++++++---- 4 files changed, 302 insertions(+), 43 deletions(-) -- 2.7.4