From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 B50652F3621 for ; Thu, 23 Apr 2026 07:28:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=209.85.218.48 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776929318; cv=pass; b=iOpe8kdlV8Aq1CgjEaR//ixngvJrz8GJN9TwL5QDH/yFjTzQ0JoXpwwZPG+CeWNT1qNgVB/XOzKSeImtcVzOXGK8+5HbJdeWuZAnr4drYH/bs3NaATUomfA2jO0ON9Nn2Z//9IKKkdmu5urBw9n6sjUROyViAJnIFW4xLicp1+c= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776929318; c=relaxed/simple; bh=isSKOIn6XvLiAqdqRZ5Wj+4VXoK+IYFrf2Ar2GHdhzo=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=rPqr4YGiU0Rj4fnU8sQgCRyBziR10ZZA35yVnyJgDiix6e0HRO/UUdH6T0mbCJ/CsPJoj1KVaX4CBhCVwquz9E2vLlqdii/JK+PSiakp7Klgdn6WZVHeifzJeaI9hcaca5+hZRFuyqTbkCkkWCpCvi0RbstYVS4fpxMVJ7tEb6Q= ARC-Authentication-Results:i=2; 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=a8p+x9x7; arc=pass smtp.client-ip=209.85.218.48 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="a8p+x9x7" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b9c01854477so69716766b.0 for ; Thu, 23 Apr 2026 00:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776929315; cv=none; d=google.com; s=arc-20240605; b=cdwrJwkzV0BT0QzRiXkQgGO73jD6rvLI2D+/YIWC9opeuLjo8fuAhFfClSsKgVHppt FMxk+4OlVh0DiTRAC2VKm0ZfbvciaZkZfT01bFyLkKk1xf4HOAKjKCcDYh25kaY2RZ6x D9uD6rJZqEbJXgrE8dy8tRLSWt1899DjwuDM7APfjFGDTvBFrO+JtBOSMMn6nH2t3ciY lJDmJ0fh9gPwEXgNhBqjAG92Y28BRurbKAuVaFjwb5GOKA9EvLaETePEv3SouOkPq2/c 9zuFXmunNv5/YYCNY/Qlq12ep0jRVCeJN9c8VD29y4tiwVSJOHKfJMOs4mDclT3lNM3O O0iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ypt8YlAGGo3avPIY/inhrhPAS9Lt45ZvFBYp9+TuTWQ=; fh=ly0lxgx1BPzNZc23cwy79VhUNE8FBfnextwlWGRjhuw=; b=BXLQ5Nadf7Ne8VC9vozVbqb6woNydnv1l0te60ahcaAbooCXB5khomM8L0ZEnmR4Ik 5dooYxHitP6dJQGSUJtXnnbNi3B4c6aHzQZPnJl3C93JgIQ49c+tdaLfrVlJ8sJYv7UT 6hxU7wD0XZQIxI068ftAJilL+7SPJ/n0gGsYykAMMrMulFgHzmOzGsXm8mUL6Z69D+dl yd6kG01EYBZQBoVHYfw9fnFVuUAqKRRLzLNKtQfcyqWHbYfg28aU3rVIptoF13t3vApY Y6Mg/G+HH0PAFaAs1p5JiBh532fC0qmB/axsHF4h103UOwNyu4lKTtLLJDR+KKfYCG3J RZ5Q==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776929315; x=1777534115; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ypt8YlAGGo3avPIY/inhrhPAS9Lt45ZvFBYp9+TuTWQ=; b=a8p+x9x7EGVQa/YQNo2M1XaRDO3AsdL3ot2rZwT6zxzOIvZXjdLj1f/49vYJgxSQyK P285I4Mw2xp56vm7zHo8XkiS1SZNVANSD3G/ncvBsiNu30TjYKd9v00Z4ozkwsN8U08g f8NZqeHX1ysS02198AAeRXhyB+Tanp6sRg7n/n0QSqTh7aG97JeHsr78rrel3mhKmXZp +Ws0DXy38Akm+XeaJpjb8RDuRZ2Jwkgpzy+zQ5U5eyV8DVYWUV2/cztuTrbvZc9JDTAY gQO3Ri2v/Ns7F5CY85EygIxvsXP82GYCb7hvVtX8RlSajTbYaGcxRmyFpjLVUO4oYzVY X5Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776929315; x=1777534115; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ypt8YlAGGo3avPIY/inhrhPAS9Lt45ZvFBYp9+TuTWQ=; b=KQ+PCqLYecRfuqnnhJvpwnUIcsQFBVfzWALxa23jFInwbuomnjHOISrKLIE3i8dDdO hnevtlU5079RDcppomeHtMdMdLBaIusNyjfgCvV0N1JTWsG1BpSfffIcWbOk7dLyKBNS /5lzgL0G0rqUOFAGnw/5G+GHj3m5VbLJnpK9mH7BI89YCaBjursmXs5WxlC9D+jo74Z6 P2cFRk3lka1x75YJwOB/QqfHMzqsuRVomOVOhgceD/EggowsN+1XnJAescXWzUlomu0A PaGp5VtKPciQnxoKOmunnLmdpeNpjeWgaETtR3LtLb0BXYyqEWdhkIP9qT8PGlvwtoCI LnPA== X-Forwarded-Encrypted: i=1; AFNElJ9ZJINDggYKUwLfGrl8/1zrLk9XFW2A6wJNXbtky0B8DUtBUbO7wP5hDT+yyBNhRDHDWRfNWGgX7vM6wNw=@vger.kernel.org X-Gm-Message-State: AOJu0YxBzr50GxPxPg0BkCCOYJQCdo/cv9TWdG30erqbRL0MToCIgmzY fv3TVSpMKYJZHIiXbJPu3ZY3Mw2imZut+uQQN+uYeRaFi2UyWj+6zJifkGUX1/WjY8VBre/4vDU DdJFPJWMSf/EPA0mIgbmMnDBG3+6rxMCioCuwuaRZww== X-Gm-Gg: AeBDies/UvcQLiB49aMlWE1S8OJwfkAJTUD/ZMeRXiOZKqFejPV2pgbzhJmE1ghBVTG 7GsFI3f8F6EhNNGZi+0GccTiDGprEZZVZoMJio4DewcDfxBWfFIFTUkhpKtBFqnkhUbC+Mj+4PL er4qwl8yFo3lKK8LlkWbXCZ0MPu2XRjlGCzida34BskOUJXp4fjJFhzIVoIN+p+Eo8kmrY/SBbs M4HZtRuw8VTPqznOYmRn1Iogdxrakl6Epzv941lq1rhUSfxpDfmeq5JBRMUekW7+c2CdsrZ+gsp CYzcjji0bZ4C7nfnCTf0OAC0VBZNeFus8favc+TahUneGurvUXli8f+A X-Received: by 2002:a17:907:961b:b0:b9d:33b5:6ba1 with SMTP id a640c23a62f3a-ba41c1b6fbdmr1312363566b.15.1776929314957; Thu, 23 Apr 2026 00:28:34 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260331162352.551501-1-vincent.guittot@linaro.org> <20260402131359.GZ2872@noisy.programming.kicks-ass.net> <20260422133914.GP3102624@noisy.programming.kicks-ass.net> <20260422142410.GS3102624@noisy.programming.kicks-ass.net> <20260422142828.GJ3102924@noisy.programming.kicks-ass.net> <20260422222043.GB3179637@noisy.programming.kicks-ass.net> In-Reply-To: <20260422222043.GB3179637@noisy.programming.kicks-ass.net> From: Vincent Guittot Date: Thu, 23 Apr 2026 09:28:22 +0200 X-Gm-Features: AQROBzCy2Zx4QItxnpH_tQHuZt0laPu2p8w29HOSDd77LYZlHW6G-3gvgpNuYQY Message-ID: Subject: Re: [PATCH v2] sched: fair: Prevent negative lag increase during delayed dequeue To: Peter Zijlstra Cc: mingo@redhat.com, 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, shubhang@os.amperecomputing.com Content-Type: text/plain; charset="UTF-8" On Thu, 23 Apr 2026 at 00:20, Peter Zijlstra wrote: > > On Wed, Apr 22, 2026 at 04:28:28PM +0200, Peter Zijlstra wrote: > > > Let me ponder this a bit... > > Like this? Or am I still making a mess of things? AFAICT this is the > exact same as your initial version. > > --- > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 69361c63353a..24e8c78b110a 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -847,13 +847,13 @@ static s64 entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se, u64 avrunt > * Similarly, check that the entity didn't gain positive lag when DELAY_ZERO > * is set. > * > - * Return true if the lag has been adjusted. > + * Return true if the lag of a delayed entity has been adjusted. > */ > static __always_inline > bool update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se) > { > s64 vlag = entity_lag(cfs_rq, se, avg_vruntime(cfs_rq)); > - bool ret; > + bool ret = false; > > WARN_ON_ONCE(!se->on_rq); > > @@ -862,8 +862,9 @@ bool update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se) > vlag = max(vlag, se->vlag); > if (sched_feat(DELAY_ZERO)) > vlag = min(vlag, 0); > + > + ret = (vlag != se->vlag); No this is not enough. As an example: se->vlag = -2 when the entity is delayed dequeued When the entity is requeued: update_entity_lag() vlag = entity_lag() == -3, i.e. its negative lag has increased. We cap it to the value saved at delayed dequeue (-2) with vlag = max(vlag, se->vlag); vlag == se->vlag but we need to place the entity with the new vlag se->vlag = vlag We want to check if the new value that we will set to se->vlag in update_entity_lag() will be different from the returned value of entity_lag(). entity_lag() reflects the current lag of the entity. If the value sets in se->vlag is different than entity_lag() and we want to keep the entity enqueued then we need to place it with the new vlag. And the opposite example se->vlag = -2 when the entity is delayed dequeued When the entity is requeued: update_entity_lag() vlag = entity_lag() == +1 We cap it at 0 with vlag = min(vlag, 0); vlag != se->vlag which is okay as we need to place the entity with the new vlag se->vlag = vlag and the last use case se->vlag = -2 when the entity is delayed dequeued When the entity is requeued: update_entity_lag() vlag = entity_lag() == -1 We don't modifiy vlag vlag != se->vlag but we don't need to place_the entity which is already correctly placed se->vlag = vlag > } > - ret = (vlag == se->vlag); > se->vlag = vlag; > > return ret;