Re: [PATCH 13/13] sh/irq: use seq_put_decimal_ull_width() for decimal values

From: David Wang
Date: Sat Nov 30 2024 - 08:35:46 EST



At 2024-11-30 20:44:26, "John Paul Adrian Glaubitz" <glaubitz@xxxxxxxxxxxxxxxxxxx> wrote:
>Hi David,
>
>On Sat, 2024-11-30 at 13:41 +0100, John Paul Adrian Glaubitz wrote:
>> On Sat, 2024-11-09 at 00:26 +0800, David Wang wrote:
>> > Performance improvement for reading /proc/interrupts on arch sh
>> >
>> > Signed-off-by: David Wang <00107082@xxxxxxx>
>> > ---
>> > arch/sh/kernel/irq.c | 4 ++--
>> > 1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
>> > index 4e6835de54cf..9022d8af9d68 100644
>> > --- a/arch/sh/kernel/irq.c
>> > +++ b/arch/sh/kernel/irq.c
>> > @@ -43,9 +43,9 @@ int arch_show_interrupts(struct seq_file *p, int prec)
>> > {
>> > int j;
>> >
>> > - seq_printf(p, "%*s: ", prec, "NMI");
>> > + seq_printf(p, "%*s:", prec, "NMI");
>> > for_each_online_cpu(j)
>> > - seq_printf(p, "%10u ", per_cpu(irq_stat.__nmi_count, j));
>> > + seq_put_decimal_ull_width(p, " ", per_cpu(irq_stat.__nmi_count, j), 10);
>> > seq_printf(p, " Non-maskable interrupts\n");
>> >
>> > seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
>>
>> Sorry for the very late reply!
>>
>> I don't quite understand why seq_put_decimal_ull_width() should be faster than seq_printf().
>>
>> Can you elaborate on this a bit more?
>
>I just checked existing merges of this patch for other architectures which include
>a more elaborate patch description. If you could do that for SH as well, I can pick
>the patch for v6.14.
>
>Adrian
>
>--
> .''`. John Paul Adrian Glaubitz
>: :' : Debian Developer
>`. `' Physicist
> `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

Sure, I will make the change.

To be honest, I do not have a SH platform to confirm the performance changes.
If convenient, a simple `strace -T -e read cat /proc/interrupts > /dev/null`
can be used to verify any improvement, and the core change in commit
f9ed1f7c2e26fcd1978(genirq/proc: Use seq_put_decimal_ull_width() for decimal values)
is needed.


Thanks
David