From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 13CDF80726 for ; Wed, 14 Oct 2026 11:17:55 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EBGhfJ031142; Wed, 14 Oct 2026 14:16:44 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EBGhfJ031142 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="lHCDC1I3" Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EBGakx031115 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 14 Oct 2026 14:16:36 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EBGakx031115 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-48b00febba3so3168884f8f.1 for ; Wed, 14 Oct 2026 04:16:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBye9omqF+HOMEFW4Mw2pWJQZwQ5gsqlG8TJ95YAMNU5VqwM5Ol6AGeitvBIQTkQPqVTyxiplA==@openvz.org X-Gm-Message-State: AFq9FYKnX0BTI2DUCUnai7YdwW15rAWNAjWkvmy5/kLYzrT6iuQDo2wg 65HKK21reZ/3XtXGrRAZgZ0GTr2ndi9DRqYtgcQ/OXF3h40Z/dARmlH8ewV3qzm96wkSbsPj0V7 npaOc5eEaxEL+aBbT1szLmIZwzYOpeP32g/fQvYt1eaqHmVvRw9ZLTQ== X-Gm-Gg: AYBFou3uTSIn2t98IDJWV7tR5K3byxxXabcL6sPAXcaHNHrO/n2pmqHqCG3GGcBT7kQ lxRUDn8Fr9FtDHDS2ktQ8qsxVMufha9gdZyLh8n3lwAWhiE8mjNH+e/SdpctybBFZYiDy7EmJ8h hWKMEASpEmnAEx8oyAVadU1fhYGQavsmuBn6JMyex6/JVLqnYu7lkOORWvQYv4fIoF4hwVTmfjS OLRDrhqg5M8vdJTBgV4WAsmiD/eHWYeBNA2mTNcUw8dZcGCBWNcy/MHzA8QuGfGoi7Ez0IXYFhj 1IzpP0zY5KZws3mAve6juurqD7G55B9wy++SXowvT4MRW0O5JlbKT+sqQ6vwTibh6o4OM92sqJw PGWd0ZKmfZC0vKzBsL2ndi9RXfrRnoQ== X-Received: by 2002:a05:600c:154b:b0:4a1:6af4:c6be with SMTP id 5b1f17b1804b1-4a18e4d1c0amr287969365e9.34.1791976596242; Wed, 14 Oct 2026 04:16:36 -0700 (PDT) X-Received: by 2002:a05:600c:154b:b0:4a1:6af4:c6be with SMTP id 5b1f17b1804b1-4a18e4d1c0amr287968625e9.34.1791976595609; Wed, 14 Oct 2026 04:16:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791976595; cv=none; d=google.com; s=arc-20260327; b=S/jXb05wSMBzUS8eoqO0PLGH5zO0VBjeG6iNVG+7UOeSK2BkQxpNW6cfdHcjzJvm9V hmwKK8JSeo1ZRyk8ZNA8a6Mt1NLndJW6HMYKdgXFsopOMxs1Bc16Tg1oQfNjIHZkUODR u8FPfGer7HDAmJPtvLcVVFCtGERzWI3OkBqJ7ypeIoVSizxv2pUCpkjNBDB3dg8MStwh AQVSR4gEvRN1Q+esNqNSrtpHnKG8nXaLru67rPk5JDb0pg1RXny/fRCYBOkZ7v6YY/D+ 1sDMnCHW2m9CmLbzWuQhH5AEjEgjmwVamcKJwu22AvN5ZgPuzHZoKU5wG+tKvCH3GBbH cjJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=VTRXjNrCrnqMAvSmTH1cD1dc0/Ey2ocVbbYSbu5VZBE=; fh=YUVjC/9FtpTN0Is9ifTJrOsbz/J/onroleA8inR1Ce8=; b=Kl3KssDHRbO4VJsuR2LtEPrfj24ZCPp0uoEGN6Pzm90yeO1cxjtCxKfgPgl19khT9R cD/dXwEF1bZNFJ4KEwp/acVeD+5rE+5/JzdaCLBuyMkRBdTZl5od+oXUSxxsJrcL3sO3 BC4LbLZimAZ1S1qCCPpi8YR74tQnbkG/lJwzx/qs5+nqd5IRMUuQSkTG8ZklDKg90GTo CEwQVFb/YDTXp6DhHWLou+wi4gjK9YU5mxk8nXtkDSSdg5csq5n6fpYhkwl9XMfSe+Lk CZpxqU3YqHQh+BUEKg0JBdgcbeJH/zXFsJipom8JK3mmXSNtm54czp4YzPVIF4cM8wle b0Lw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=lHCDC1I3; spf=pass (google.com: domain of vasileios.almpanis@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=vasileios.almpanis@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id 5b1f17b1804b1-4a18beddd4csi303281215e9.18.2026.10.14.04.16.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Oct 2026 04:16:35 -0700 (PDT) Received-SPF: pass (google.com: domain of vasileios.almpanis@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=lHCDC1I3; spf=pass (google.com: domain of vasileios.almpanis@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=vasileios.almpanis@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=VTRXjNrCrnqMAvSmTH1cD1dc0/Ey2ocVbbYSbu5VZBE=; b=lHCDC1I3slc/drhojs4 TxT8RWBnO1PDjMHKqX7ndhVACjlVJyIxsRL4fVmhLHvLxW9AB1Y5o30K7N44jtlqx50zisIqMV0GN 1HoT9caB2qZRfRJw6zYC6V6RL0/lsmIzsNhNjaSYmBOIO7zjDYv6G+Bv4P2SD3bE6PBayqEGuWzqZ WWR788ka6LbHATvD7JH01HGL7noeQd/SVJ/u4urcDbZ10xJa7hszz5ZyM5RxuktqoV7iEqXruqPRx +jOtgTpFl1b99LNHPgYpQo4PI9B9bvaxffq8ivwFGhVpB1D3O5alvralW8Xg0CxSZ5H+T2rCzX+jb wUhX5l5yxZTCkCA==; Received: from [130.117.225.5] (helo=dev010.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xGwus-001CVN-1S; Wed, 14 Oct 2026 13:16:34 +0200 From: Vasileios Almpanis Date: Wed, 14 Oct 2026 11:16:25 +0000 MIME-Version: 1.0 Message-Id: <20261014-ct-iowait-v1-2-9d65fe37cf89@virtuozzo.com> References: <20261014-ct-iowait-v1-0-9d65fe37cf89@virtuozzo.com> In-Reply-To: <20261014-ct-iowait-v1-0-9d65fe37cf89@virtuozzo.com> To: Konstantin Khorenko , Pavel Tikhomirov X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1791976595; l=2173; i=vasileios.almpanis@virtuozzo.com; s=20260812; h=from:subject:message-id; bh=id4Az+4H+5KH3VeXkOkBT/Nhu3ZCoBjL8lvs8mUrHqM=; b=r/t4D0J73lWAYIrAnYRsp24+8H3FzAo3JwRxD5o6/znaeHnP57Y5FtdNmp0lm/Q8ipjAg9WRR c33wl/6Pe/iC+zz/tPk8j5OguR7QsiqvC/Una03dBJ3Rd3Iz06S25jO X-Developer-Key: i=vasileios.almpanis@virtuozzo.com; a=ed25519; pk=HhuHDXAcPva9A8zccWEMRsb36reu+y4IVbBjXKxNUjw= X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 2/4] sched: keep cfs_rq::nr_iowait balanced for throttled and class changing tasks X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org Two more paths break the cfs_rq::nr_iowait pairing: - A throttled task can go to sleep in iowait before it returns to user space, e.g. in blkcg_maybe_throttle_current(). dequeue_throttled_task() doesn't increment the counter but the wakeup decrements it, so it wraps around. - A sleeping iowait task can change its class through sched_setscheduler() or rt_mutex_setprio(). Fair to RT leaves the counter incremented forever, RT to fair decrements it without an increment. A CT with both CPU and IO limits hits the first one. Fix it by incrementing the counter in dequeue_throttled_task() and by moving the task between the class counters in check_class_changed(), like sched_move_task() does for a cgroup change. https://virtuozzo.atlassian.net/browse/VSTOR-147823 Fixes: 415fe063c53e ("sched: Account cfs_rq::nr_iowait") Signed-off-by: Vasileios Almpanis Feature: sched: enhance task states granularity and accounting --- kernel/sched/core.c | 8 ++++++++ kernel/sched/fair.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index dc016d264d19..1acb98c0e8fa 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2271,6 +2271,14 @@ void check_class_changed(struct rq *rq, struct task_struct *p, int oldprio) { if (prev_class != p->sched_class) { + /* Move a sleeping iowait task to the new class accounting */ + if (task_in_nr_iowait(p)) { + if (prev_class->nr_iowait_dec) + prev_class->nr_iowait_dec(p); + if (p->sched_class->nr_iowait_inc) + p->sched_class->nr_iowait_inc(p); + } + if (prev_class->switched_from) prev_class->switched_from(rq, p); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5dd350a0e08b..df296edb828d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5834,6 +5834,8 @@ static void dequeue_throttled_task(struct task_struct *p, int flags) /* task blocked after throttled */ if (flags & DEQUEUE_SLEEP) { p->throttled = false; + if (p->in_iowait) + task_cfs_rq(p)->nr_iowait++; return; } -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel