From nobody Mon Feb 9 11:26:56 2026 Received: from out30-101.freemail.mail.aliyun.com (out30-101.freemail.mail.aliyun.com [115.124.30.101]) (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 C97F04A15 for ; Mon, 4 Mar 2024 03:00:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.101 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709521261; cv=none; b=aN3hmu+2DqZ8NG70i1u1ZyCx1NEWQTnGe7DpdDRVA+5qjwFRXjzXqX5YDO+VDSimrXmoRWoXaEVxs3xOQigoRh0e0jkAqu6OuUNedW0WQHUuk0JAKzqWt1Qo1n3N1pLhpR0GfdgCbLOfBoyEd+qDNpq2QhOQhtcEHmhmZ4GNpjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709521261; c=relaxed/simple; bh=/na5pr5dBEKR/drn7nkYD2RUThEAWD8UrRCZ+1HtChw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mD6S8EWfmfQNncZ/sBn0cmphuRPxpPr7OzAsMAit+HZslgjcdAOnMUqcK2UJjPBkjuDxHbnIZu6q9s/Xy9SKDRClABZpEVsRhKaUNyKbzupLI/YupNza7f2FTV5uuYbguyTAatWz7TtiqO4XHdFCvgmN6XQyE5aCUKHRISrx0Ho= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=ReLNKGfZ; arc=none smtp.client-ip=115.124.30.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="ReLNKGfZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1709521250; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=4u7FtZOI33xmYIt3T0Rn34srhvB3CoeuSZKAdi4JZLQ=; b=ReLNKGfZyE68O0Ahlr5OC2PFykZxYgv8s3P7C2jqqkpaO/z5Hi2F010IhPkFyia6Y47VvKhszNYhof9TEdoLF0pJQgYEHd3k0FGwwcWZG+UY8KcGXI+WgbAXwGHQAv1ZaENwA2gH1sXpMFQ+uodgasF0wete2vEtbW6rnlZpU7Y= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R381e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046050;MF=dtcccc@linux.alibaba.com;NM=1;PH=DS;RN=12;SR=0;TI=SMTPD_---0W1i0XYV_1709521249; Received: from localhost.localdomain(mailfrom:dtcccc@linux.alibaba.com fp:SMTPD_---0W1i0XYV_1709521249) by smtp.aliyun-inc.com; Mon, 04 Mar 2024 11:00:49 +0800 From: Tianchen Ding To: linux-kernel@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Abel Wu Subject: [PATCH 1/2] sched/eevdf: Always update V if se->on_rq when reweighting Date: Mon, 4 Mar 2024 11:00:41 +0800 Message-Id: <20240304030042.2690-2-dtcccc@linux.alibaba.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240304030042.2690-1-dtcccc@linux.alibaba.com> References: <20240304030042.2690-1-dtcccc@linux.alibaba.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" reweight_eevdf() needs the latest V to do accurate calculation for new ve and vd. So update V unconditionally when se is runnable. Suggested-by: Abel Wu Signed-off-by: Tianchen Ding --- kernel/sched/fair.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 03be0d1330a6..5551ce2af73e 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3790,9 +3790,8 @@ static void reweight_entity(struct cfs_rq *cfs_rq, st= ruct sched_entity *se, =20 if (se->on_rq) { /* commit outstanding execution time */ - if (curr) - update_curr(cfs_rq); - else + update_curr(cfs_rq); + if (!curr) __dequeue_entity(cfs_rq, se); update_load_sub(&cfs_rq->load, se->load.weight); } --=20 2.39.3 From nobody Mon Feb 9 11:26:56 2026 Received: from out30-100.freemail.mail.aliyun.com (out30-100.freemail.mail.aliyun.com [115.124.30.100]) (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 0AB2617C9 for ; Mon, 4 Mar 2024 03:00:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709521256; cv=none; b=pcXpAbRqi5D2IMk2zZaGBqRoldlQS6vTCh8rvosHOkz+54cv2EG+ZHMaR7a0ArtDsAEhuke2J1ai7oWXyQmscpySYttyXLef3jyYiGZCN+N5qd06HMFK3C8+mAxPkbvwZtJnQieKq9LkD3VTxSQclyACwoh38Ii/H6n86ruq0wg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709521256; c=relaxed/simple; bh=nw9L+W2RdaeA/JiFU5L3vP+VcASNnK3QbAN7wrUFDFQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e96P08fQlqNRrAr9zjl9l1jBaLpHKFHRme0dmhjFt+yFHOakS5X1dnB/oy3jPFRhOzY2V7KTL5ylRxZLXuS8oGSG7A/FF6OON+ohZ2qQVFSB3SqqfB7VzNw2o5jwA3cF5hvauhr5aeKGcXTWzcFeGxhc2gb2BBCSOtz9cO86Mp0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=Myqptbhw; arc=none smtp.client-ip=115.124.30.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="Myqptbhw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1709521251; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=OAEj4XYKb6Z7iXVcveEaFUEGuCaJ8azk2/tiA7nFnrA=; b=MyqptbhwDSgqNFwQg+dfz2ORR+xFL8mW4MSbmcPLxGILWPfp38hCZEkkVjOf0c4ECOQYbr9awrQiQNUYM7nz4s82gHNdmKOjzNDPd3Aqqqiqq9WrOKOutK+XjlNIkasaain0TgkMXudi3fFGwaZnfsl/ZlbruKmjlvROTSGur88= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R101e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=dtcccc@linux.alibaba.com;NM=1;PH=DS;RN=12;SR=0;TI=SMTPD_---0W1i0XYp_1709521250; Received: from localhost.localdomain(mailfrom:dtcccc@linux.alibaba.com fp:SMTPD_---0W1i0XYp_1709521250) by smtp.aliyun-inc.com; Mon, 04 Mar 2024 11:00:50 +0800 From: Tianchen Ding To: linux-kernel@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Abel Wu Subject: [PATCH 2/2] sched/eevdf: Fix miscalculation in reweight_entity() when se is not curr Date: Mon, 4 Mar 2024 11:00:42 +0800 Message-Id: <20240304030042.2690-3-dtcccc@linux.alibaba.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240304030042.2690-1-dtcccc@linux.alibaba.com> References: <20240304030042.2690-1-dtcccc@linux.alibaba.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" reweight_eevdf() only keeps V unchanged inside itself. When se !=3D cfs_rq->curr, it would be dequeued from rb tree first. So that V is changed and the result is wrong. Pass the original V to reweight_eevdf() to fix this issue. Fixes: eab03c23c2a1 ("sched/eevdf: Fix vruntime adjustment on reweight") Signed-off-by: Tianchen Ding Reviewed-by: Abel Wu --- kernel/sched/fair.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5551ce2af73e..091a1a750638 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3676,11 +3676,10 @@ static inline void dequeue_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) { } #endif =20 -static void reweight_eevdf(struct cfs_rq *cfs_rq, struct sched_entity *se, +static void reweight_eevdf(struct sched_entity *se, u64 avruntime, unsigned long weight) { unsigned long old_weight =3D se->load.weight; - u64 avruntime =3D avg_vruntime(cfs_rq); s64 vlag, vslice; =20 /* @@ -3787,10 +3786,12 @@ static void reweight_entity(struct cfs_rq *cfs_rq, = struct sched_entity *se, unsigned long weight) { bool curr =3D cfs_rq->curr =3D=3D se; + u64 avruntime; =20 if (se->on_rq) { /* commit outstanding execution time */ update_curr(cfs_rq); + avruntime =3D avg_vruntime(cfs_rq); if (!curr) __dequeue_entity(cfs_rq, se); update_load_sub(&cfs_rq->load, se->load.weight); @@ -3804,7 +3805,7 @@ static void reweight_entity(struct cfs_rq *cfs_rq, st= ruct sched_entity *se, */ se->vlag =3D div_s64(se->vlag * se->load.weight, weight); } else { - reweight_eevdf(cfs_rq, se, weight); + reweight_eevdf(se, avruntime, weight); } =20 update_load_set(&se->load, weight); --=20 2.39.3