From nobody Tue Jun 23 09:12:56 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA641C433EF for ; Tue, 8 Mar 2022 06:51:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245270AbiCHGwm (ORCPT ); Tue, 8 Mar 2022 01:52:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240464AbiCHGwj (ORCPT ); Tue, 8 Mar 2022 01:52:39 -0500 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80E5D3B56E for ; Mon, 7 Mar 2022 22:51:43 -0800 (PST) Received: by mail-pl1-x631.google.com with SMTP id q11so16201627pln.11 for ; Mon, 07 Mar 2022 22:51:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Py+/2I82hZgEAkzSNSpXO9rRa8ve5Nzd4Q+/tF/AJDI=; b=quQDtSanY/xkOr+rnfdJl2C5tTWTwrM6rsprMT0fGu9LlRlc6WsGTRUP0ERsDmqVKD GROfQ5PjhPkqn4/ZVJRltl9qXS1Jzvtsfx/yp+pmGqEm4klJ62xWpGjx6fbWD9p/FgIA VhBpUf/zvKw4dZLUQsx8i4pl33PetEj2Ri5fYI24zErTAsDfPnjDSPd3KmPsmEPfPi0/ I7sfPOJ1wAcZQZY2FxW5NSxbB0R5CaZMv36mEjEKmyGcPUWzm57g5Q1reBlHIjX6hgN2 qZrRfwWkq5FoH5nvcCFJm6aFy5+V3fAGoX5QyGhVvt0RaZ9K7Wku19xNrqD0UMWr0LcI JZzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Py+/2I82hZgEAkzSNSpXO9rRa8ve5Nzd4Q+/tF/AJDI=; b=1sFU301ySfVmV7Hg2NRZiEy3Jsle9iEszn4SSQbWgiVKDySMaCyvaa9LWEw7MDb9Gm O+n8nbc38ejI5eJFxFZVAe+w9bv+1qRpP19bgOsT/hjIVJaULtqHycQvgpzF3rYo0TF1 +txLlLVwYqpUMyTeq617a62n6W0Vr7NeKJU0QEHaeylduOTxdi2V4Dhdl/tu2rw2Jja/ r7V/uEguDca+CjiGWPbQPvFk4XmfxJKGD8M53vikUDi3VK8Z8ypQC4RPJ+P8f57kMtQY 1TAQDRoOeSEesmn8i1mUwSSxhlU8aPv19rErOauLWOSYSXxJ/qJk2tjCigso4o3mxWvh KPYg== X-Gm-Message-State: AOAM533OWwHpIiqBEe4sG9u5C18RmdJB9iv1DSeTuETf4kA1t0Axyr1W SKo7TW3eANsTPv/fZME4EBQ= X-Google-Smtp-Source: ABdhPJyhEGWdmRLKPGqjmx0lekjgL8qJXKCrWTJXz665516vdJmldwaZzzkoA0MKTG3fGG1VMdeehw== X-Received: by 2002:a17:902:e54a:b0:151:d21c:7e8e with SMTP id n10-20020a170902e54a00b00151d21c7e8emr14515066plf.1.1646722303076; Mon, 07 Mar 2022 22:51:43 -0800 (PST) Received: from mi.xiaomi.com ([43.224.245.250]) by smtp.gmail.com with ESMTPSA id 17-20020a056a00071100b004f0f941d1e8sm17166446pfl.24.2022.03.07.22.51.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Mar 2022 22:51:42 -0800 (PST) From: Jian Wen X-Google-Original-From: Jian Wen To: peterz@infradead.org Cc: mingo@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, linux-kernel@vger.kernel.org, Jian Wen Subject: [PATCH 1/2] sched: explicitly distinguish between TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE Date: Tue, 8 Mar 2022 14:51:09 +0800 Message-Id: <20220308065110.636947-2-wenjian1@xiaomi.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308065110.636947-1-wenjian1@xiaomi.com> References: <20220308065110.636947-1-wenjian1@xiaomi.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It is impossible to be a task of two different states, which are TASK_UNINTERRUPTIBLE and TASK_INTERRUPTIBLE, at the same time. This patch makes the next one easier to review. Signed-off-by: Jian Wen --- kernel/sched/deadline.c | 3 +-- kernel/sched/fair.c | 2 +- kernel/sched/rt.c | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index d2c072b0ef01..e6fe3b46432a 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1543,8 +1543,7 @@ update_stats_dequeue_dl(struct dl_rq *dl_rq, struct s= ched_dl_entity *dl_se, if (state & TASK_INTERRUPTIBLE) __schedstat_set(p->stats.sleep_start, rq_clock(rq_of_dl_rq(dl_rq))); - - if (state & TASK_UNINTERRUPTIBLE) + else if (state & TASK_UNINTERRUPTIBLE) __schedstat_set(p->stats.block_start, rq_clock(rq_of_dl_rq(dl_rq))); } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5146163bfabb..fcfb22c835e4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -989,7 +989,7 @@ update_stats_dequeue_fair(struct cfs_rq *cfs_rq, struct= sched_entity *se, int fl if (state & TASK_INTERRUPTIBLE) __schedstat_set(tsk->stats.sleep_start, rq_clock(rq_of(cfs_rq))); - if (state & TASK_UNINTERRUPTIBLE) + else if (state & TASK_UNINTERRUPTIBLE) __schedstat_set(tsk->stats.block_start, rq_clock(rq_of(cfs_rq))); } diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 7b4f4fbbb404..5c4160f8cb23 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1387,8 +1387,7 @@ update_stats_dequeue_rt(struct rt_rq *rt_rq, struct s= ched_rt_entity *rt_se, if (state & TASK_INTERRUPTIBLE) __schedstat_set(p->stats.sleep_start, rq_clock(rq_of_rt_rq(rt_rq))); - - if (state & TASK_UNINTERRUPTIBLE) + else if (state & TASK_UNINTERRUPTIBLE) __schedstat_set(p->stats.block_start, rq_clock(rq_of_rt_rq(rt_rq))); } --=20 2.25.1 From nobody Tue Jun 23 09:12:56 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7526C433EF for ; Tue, 8 Mar 2022 06:51:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245521AbiCHGwo (ORCPT ); Tue, 8 Mar 2022 01:52:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245179AbiCHGwm (ORCPT ); Tue, 8 Mar 2022 01:52:42 -0500 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BFDEB3CFD0 for ; Mon, 7 Mar 2022 22:51:46 -0800 (PST) Received: by mail-pl1-x62f.google.com with SMTP id m2so10241887pll.0 for ; Mon, 07 Mar 2022 22:51:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sjRoLsseXs9PMpYjNJPxbbZENtKg37mqLrEPXGlUnVg=; b=hbDKR83zm77FpxqQ3JLULQiu5dHII84DQaKxu+Gsm1lfLpFJ9DzUu4UwqB71kqdZi8 sJQbLjRrJRzOG6GbO2TkM6Jaqry68k376xfyEgHFiQD249Slr+XV3auACFpJ7ABpfnhp mDVCsfMxKsVmGf79C/1SBe8f5qCryGgfglbCcKJs6oYHQAuX73WGQPA6ymUFf/OF1+XM tGYqQGHiCuB4zulW3INmPc+31ksjcRUBK6IKBvA/r/ifwGrIlWOTJ/nE+V4gDIKy4szq z9vutIY+ZhS9wIwpI/SYWDA88Jh1B7SC81QcRQXIYdsqWvgG7+lVL3YStZ3v0IlO5uR0 bIgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sjRoLsseXs9PMpYjNJPxbbZENtKg37mqLrEPXGlUnVg=; b=MAjgHGRcD2eY9Vkpj0kDmlKHDMi35KvR+PiWrgxl1pgvSSiycpsorj0Qu+erXbwnpp 5O1EsuC3HPipzhh/ZDmjePRekg1MpBtd+JmwTIs2GjZPXlPH7s/E7/E/9GYvQbN51Rsp wsbdta6XpSSeC4ZLRWZyQJHB74h5mDjBmSdsyOiLlbq1DHIHsguxxYkT7nCBHX7svBub yWO0AWzPeckbe2mGAxlaW2GDv+DrqP3L/wQk6Fbq0yhtyWCh/60IMkCs4dsCG3TuRODT PLbhtdOOiFcYNRhfHD9CBwZ2RVc2edSlLn5j3kmJkVpn0sCFYsXTmkxBnTYl202bwDK4 ocQw== X-Gm-Message-State: AOAM532pJtrA80vJapDSM0ZgbkNsQGPc+2FIi6knTQwvxmG0vIO8GFPd 7REx2oerPLCCWJAmEqDq9wI= X-Google-Smtp-Source: ABdhPJy8KGlFukSVyT8cL0sNsOIDPJ9+ZVFzRgwj4WUOkoMJU47MwGUxHl5GSdVzISjwk8H1hU6tNA== X-Received: by 2002:a17:902:ce91:b0:150:3f7:5096 with SMTP id f17-20020a170902ce9100b0015003f75096mr15731456plg.128.1646722306245; Mon, 07 Mar 2022 22:51:46 -0800 (PST) Received: from mi.xiaomi.com ([43.224.245.250]) by smtp.gmail.com with ESMTPSA id 17-20020a056a00071100b004f0f941d1e8sm17166446pfl.24.2022.03.07.22.51.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Mar 2022 22:51:45 -0800 (PST) From: Jian Wen X-Google-Original-From: Jian Wen To: peterz@infradead.org Cc: mingo@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, linux-kernel@vger.kernel.org, Jian Wen Subject: [PATCH 2/2] sched: fix schedstats for idle kthreads Date: Tue, 8 Mar 2022 14:51:10 +0800 Message-Id: <20220308065110.636947-3-wenjian1@xiaomi.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308065110.636947-1-wenjian1@xiaomi.com> References: <20220308065110.636947-1-wenjian1@xiaomi.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Idle kthreads are sleeping instead of being blocked, since they are not blocked at all. This patch make idle kthreads triggers the sched:sched_stat_sleep event instead of sched:sched_stat_blocked. Testing: A kernel module[1] is used to trigger sched:sched_stat_blocked/sleep event. $ sudo sysctl -w kernel.sched_schedstats=3D1 kernel.sched_schedstats =3D 1 IDLE task now triggers the sched_stat_sleep event instead of sched_stat_blocked: $ sudo perf record -e sched:sched_stat_blocked -e sched:sched_stat_sleep in= smod ./delay.ko $ sudo perf script ... swapper 0 [000] 546.194819: sched:sched_stat_sleep: comm=3Dinsmod p= id=3D1073 delay=3D4039079114 [ns] ... UNINTERRUPTIBLE task still triggers sched:sched_stat_blocked: $ sudo perf record -e sched:sched_stat_blocked -e sched:sched_stat_sleep in= smod ./delay.ko block=3D1 $ sudo perf script ... swapper 0 [000] 473.874658: sched:sched_stat_blocked: comm=3Dinsmod p= id=3D1062 delay=3D4044046956 [ns] ... [1] static int block=3D0; module_param(block, int, 0660); static int __init init_delay(void) { if (block) set_current_state(TASK_UNINTERRUPTIBLE); else set_current_state(TASK_IDLE); schedule_timeout(4*HZ); return 0; } Signed-off-by: Jian Wen --- kernel/sched/deadline.c | 2 +- kernel/sched/fair.c | 2 +- kernel/sched/rt.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index e6fe3b46432a..f7e60c5983e8 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1540,7 +1540,7 @@ update_stats_dequeue_dl(struct dl_rq *dl_rq, struct s= ched_dl_entity *dl_se, unsigned int state; =20 state =3D READ_ONCE(p->__state); - if (state & TASK_INTERRUPTIBLE) + if (state & TASK_INTERRUPTIBLE || state =3D=3D TASK_IDLE) __schedstat_set(p->stats.sleep_start, rq_clock(rq_of_dl_rq(dl_rq))); else if (state & TASK_UNINTERRUPTIBLE) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index fcfb22c835e4..f1eb0cf8dea3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -986,7 +986,7 @@ update_stats_dequeue_fair(struct cfs_rq *cfs_rq, struct= sched_entity *se, int fl =20 /* XXX racy against TTWU */ state =3D READ_ONCE(tsk->__state); - if (state & TASK_INTERRUPTIBLE) + if (state & TASK_INTERRUPTIBLE || state =3D=3D TASK_IDLE) __schedstat_set(tsk->stats.sleep_start, rq_clock(rq_of(cfs_rq))); else if (state & TASK_UNINTERRUPTIBLE) diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 5c4160f8cb23..f3cc5618ec57 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1384,7 +1384,7 @@ update_stats_dequeue_rt(struct rt_rq *rt_rq, struct s= ched_rt_entity *rt_se, unsigned int state; =20 state =3D READ_ONCE(p->__state); - if (state & TASK_INTERRUPTIBLE) + if (state & TASK_INTERRUPTIBLE || state =3D=3D TASK_IDLE) __schedstat_set(p->stats.sleep_start, rq_clock(rq_of_rt_rq(rt_rq))); else if (state & TASK_UNINTERRUPTIBLE) --=20 2.25.1