The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Aaron Tomlin <atomlin@atomlin.com>
To: akpm@linux-foundation.org, lance.yang@linux.dev,
	mhiramat@kernel.org, pmladek@suse.com
Cc: linux-kernel@vger.kernel.org, david.laight.linux@gmail.com,
	atomlin@atomlin.com, neelx@suse.com, sean@ashe.io,
	chjohnst@gmail.com, steve@abita.co, mproche@gmail.com,
	nick.lange@gmail.com
Subject: [PATCH 0/2] hung_task: Improve warning budget handling and task reporting
Date: Mon,  3 Aug 2026 20:15:40 -0400	[thread overview]
Message-ID: <20260804001542.249639-1-atomlin@atomlin.com> (raw)

The hung_task watchdog detects tasks stuck in uninterruptible (D) state for
longer than CONFIG_DEFAULT_HUNG_TASK_TIMEOUT seconds. To prevent log spam
during system spikes, sysctl_hung_task_warnings enforces a budget on the
number of logged warnings.

However, the current implementation has two major limitations:

    1. Permanent exhaustion of warning budget

       sysctl_hung_task_warnings is decremented directly when printing
       warnings. Once this budget hits zero, no further warnings are
       reported until an administrator manually updates the sysctl value or
       reboots the system. Consequently, a single temporary hang episode
       permanently blinds the kernel watchdog to any subsequent hung tasks
       after system recovery.

    2. Total log suppression when budget is exhausted

       Once the warning budget reaches zero, hung_task_info() completely
       suppresses all output, including the basic single-line alert. While
       suppressing verbose stack dumps and lock debugging is desirable to
       prevent dmesg flooding, hiding basic task alerts leaves
       administrators entirely unaware that tasks are hanging.

This patch series resolves both limitations by decoupling the configured
warning budget from the runtime warning counter, automatically resetting
the budget when the system recovers, and keeping basic single-line hung
task alerts visible.

Patch 1 decouples the user-configured limit sysctl_hung_task_warnings from
the runtime counter hung_task_warnings_printed, automatically resetting
hung_task_warnings_printed back to the configured limit whenever a check
interval passes with zero hung tasks detected. The runtime counter is also
kept synchronized whenever the sysctl parameter is modified, and the
corresponding sysctl documentation
(Documentation/admin-guide/sysctl/kernel.rst) is updated to reflect this
auto-reset behaviour.

Patch 2 ensures that the basic single-line pr_err("INFO: task %s:%d
blocked...") header is always logged regardless of warning budget
exhaustion, while restricting warning budget enforcement solely to verbose
diagnostics such as process stack dumps, taint and release information, and
lock blocker details. Additionally, it updates the warning exhaustion log
message to clarify to administrators that future reports will only omit
detailed process dumps rather than being completely suppressed.


Petr Mladek (2):
  hung_task: Reset warning budget when problem gets resolved
  hung_task: Always print basic hung task info header

 Documentation/admin-guide/sysctl/kernel.rst |  6 ++-
 kernel/hung_task.c                          | 46 +++++++++++++++------
 2 files changed, 38 insertions(+), 14 deletions(-)

-- 
2.55.0


             reply	other threads:[~2026-08-04  0:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-04  0:15 Aaron Tomlin [this message]
2026-08-04  0:15 ` [PATCH 1/2] hung_task: Reset warning budget when problem gets resolved Aaron Tomlin
2026-08-04  2:24   ` Lance Yang
2026-08-04 14:19     ` Aaron Tomlin
2026-08-04  3:18   ` Lance Yang
2026-08-04 14:54     ` Aaron Tomlin
2026-08-04  0:15 ` [PATCH 2/2] hung_task: Always print basic hung task info header Aaron Tomlin
2026-08-04  3:19   ` Lance Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260804001542.249639-1-atomlin@atomlin.com \
    --to=atomlin@atomlin.com \
    --cc=akpm@linux-foundation.org \
    --cc=chjohnst@gmail.com \
    --cc=david.laight.linux@gmail.com \
    --cc=lance.yang@linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mproche@gmail.com \
    --cc=neelx@suse.com \
    --cc=nick.lange@gmail.com \
    --cc=pmladek@suse.com \
    --cc=sean@ashe.io \
    --cc=steve@abita.co \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox