Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4727556pxf; Tue, 30 Mar 2021 15:49:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyQocXlGKyTDmbc8yvmWdfvaIJ6TW7weAI9KdLhsKs9Cu8d5uKSUwZDH2p9GoREyhYhFz2R X-Received: by 2002:aa7:d296:: with SMTP id w22mr196325edq.150.1617144592669; Tue, 30 Mar 2021 15:49:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617144592; cv=none; d=google.com; s=arc-20160816; b=onvUcXQNd8PDh+uqCxT3HymppMmafRewpFRRLZeZTkeKwodoXnoNUR7IErKwljmIqW AGRxZ8WY7c9GBgPa7dvujVQ0YaGKLOupbBTI9sGbfuPqwH3bwICGZ9Av8eoFX7x637Ma gz/2lSjD6el1QqguUxl1XEHuYLLdphtoFNthaeJIyy6FVRscV5OxznHK10n6tDIZb2lt jSGD8KVSyj1cnzCXGjb7KP800fQ7ndH7AXLPzxkLk/nDPuL4JAd1ZNe5POGak4sZMYHb CsOzmHNy1SH75aCJ+tE4VFVMyyzDAPHgu+YOnLPPeVmDKGmETPoRu+4+0tN3cbnRluEW +3Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=yB9UXx4euC3dVXDwExAh5VQzx8TVjtxe2UHS0AN58TQ=; b=hdfP4kkR9isVloI3hw3dbfGmiVmY4ensoIKUC6RuVKOKVMXrSsza3Nw86s4ynz+EXK xJJPCI35MAxJjifIw1yub95kSiM9RlAn5wZtlKwhckLSMELNyqCvRX32ba/e6zjWv5ex Z1SGI7mL4WOQ0QCXmBgmkvKaGtbTHsyVAcZnTEfKKo++yChUBgMU1a7nITy6sZBhM3P7 k9MOKDjoh0pyFgKVrCPZOakP04+7uJY8K54qbPzrgpzGpEFG5hktiUG26Z9u4Tkaacfx /UjCuVUKxFcAK4mLIvXrWx1mLh2DXpDllnXR8dcSsD+tkjlzbYPJ1QZ+bLhrdkN781B5 crUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=aQamFp1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si310609edo.16.2021.03.30.15.49.30; Tue, 30 Mar 2021 15:49:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=aQamFp1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233069AbhC3Woq (ORCPT + 99 others); Tue, 30 Mar 2021 18:44:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232988AbhC3Wo1 (ORCPT ); Tue, 30 Mar 2021 18:44:27 -0400 Received: from mail-qv1-xf2f.google.com (mail-qv1-xf2f.google.com [IPv6:2607:f8b0:4864:20::f2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9224C061764 for ; Tue, 30 Mar 2021 15:44:24 -0700 (PDT) Received: by mail-qv1-xf2f.google.com with SMTP id q9so9041539qvm.6 for ; Tue, 30 Mar 2021 15:44:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=yB9UXx4euC3dVXDwExAh5VQzx8TVjtxe2UHS0AN58TQ=; b=aQamFp1Zhjay23SpYkC7BS7c6FNQ6us330jhOYcr/0sFTHugimuYHz4PRTsH9VScit yVQQrU5ilvT8kk/DUwXONR/SqfUZ3Km+QcgP7KFTxTlzH2jKxOW4NbzWJyyfIuRbjxNh DsSOVQQLpwYHwrqwmB406grnXG13/rLzHLc9kirSpWVPNSMiUkkccjo+oB8w+M5BvCHF rq+97GQg+yMoPUD9Tq+rUmdVf+O+IF4oKBNpULufz8Aspbad5vGNI4rHsWvEmYC56Ttn f17CK3Q12VvkcbIg0wimMFqxEggg/TEcUTCoJgLs1V/TRdGv4lsxWtaYE/5XvzRiUtba dsjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=yB9UXx4euC3dVXDwExAh5VQzx8TVjtxe2UHS0AN58TQ=; b=lKFmmDxJ3Fg/1r1ViQLeC6TRfnumIS/Ag1UGjRMQwra4jstmoWF7McHj46UtJ+0UK1 bn5lKNEsMubbVSJWZPxkg+eRdJeZvjrMSLkW2j8yEu8uj4YxnGvE7qSQ0nXqY0wyMTOo ZW3iyhQXaCfYeGoKpY/tQnxH13TORx2a7NEwCZzVCWhI+0OJraNjUMTkaYB6vKz0OhCF fKa+C84yBn+3ZjKTIQSWm5F4sT6jOvyhkLCkNmfa4vedHf7NSzYQvbos+6omh+79OTk4 ErGU+I/2l1c0cAXRdJy3BNl0YjcoISuVihOCTX7s0UNfuJacv8rw/dWGFcOjYNR/ZDCo iAXQ== X-Gm-Message-State: AOAM533172iB3yjcjVpzLn1MwbsaVawhJX68jUFMvgQ5sLaw7poddff7 QXP7w5XN5bkmPUPRslS/serACho7E+H6HGZrCNxCSQ== X-Received: by 2002:ad4:4ae6:: with SMTP id cp6mr196533qvb.43.1617144263775; Tue, 30 Mar 2021 15:44:23 -0700 (PDT) MIME-Version: 1.0 References: <20210323035706.572953-1-joshdon@google.com> <20210324112739.GO15768@suse.de> In-Reply-To: From: Josh Don Date: Tue, 30 Mar 2021 15:44:12 -0700 Message-ID: Subject: Re: [PATCH v2] sched: Warn on long periods of pending need_resched To: Mel Gorman , Peter Zijlstra Cc: Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Daniel Bristot de Oliveira , Luis Chamberlain , Kees Cook , Iurii Zaikin , linux-kernel , linux-fsdevel@vger.kernel.org, David Rientjes , Oleg Rombakh , linux-doc@vger.kernel.org, Paul Turner Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Peter, Since you've already pulled the need_resched warning patch into your tree, I'm including just the diff based on that patch (in response to Mel's comments) below. This should be squashed into the original patch. Thanks, Josh --- From 85796b4d299b1cf3f99bde154a356ce1061221b7 Mon Sep 17 00:00:00 2001 From: Josh Don Date: Mon, 22 Mar 2021 20:57:06 -0700 Subject: [PATCH] fixup: sched: Warn on long periods of pending need_resched --- kernel/sched/core.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 6fdf15eebc0d..c07a4c17205f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -61,17 +61,13 @@ const_debug unsigned int sysctl_sched_features = /* * Print a warning if need_resched is set for the given duration (if - * resched_latency_warn_enabled is set). + * LATENCY_WARN is enabled). * * If sysctl_resched_latency_warn_once is set, only one warning will be shown * per boot. - * - * Resched latency will be ignored for the first resched_boot_quiet_sec, to - * reduce false alarms. */ -int sysctl_resched_latency_warn_ms = 100; -int sysctl_resched_latency_warn_once = 1; -static const long resched_boot_quiet_sec = 600; +__read_mostly int sysctl_resched_latency_warn_ms = 100; +__read_mostly int sysctl_resched_latency_warn_once = 1; #endif /* CONFIG_SCHED_DEBUG */ /* @@ -4542,20 +4538,19 @@ unsigned long long task_sched_runtime(struct task_struct *p) } #ifdef CONFIG_SCHED_DEBUG -static u64 resched_latency_check(struct rq *rq) +static u64 cpu_resched_latency(struct rq *rq) { int latency_warn_ms = READ_ONCE(sysctl_resched_latency_warn_ms); - u64 need_resched_latency, now = rq_clock(rq); + u64 resched_latency, now = rq_clock(rq); static bool warned_once; if (sysctl_resched_latency_warn_once && warned_once) return 0; - if (!need_resched() || WARN_ON_ONCE(latency_warn_ms < 2)) + if (!need_resched() || !latency_warn_ms) return 0; - /* Disable this warning for the first few mins after boot */ - if (now < resched_boot_quiet_sec * NSEC_PER_SEC) + if (system_state == SYSTEM_BOOTING) return 0; if (!rq->last_seen_need_resched_ns) { @@ -4565,13 +4560,13 @@ static u64 resched_latency_check(struct rq *rq) } rq->ticks_without_resched++; - need_resched_latency = now - rq->last_seen_need_resched_ns; - if (need_resched_latency <= latency_warn_ms * NSEC_PER_MSEC) + resched_latency = now - rq->last_seen_need_resched_ns; + if (resched_latency <= latency_warn_ms * NSEC_PER_MSEC) return 0; warned_once = true; - return need_resched_latency; + return resched_latency; } static int __init setup_resched_latency_warn_ms(char *str) @@ -4588,7 +4583,7 @@ static int __init setup_resched_latency_warn_ms(char *str) } __setup("resched_latency_warn_ms=", setup_resched_latency_warn_ms); #else -static inline u64 resched_latency_check(struct rq *rq) { return 0; } +static inline u64 cpu_resched_latency(struct rq *rq) { return 0; } #endif /* CONFIG_SCHED_DEBUG */ /* @@ -4614,7 +4609,7 @@ void scheduler_tick(void) update_thermal_load_avg(rq_clock_thermal(rq), rq, thermal_pressure); curr->sched_class->task_tick(rq, curr, 0); if (sched_feat(LATENCY_WARN)) - resched_latency = resched_latency_check(rq); + resched_latency = cpu_resched_latency(rq); calc_global_load_tick(rq); rq_unlock(rq, &rf); -- 2.31.0.291.g576ba9dcdaf-goog