From: Dmitry Ilvokhin <d@ilvokhin.com>
To: Thomas Gleixner <tglx@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
x86@kernel.org, Michael Kelley <mhklinux@outlook.com>,
Radu Rendec <radu@rendec.net>,
Jan Kiszka <jan.kiszka@siemens.com>,
Kieran Bingham <kbingham@kernel.org>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Marc Zyngier <maz@kernel.org>
Subject: Re: [patch V4 15/15] genirq/proc: Speed up /proc/interrupts iteration
Date: Tue, 31 Mar 2026 16:04:31 +0000 [thread overview]
Message-ID: <acvwjz8K-85p_LUG@shell.ilvokhin.com> (raw)
In-Reply-To: <20260331072419.549056774@kernel.org>
On Tue, Mar 31, 2026 at 09:26:40AM +0200, Thomas Gleixner wrote:
> From: Thomas Gleixner <tglx@kernel.org>
>
> Reading /proc/interrupts iterates over the interrupt number space one by
> one and looks up the descriptors one by one. That's just a waste of time.
>
> When CONFIG_GENERIC_IRQ_SHOW is enabled this can utilize the maple tree and
> cache the descriptor pointer efficiently for the sequence file operations.
>
> Implement a CONFIG_GENERIC_IRQ_SHOW specific version in the core code and
> leave the fs/proc/ variant for the legacy architectures which ignore generic
> code.
>
> This reduces the time wasted for looking up the next record significantly.
>
> Signed-off-by: Thomas Gleixner <tglx@kernel.org>
> ---
[...]
>
> - /* print header and calculate the width of the first column */
> - if (i == 0) {
> - seq_printf(p, "%*s", prec + 8, "");
> - for_each_online_cpu(j)
> - seq_printf(p, "CPU%-8d", j);
> + /* print header for the first interrupt indicated by !p>private */
nit: This comment seems a bit out of place here, since we are looking at
constr->print_header directly here.
> + if (constr->print_header) {
> + unsigned int cpu;
> +
> + seq_printf(p, "%*s", constr->num_prec + 8, "");
> + for_each_online_cpu(cpu)
> + seq_printf(p, "CPU%-8d", cpu);
> seq_putc(p, '\n');
> + constr->print_header = false;
> }
While at it, moving the print_header block above the ARCH_PROC_IRQDESC
check would make the code more robust. If there are no valid descriptors
to display, the CPU column header would still be printed before
arch_show_interrupts() output. Not a practical issue, but it makes the
logic obviously correct.
Reviewed-by: Dmitry Ilvokhin <d@ilvokhin.com>
prev parent reply other threads:[~2026-03-31 16:04 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 7:25 [patch V4 00/15] Improve /proc/interrupts further Thomas Gleixner
2026-03-31 7:25 ` [patch V4 01/15] x86/irq: Optimize interrupts decimals printing Thomas Gleixner
2026-03-31 7:25 ` [patch V4 02/15] genirq/proc: Avoid formatting zero counts in /proc/interrupts Thomas Gleixner
2026-03-31 7:25 ` [patch V4 03/15] genirq/proc: Utilize irq_desc::tot_count to avoid evaluation Thomas Gleixner
2026-03-31 7:25 ` [patch V4 04/15] x86/irq: Make irqstats array based Thomas Gleixner
2026-03-31 14:45 ` Thomas Gleixner
2026-03-31 7:25 ` [patch V4 05/15] x86/irq: Suppress unlikely interrupt stats by default Thomas Gleixner
2026-03-31 21:12 ` Radu Rendec
2026-03-31 7:25 ` [patch V4 06/15] x86/irq: Move IOAPIC misrouted and PIC/APIC error counts into irq_stats Thomas Gleixner
2026-03-31 21:40 ` Radu Rendec
2026-03-31 7:26 ` [patch V4 07/15] scripts/gdb: Update x86 interrupts to the array based storage Thomas Gleixner
2026-03-31 14:47 ` Thomas Gleixner
2026-03-31 7:26 ` [patch V4 08/15] genirq: Expose nr_irqs in core code Thomas Gleixner
2026-03-31 7:26 ` [patch V4 09/15] genirq/manage: Make NMI cleanup RT safe Thomas Gleixner
2026-03-31 7:26 ` [patch V4 10/15] genirq: Cache the condition for /proc/interrupts exposure Thomas Gleixner
2026-03-31 7:26 ` [patch V4 11/15] genirq: Calculate precision only when required Thomas Gleixner
2026-03-31 7:26 ` [patch V4 12/15] genirq: Add rcuref count to struct irq_desc Thomas Gleixner
2026-03-31 7:26 ` [patch V4 13/15] genirq: Expose irq_find_desc_at_or_after() in core code Thomas Gleixner
2026-03-31 13:48 ` Dmitry Ilvokhin
2026-03-31 7:26 ` [patch V4 14/15] genirq/proc: Runtime size the chip name Thomas Gleixner
2026-03-31 14:22 ` Dmitry Ilvokhin
2026-03-31 7:26 ` [patch V4 15/15] genirq/proc: Speed up /proc/interrupts iteration Thomas Gleixner
2026-03-31 16:04 ` Dmitry Ilvokhin [this message]
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=acvwjz8K-85p_LUG@shell.ilvokhin.com \
--to=d@ilvokhin.com \
--cc=florian.fainelli@broadcom.com \
--cc=jan.kiszka@siemens.com \
--cc=kbingham@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mhklinux@outlook.com \
--cc=radu@rendec.net \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.