From nobody Tue Sep 29 04:47:28 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 932F82C11E4 for ; Wed, 12 Aug 2026 12:50:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786539047; cv=none; b=l0BKNrvqYdc4m5AzBOiIj40XPLq+ASShR5myK/2rWrKqKeNStEWTqHauGA9yzVd9L/RrV+fikaoCCebR3xbC+1YGp/X7kOnM1H1/9y1cJa85ZtAENly+oQ2ykpHyFPx/Tqr93MtyMqZUQ1FCgBHwuPG7khFE91ViHiXx8iRRb38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786539047; c=relaxed/simple; bh=Ftz9D80/ZJDAkBzCcY3yZeRD3/QPUN7cAalhS32xg6M=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=QzBpokhAzrG4oPmhND3z63TqTnsdox3cEqwqdlBUg2S5juH/nQM056m1I3bqH9V4sg1iekMe+q9PKErQug1RtOJQSn3PkL7qitcpsmsXnOQHJV5rxe+E2OKECL38ipmr7OHb6pB3rZrXVcn7oXJ97oQKOj4y1vt7LwrVXz870i4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=BiC9CgKO; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="BiC9CgKO" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-495590dde14so11287875e9.0 for ; Wed, 12 Aug 2026 05:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786539044; x=1787143844; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=zIsZYn0x0P1W65Y/UsuSVziZWPvT0ETIfvquWd9T85M=; b=BiC9CgKO2As68ysjZ3YhszH29IR92ndAoFaamjry2qbdPVJcx0gLME3WlBVljc/956 wZ11wbphp3YZFlqmVmdzQgSvgg8iPMnP3BK5ApPNfvHJLhaWk6METybRvUSTNyu5UDqL 0a1+hxK1KQmjk5Y6wE/yNiJb+ZxH9DbUj5hXkKmgBqxpCxkvnYrPfoU2JhWFBpHt+8qZ EfPL9JNEr2CYrhoheOXjIUoC2mxCyc8tRyl2JpGnv2ANtw38ubxMhz58l4klKl/Dm1W+ lqFWPjoacHnQujwnjZQHzD8kljjsJ+4YsUhoiafwOHUFQGqVTxdZe0rgxv0n5Gyi5Vsh yHoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786539044; x=1787143844; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zIsZYn0x0P1W65Y/UsuSVziZWPvT0ETIfvquWd9T85M=; b=J9oQQcZuBJK4E24gLDXtCWoj8EghSb+8PwQYQOCyfd3MfiMRcMisxson0XeiNxTsNI 7vZ05N9cUxweMjxA8FkNkIX+0aox/0zVRSxam2EzsLaTWreLgsWYjSzTs+8H1oKgjC6k c5sml/0JNPSmOtlK9Ed5Yb4qbrB+TLJVpDB3sfSvARwDI2HErBOo350Md9iyBbMn9ZkP W+5OaYLU/vDNo4rFXdMG1ff7iyjMv938QxPFjokKxlI8rJsj5HDoOkvZMdDPcoXYCOxG xm9gdNJEzoFUlCf9Lb6ryu8PYMVpdrLygGsD/0yTmkKcLudnQ9n3/nI4KglKPprp8XUU WN2g== X-Forwarded-Encrypted: i=1; AHgh+RrDYHrNcDsE8500rU01PcRCGPjejoqjelJF6r9SQMh9rsNmoYAPpkne2poUQ4PLHT93kiHTgEqiudTop9Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxeqFKepuynXZGS3LnrIP/5eQgwF5KFGVGso3HtZHJPnKDjeoj/ OXYuIOYEHijbNtm1NVDs0ZxK+4IRzsK/pL7CM/tu9QuZAfPOpYFlX5MfavgIo4Xz71A= X-Gm-Gg: AR+sD13TR5Nr5Fw1TnVSJt91J7mS8OIWdw0i1Sjsgy4z4Y1zzn6qBVZqlc73eymcPR7 s9hv6AeHEEl8UMs5u8M5rV2JLEI9lTaWnNb9l8oVSEkbebbwvhrY7AYClparqzJCKIfsJqeLtVQ fwtBtB8kEf59981Q9jCUe1L2NOFurLGSwTBgwx1/RxQO20JGpnguKKUS01gS2FDvIN6+YvOa6WZ wzd6yOnlldA9jyCE5Ml2Ri/E382VDNZaHk3QncGr6wEnS4OpAt5AY67b0MfJ4KDSMreGaw8FRnB bM7KccNVjLRvNQ6cupUlbXDdAcNUtJVBA191H6G2QgaoOH25WWtKGE1zypy07iLeO8lq6tQdwsD b3i07qeUoLVALv2UXb43YPpzQXMVNHIJH750R39ELocRWptwZfiUlCLFy9j/50E5K1sc34lOv6p sv0zn+uifMlMtMXTCB7aXUT88yVvWgmpfMeQHV8uyA31U2b4+4qOAtcmykCzIWP8ikXk60Eb50O w== X-Received: by 2002:a05:600c:4692:b0:498:519:e660 with SMTP id 5b1f17b1804b1-4997c0f7161mr52886185e9.4.1786539043653; Wed, 12 Aug 2026 05:50:43 -0700 (PDT) Received: from vingu-cube.. ([2a01:e0a:11f4:3020:f1c7:20a7:7d3c:8c44]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997c98d264sm52285075e9.9.2026.08.12.05.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:50:43 -0700 (PDT) From: Vincent Guittot To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, linux-kernel@vger.kernel.org Cc: Vincent Guittot Subject: [PATCH] sched/fair: Fix flat hierarchy Date: Wed, 12 Aug 2026 14:50:39 +0200 Message-ID: <20260812125039.1717249-1-vincent.guittot@linaro.org> X-Mailer: git-send-email 2.43.0 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" When a fair task is enqueued, we must update curr and more precisely its vruntime before placing the enqueued task so avg vruntime will take into account the last exec phase. Example: TA is an always running task in cgroup G0. TB is a short running task (cyclictest) in cgroup G1. The lag of TB always increases up the clamp limit because TB is placed before TA(curr) is updated (since the last tick). When curr(TA) is finally updated, its last exec phase provide positive lag to TB Because TA and TB don't belong to the same group, enqueue_hierarchy() will not update TA's entity when updating curr but only G0's entity at root level. The same applies when dequeuing. Fixes: 85570f10a4c6 ("sched/eevdf: Move to a single runqueue") Signed-off-by: Vincent Guittot --- I overlooked the cgroup part when I reviewed the update_entity_lag() in flat hierarchy. kernel/sched/fair.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index dcf860c59a14..649b4f7505a1 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7983,6 +7983,9 @@ enqueue_task_fair(struct rq *rq, struct task_struct *= p, int flags) if (!p->se.sched_delayed || (flags & ENQUEUE_DELAYED)) util_est_enqueue(cfs_rq, p); =20 + if (cfs_rq->curr) + update_curr(cfs_rq_of(cfs_rq->curr)); + if (flags & ENQUEUE_DELAYED) { requeue_delayed_entity(cfs_rq, se); return; @@ -8103,7 +8106,8 @@ static bool __dequeue_task(struct rq *rq, struct task= _struct *p, int flags) =20 clear_buddies(cfs_rq, se); =20 - update_curr(cfs_rq_of(se)); + if (cfs_rq->curr) + update_curr(cfs_rq_of(cfs_rq->curr)); update_entity_lag(cfs_rq, se); =20 if (flags & DEQUEUE_DELAYED) { --=20 2.43.0