mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: John Ogness <john.ogness@linutronix.de>
To: Chris Down <chris@chrisdown.name>, Petr Mladek <pmladek@suse.com>
Cc: linux-kernel@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Tony Lindgren <tony.lindgren@linux.intel.com>,
	kernel-team@fb.com
Subject: Re: [PATCH v7 11/13] printk: docs: Add comprehensive guidance for per-console loglevels
Date: Sun, 23 Nov 2025 22:27:04 +0106	[thread overview]
Message-ID: <87qztofnsv.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <60de5c9e249579d8d4e5a9423067157a462eb763.1763492585.git.chris@chrisdown.name>

On 2025-11-19, Chris Down <chris@chrisdown.name> wrote:
> diff --git a/Documentation/admin-guide/per-console-loglevel.rst b/Documentation/admin-guide/per-console-loglevel.rst
> index 4908d5d8ed4f..69eede12e20f 100644
> --- a/Documentation/admin-guide/per-console-loglevel.rst
> +++ b/Documentation/admin-guide/per-console-loglevel.rst
> @@ -97,6 +97,158 @@ are using ``ttyS0``, the console backing it can be viewed at
>    This will be in effect if no other global control overrides it. Look at
>    ``effective_loglevel`` and ``effective_loglevel_source`` to verify that.
>  
> +Examples
> +--------
> +
> +Setting per-console loglevel at runtime
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +Set serial console to only show warnings and above (level 4)::
> +
> +    echo 4 > /sys/class/console/ttyS0/loglevel

Setting it to 4 would only show "above warnings" ... you will not see
warning messages.

> +
> +Set netconsole to show info and above (level 6)::
> +
> +    echo 6 > /sys/class/console/netcon0/loglevel

Setting it to 6 would only show "above info" ... you will not see info
messages.

> +Common use case - high performance with serial fallback
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +A common configuration is to set netconsole to a verbose level for normal
> +debugging, while keeping the serial console quiet to avoid performance impact,
> +but still available for emergencies::
> +
> +    # Netconsole gets INFO and above (verbose)
> +    echo 6 > /sys/class/console/netcon0/loglevel

6 only shows "above INFO" ... you will not see INFO.

> +
> +    # Serial console gets only WARN and above (quiet, for emergencies)
> +    echo 4 > /sys/class/console/ttyS0/loglevel

4 only shows "above WARN" ... you will not see WARN.

> +
> +This allows you to see informational messages on the fast netconsole without
> +the latency impact of writing them to the slow serial port.
> +
> +Performance Impact
> +------------------
> +
> +When a console has a higher (less verbose) loglevel than the global level,
> +messages that would normally be sent to that console are filtered out before
> +the console write callback is invoked. This eliminates the latency that would
> +be incurred by writing those messages to slow consoles (e.g., serial ports).
> +
> +For example, setting a serial console to WARN level (4) while keeping
> +netconsole at INFO level (6) prevents INFO and NOTICE messages from being
> +written to the slow serial port, reducing application stalls during verbose
> +logging periods.

Setting serial to 4 will also prevent WARN messages.

> +
> +Serial console writes can take tens of milliseconds per message. During
> +periods of heavy logging (e.g., during network debugging or block I/O tracing),
> +this can cause significant application-level stalls. By setting a higher
> +per-console loglevel for the serial console, you can avoid these stalls while
> +still capturing all messages on faster consoles like netconsole.
> +
> +Troubleshooting
> +---------------
> +
> +Messages not appearing on console despite setting loglevel
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +1. Check effective loglevel source::
> +
> +       cat /sys/class/console/<name>/effective_loglevel_source
> +
> +   If it shows ``ignore_loglevel``, you have the ``printk.ignore_loglevel``
> +   kernel parameter set, which overrides all level controls. Remove it from
> +   your kernel command line or set it to N in sysfs::
> +
> +       echo N > /sys/module/printk/parameters/ignore_loglevel
> +
> +2. Check if per-console loglevels are being ignored::
> +
> +       cat /sys/module/printk/parameters/ignore_per_console_loglevel
> +
> +   If it shows ``Y``, per-console settings are disabled. Set it to N::
> +
> +       echo N > /sys/module/printk/parameters/ignore_per_console_loglevel
> +
> +3. Verify the message priority is high enough::
> +
> +       cat /sys/class/console/<name>/effective_loglevel
> +
> +   Messages must have priority less than this value to appear. For example,
> +   if effective_loglevel is 4, only messages with priority 0-3 (EMERG, ALERT,
> +   CRIT, ERR) will be printed. If you want to see WARN messages (priority 4),
> +   you need to increase the effective_loglevel to at least 5.

Yay! Here it is documented correctly. ;-)

> +
> +Cannot set loglevel to 0
> +~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +Per-console loglevels cannot be set to 0 (KERN_EMERG). This is by design, as
> +level 0 is reserved for the most critical system messages that should always
> +go to all consoles. To use the global loglevel, set the per-console loglevel
> +to -1::
> +
> +    echo -1 > /sys/class/console/<name>/loglevel
> +
> +Setting below minimum_console_loglevel fails
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +If you get an error when trying to set a loglevel, check the system-wide
> +minimum::
> +
> +    cat /proc/sys/kernel/console_loglevel
> +
> +Per-console loglevels cannot be set below this minimum. This is a safety
> +feature to ensure critical messages are always visible.
> +
> +Edge cases
> +~~~~~~~~~~
> +
> +**Setting all consoles to high loglevels**: If you set all consoles to
> +very high loglevels (e.g., 1 or 2), most messages won't appear anywhere.
> +This is valid but probably not what you want. Keep at least one console
> +at a reasonable level for monitoring.

Keep in mind that all messages (regardless of loglevel) are always
available to userspace via dmesg or syslogd. So saying "messages won't
appear anywhere" is a bit misleading.

John Ogness

  parent reply	other threads:[~2025-11-23 21:21 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-18 19:06 [PATCH v7 00/13] printk: console: Per-console loglevels Chris Down
2025-11-18 19:06 ` [PATCH v7 01/13] printk: Avoid delaying messages that aren't solicited by any console Chris Down
2025-11-18 19:33   ` Chris Down
2025-11-19 15:46     ` Petr Mladek
2025-11-18 19:06 ` [PATCH v7 02/13] printk: Use effective loglevel for suppression and extended console state Chris Down
2025-11-18 19:07 ` [PATCH v7 03/13] printk: console: Implement core per-console loglevel infrastructure Chris Down
2025-11-18 19:34   ` Chris Down
2025-11-19 16:49   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 04/13] printk: Ignore per-console loglevel in sysrq Chris Down
2025-11-19 16:51   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 05/13] printk: Add synchronisation for concurrent console state changes Chris Down
2025-11-19 16:58   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 06/13] printk: Support toggling per-console loglevel via syslog() and cmdline Chris Down
2025-11-20 10:05   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 07/13] printk: console: Introduce sysfs interface for per-console loglevels Chris Down
2025-11-20 16:50   ` Petr Mladek
2025-11-21 11:38   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 08/13] printk: Constrain hardware-addressed console checks to name position Chris Down
2025-11-18 19:07 ` [PATCH v7 09/13] printk: Support setting initial console loglevel via console= on cmdline Chris Down
2025-11-21 14:05   ` Petr Mladek
2025-11-18 19:07 ` [PATCH v7 10/13] printk: Add sysctl interface to set global loglevels Chris Down
2025-11-21 14:23   ` Petr Mladek
2025-11-18 19:08 ` [PATCH v7 11/13] printk: docs: Add comprehensive guidance for per-console loglevels Chris Down
2025-11-21 15:52   ` Petr Mladek
2025-11-23 21:21   ` John Ogness [this message]
2025-11-18 19:08 ` [PATCH v7 12/13] printk: Deprecate the kernel.printk sysctl interface Chris Down
2025-11-18 19:08 ` [PATCH v7 13/13] printk: Purge default_console_loglevel Chris Down

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=87qztofnsv.fsf@jogness.linutronix.de \
    --to=john.ogness@linutronix.de \
    --cc=chris@chrisdown.name \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=tony.lindgren@linux.intel.com \
    /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

all inboxes | Powered by JetHome®