From nobody Mon Jun 8 06:38:18 2026 Received: from OS8PR02CU002.outbound.protection.outlook.com (mail-japanwestazon11022097.outbound.protection.outlook.com [40.107.75.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E56141930F for ; Fri, 5 Jun 2026 09:43:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.75.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780652624; cv=fail; b=XDqQ4GcFmogVOkGesalDBvVhCrDR7eH8kLJ7Iec9QIbGwqzA3Su2gJtj2Q3bjDUHmkIGboBQJdb5gKe3A2pFEWGevrWp67XwIvXY0dXnzCTELqu33lJ6R/NbGfGLg5IYppyKTjV3aYOeWZ4Arl5zkZjn2REe648UHqeKxjFm0FQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780652624; c=relaxed/simple; bh=dZTRZS1r+DiWGZld3gVyHjygbUtTejeZBaYuFoy2Iv4=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=ADVQ41zkUfpgTgpq+rq2MVkFikJ5+bwmhbeVhAS1gqmhxslyOVU/2PMPXAFmae7KCcgjPL1PXGIhKpuYj9BXcSDmzE5ywcTt1mlZJEPqmhQi2tTUp7aDRw5m6MhZ/+3RrJ+bXuNchChm0IMUVnLCYWfSiXD2uVQOl2oONZfpTP0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=transsion.com; spf=pass smtp.mailfrom=transsion.com; dkim=pass (1024-bit key) header.d=transsion.com header.i=@transsion.com header.b=rjs1eNqV; arc=fail smtp.client-ip=40.107.75.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=transsion.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=transsion.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=transsion.com header.i=@transsion.com header.b="rjs1eNqV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fNH5XETI9F569CcSNGEdGg/OMeV4f60rB5Viq1VrNZPdeDBVH37FDSuHuv++r5L/GqcElyrZYvltq8yrhLNYZ5LAM/mL65KH5rrZ6JmSSjXgxovBsE3nvQJ61HaPXn0Co5C0ZgyMtOTA/ptsaa4z+j3A98FJwC1AKstWLj01bUNu8AlMRwWSxZNamxaJKPJlrbm1b+ihNawkElV1BuZsAQ7HUM0ukKVvcs0p1SvJBJhD/r23IOWJ+cpdZwIX4h/+oBBu4nLQIP1a9RXjWYfggCI+rcdnq6ulEjlJBdPGBzm8EnHkJxLTlU53114MAFsX1Y0ZdWbEO3EJSRoVzUm4NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Id0Okwy/aB1OchF/2IREAZ0wM8VxdVRCa4UkYMZemdA=; b=Ke4jJT1q9Lm6wnl3K530eVlw1VEdgWUV1gtRRKKO8F5l1hq5as8HoOJule2SCWeHnVl6JS6wtoSZzjjNycO3FIXXho4a07IJSjqdKgj1zHIqrCuMFx3Ppj4rLTl9vEXKQo67dXZSXfKqIACRe89ixlR94BQmaRYF+3X9rkH183cngsaJJbfDeqSrtkpkZrq6EWEt8mfnEo0OK835GJp8Y/zPJPMm3pp4TcNxbXH+TWElkH548Ag9yxZsVdDhTgdqZmbM3iuU7icsyb0FltrUbjdfJ/w+ttyyxI6qZrb9GcZqjUJNzd5fKM0neGrKtvcLQlTA11eqXvOBQegfwuVRJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=transsion.com; dmarc=pass action=none header.from=transsion.com; dkim=pass header.d=transsion.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=transsion.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Id0Okwy/aB1OchF/2IREAZ0wM8VxdVRCa4UkYMZemdA=; b=rjs1eNqVyE3j9Vf/cOFSkXpyYwhdf9euqeJ0G1+rATXj7To2xMrbJW3hK1SRVXlHny7Q9nEeAhhTt20kdUkIn1DfkZO1Taoj1dYAFi4WveVJGKAsJg/PHKfTRj9eJ6RnW2Z0DMs+wFS2WkTLV6hviqUYuqsm9acK1GAobhJLhM8= Received: from KL1PR0401MB6196.apcprd04.prod.outlook.com (2603:1096:820:c7::13) by JH0PR04MB7680.apcprd04.prod.outlook.com (2603:1096:990:6f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 09:43:39 +0000 Received: from KL1PR0401MB6196.apcprd04.prod.outlook.com ([fe80::f2ee:1e28:9022:99f3]) by KL1PR0401MB6196.apcprd04.prod.outlook.com ([fe80::f2ee:1e28:9022:99f3%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 09:43:39 +0000 From: Hongyan Xia To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak CC: Jiazi Li , "linux-kernel@vger.kernel.org" Subject: [PATCH v2] sched/fair: Fix cpu_util runnable_avg arithmetic Thread-Topic: [PATCH v2] sched/fair: Fix cpu_util runnable_avg arithmetic Thread-Index: AQHc9M/JpxOXKVPJw0ObmzXjKVaUUQ== Date: Fri, 5 Jun 2026 09:43:39 +0000 Message-ID: <20260605094318.37931-1-hongyan.xia@transsion.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=transsion.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: KL1PR0401MB6196:EE_|JH0PR04MB7680:EE_ x-ms-office365-filtering-correlation-id: 824d07ff-8cd9-468f-7581-08dec2e6ec1a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|11063799006|921020|56012099006|38070700021|18002099003; x-microsoft-antispam-message-info: R/pE3EiwXxDag1j0Z/7cPwH2UyCpDZKQQoRabchkcRrOue9X0amLWT9IEJox3Ngsufwsr1fyPAxpZS5fl+7BUuKge9ILVXzK8SwS63Hr6evAiWQF4oDf6xCvuXxc34GKJASfT15RCLvdMb1XblLk8uMcECeYS2TIDDCWSOLkKaBZbfZK6x3PT59e5z1jNLc+s3CxGm1nywieOWJ6XhXib5xXxxCEoHBeEaJKbU8cgiLj0FTH6qH2h3QUvHlZvNpUim4I6xhRlwIshVh+Hsyl5XwJsdx2a5ZMJG6uS6G/wo8cjAcyeqksON3gVwu4p8VzXu1B8cdMFGjdRFcoT9GeYAKneTn2yFjgaG5CsAjX3LbvEqkw7wmz7QT4gUjt3KQw4oiP6NuuAXD2IXdbzcM1V9nWuPIJx4Hj+CN5x4djVF7DnOYN+ZhSFxnSa5VyCuf1RPzq3rUCG8xYehwaZ59qd7db3NoqkrNJnKmqND3SU41TVd7U9cb3a9bAcyrDH1NUXsx3zu7NHxWI2LgYCeb5phBxiyPsD+uoyjIuY4H/R0jDofGIcUjQmogdOdIlJF3iZ6JkFc0W3NvgUMRWxovQXzl5FPVFCnCbYXmyp8FpljVFbhCwbCc3MkmUlY4mYQBvrHFIfY50+31gowzulPs8CKNYV0uRWsLS9VUV9lT5S3mBYVtKszfOfoVHzZ/pkV/u53vo61jy+h+6o/hCAlSaCcDCYqdYkG4HXA+NEsQsKaTLNl/kgzLuOGrc4oknjgwhDMWfAhnHVxlUIUgcyrIIvQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:KL1PR0401MB6196.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(11063799006)(921020)(56012099006)(38070700021)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?qhaMjXqMLyPSTmJqyI9fTu2eaGeCu4kv0PgybFsDJ2d93gr18IILJGS6yB?= =?iso-8859-1?Q?Z1H5yavHL+H2NtQZczaPl4AS9cGqEVjr97avvCheyuv15lBBKwQDJYl5Hm?= =?iso-8859-1?Q?ImIlSqNCtNMO4qE0Cxa1zaH3DlhrZhlFjE0jw8dhlXNqX1UO35b31hMLC5?= =?iso-8859-1?Q?KQGjMhVtT83uU7BRgrAbO5w7SRjoI26FmRJGHOUlgE9Y2dDs0cH00CbfaJ?= =?iso-8859-1?Q?zAqkyxfjijU4yec7OakBxj7kaePgcziwJUBVir1+o6fEbLni+Aa/qkbTVR?= =?iso-8859-1?Q?lZAOyBTvFHD3QjhBF71I8TVyNBZvIgBHL/p0liMA4gl7AjZtXyfsQYn2Nu?= =?iso-8859-1?Q?L4VGTgF0KEWDYO6cvTcxA727rbzcttOgmRyRVn3aqDtdp0At4OSfpXc1tx?= =?iso-8859-1?Q?Z3ZbTXOXrksRsStBxBBIdA5UrS7j/VdT16ys6xdFHfURNKJYcvfVzFJpzC?= =?iso-8859-1?Q?iAZrnZYzoFDL6oJ1QY+bWul5Ba+cLhe7JGNS+OYB3Gk4yKnXWM2ViZm+ir?= =?iso-8859-1?Q?r9o0a3aj5btmoZcLo96f79RQ1i73CDzE71/7Dd2NIc8Aji//jcMzUei55e?= =?iso-8859-1?Q?l9F/uGvOIoAcYLuzUY9XCE1sqe8JG0HUv1Pa70fDGHLZuPfj/dAxgRpCGc?= =?iso-8859-1?Q?WCKht+0zM6/VSzoarvK0y8a/UHAP6XGL8zZPM8pQEp7ClGYUrEsAXg5yaD?= =?iso-8859-1?Q?uEdGvBaHIWgeeyWf0qy6eqrzhnZst6SK4DLDI/eg62SOaKI//tQCMwqWUh?= =?iso-8859-1?Q?7ocw+E20Z0l6xBU5soqiEym4NbMkznYDEiRJQy/sg2zY9amFYdV6jmMKsp?= =?iso-8859-1?Q?mRSZjo1WB5j7IdfFua81jokSKWegO+02xopSHll+TFHXzyLQz1rVaf77K5?= =?iso-8859-1?Q?O6/4OVaeMrBXcQfGRukXh9tp50viSSXHTs3tgctfVfHkJUG25Q8G46pp3x?= =?iso-8859-1?Q?KPHJXBWDrqSsgWbbLD+GQrY+WFIn12dKMJMvtOg56hx8r5Ws98LqoanxDf?= =?iso-8859-1?Q?Rn8hQU7iwY/SKS72l/LfGbAZZ2KwjDvsWri1hcu67sSQvZHQM3sI3n5U4Z?= =?iso-8859-1?Q?6bE2+Bi1cvfClncOxgHZZmnYU54+NJlG+AVzhPvZT62BQFegT2hiZwXDmg?= =?iso-8859-1?Q?ahmNW2SWUOJ+zv1m4L14SDEWalZ4p29UCngHfgIPbN7dwS1nZFSnc3RBaW?= =?iso-8859-1?Q?iOC4+Mo2e7QzsRuyc2qQUNIuazWvrJjLNrjMh9woTHrJSxSmBr1FCu4Tu3?= =?iso-8859-1?Q?tDPmXE/aMIIoTQiKCYEn5DUriGi3UwzXRtCYnXdVZR38Mq0Q+C7DMVQ0xi?= =?iso-8859-1?Q?UrZfBa2jqMVgnWD5+mmOKiCLq+/8/jGuQSEPb6U73XdARE8WBKpfHh9dFh?= =?iso-8859-1?Q?YKHe9UXPzDg5As+JikX+PYVQsoCZfzSgVqb30BrdSQ2+e4k0gXOR3QaeZo?= =?iso-8859-1?Q?OWniTPzo0nwvLp7rxx48AIOMJMKvmd+mefwBeD3rw3Z1I29hjO6f9PR+82?= =?iso-8859-1?Q?rpFtSy4ZknBoO6p0soG2y3NqSx2aaoyiA1x41swOCkA6FdK+TFz++De5Pn?= =?iso-8859-1?Q?32u4UTf/O7NIgMiVVkZC5nUVx6BlDuIUiWssjPo/lKD1kNbfpBH5/2+PQY?= =?iso-8859-1?Q?lH1xUGp14N937nelTWAiis5ZehPRLL7d19Nz0EeWzYrBT0apMyTj1Dy/NX?= =?iso-8859-1?Q?mlZAX6GP+GNOAHlp4nr38AGlzUCYCAPDAe3u9dipmXEVIglfxx3xE1m4eO?= =?iso-8859-1?Q?zJ9AE1exh9xjP75VxtavOpOjVdSnQx5ROMi6ghKo010K/or8/0dbOO5Gtz?= =?iso-8859-1?Q?NBSPHYbtRg=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: transsion.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: KL1PR0401MB6196.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 824d07ff-8cd9-468f-7581-08dec2e6ec1a X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2026 09:43:39.2099 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2e8503a6-2d01-4333-8e36-6ab7c8cd7ae2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9SEq8xE9kwQD1n429sotob9W1wWPFa6seAFLASfMrSj16nPBFCAf4R5xyhR4PjpQrBCzQV7A8ZNHjFdC4X9PaSX8otzybRe2VY9ew2ubHDc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR04MB7680 Content-Type: text/plain; charset="utf-8" From: Hongyan Xia If we take runnable_avg in max(runnable_avg, util_avg) in cpu_util(), we should then add or subtract task runnable_avg, but the arithmetic below is still with task util_avg. This mixes runnable_avg with util_avg which is incorrect. Fix by always doing arithmetic with runnable_avg and only take max(runnable_avg, util_avg) at the last step. Fixes: 7d0583cf9ec7 ("sched/fair, cpufreq: Introduce 'runnable boosting'") Signed-off-by: Hongyan Xia Reviewed-by: Vincent Guittot --- Changed in v2: - Rebase against the latest sched/core --- kernel/sched/fair.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index f4ed841f766f..1b23e73f48b0 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8968,25 +8968,32 @@ static int select_idle_sibling(struct task_struct *= p, int prev, int target) static unsigned long cpu_util(int cpu, struct task_struct *p, int dst_cpu, int boost) { + bool add_task =3D p && task_cpu(p) !=3D cpu && dst_cpu =3D=3D cpu; + bool sub_task =3D p && task_cpu(p) =3D=3D cpu && dst_cpu !=3D cpu; struct cfs_rq *cfs_rq =3D &cpu_rq(cpu)->cfs; unsigned long util =3D READ_ONCE(cfs_rq->avg.util_avg); unsigned long runnable; =20 - if (boost) { - runnable =3D READ_ONCE(cfs_rq->avg.runnable_avg); - util =3D max(util, runnable); - } - /* * If @dst_cpu is -1 or @p migrates from @cpu to @dst_cpu remove its * contribution. If @p migrates from another CPU to @cpu add its * contribution. In all the other cases @cpu is not impacted by the * migration so its util_avg is already correct. */ - if (p && task_cpu(p) =3D=3D cpu && dst_cpu !=3D cpu) - lsub_positive(&util, task_util(p)); - else if (p && task_cpu(p) !=3D cpu && dst_cpu =3D=3D cpu) + if (add_task) util +=3D task_util(p); + else if (sub_task) + lsub_positive(&util, task_util(p)); + + if (boost) { + runnable =3D READ_ONCE(cfs_rq->avg.runnable_avg); + if (add_task) + runnable +=3D READ_ONCE(p->se.avg.runnable_avg); + else if (sub_task) + lsub_positive(&runnable, + READ_ONCE(p->se.avg.runnable_avg)); + util =3D max(util, runnable); + } =20 if (sched_feat(UTIL_EST)) { unsigned long util_est; --=20 2.47.3