2019-02-08 13:55:25

by Thomas Gleixner

[permalink] [raw]
Subject: [patch V2 0/2] genirq, proc: Speedup /proc/stat interrupt statistics

Waiman reported that on large systems with a large amount of interrupts the
readout of /proc/stat takes a long time to sum up the interrupt
statistics. In principle this is not a problem. but for unknown reasons
some enterprise quality software reads /proc/stat with a high frequency.

The reason for this is that interrupt statistics are accounted per cpu. So
the /proc/stat logic has to sum up the interrupt stats for each interrupt.

The following series addresses this by making the interrupt statitics code
in the core generate the sum directly and by making the loop in the
/proc/stat read function smarter.

V1 -> V2: Address review feedback: undo struct layout changes, make
variables unsigned and add test results to the changelog.

Thanks,

tglx

8<----------------
fs/proc/stat.c | 29 ++++++++++++++++++++++++++---
include/linux/irqdesc.h | 1 +
kernel/irq/chip.c | 12 ++++++++++--
kernel/irq/internals.h | 8 +++++++-
kernel/irq/irqdesc.c | 7 ++++++-
5 files changed, 50 insertions(+), 7 deletions(-)



2019-02-08 15:20:44

by Waiman Long

[permalink] [raw]
Subject: Re: [patch V2 0/2] genirq, proc: Speedup /proc/stat interrupt statistics

On 02/08/2019 08:48 AM, Thomas Gleixner wrote:
> Waiman reported that on large systems with a large amount of interrupts the
> readout of /proc/stat takes a long time to sum up the interrupt
> statistics. In principle this is not a problem. but for unknown reasons
> some enterprise quality software reads /proc/stat with a high frequency.
>
> The reason for this is that interrupt statistics are accounted per cpu. So
> the /proc/stat logic has to sum up the interrupt stats for each interrupt.
>
> The following series addresses this by making the interrupt statitics code
> in the core generate the sum directly and by making the loop in the
> /proc/stat read function smarter.
>
> V1 -> V2: Address review feedback: undo struct layout changes, make
> variables unsigned and add test results to the changelog.
>
> Thanks,
>
> tglx
>
> 8<----------------
> fs/proc/stat.c | 29 ++++++++++++++++++++++++++---
> include/linux/irqdesc.h | 1 +
> kernel/irq/chip.c | 12 ++++++++++--
> kernel/irq/internals.h | 8 +++++++-
> kernel/irq/irqdesc.c | 7 ++++++-
> 5 files changed, 50 insertions(+), 7 deletions(-)
>
Thanks for the patch.

Reviewed-by: Waiman Long <[email protected]>

-Longman


2019-02-08 17:02:42

by Davidlohr Bueso

[permalink] [raw]
Subject: Re: [patch V2 0/2] genirq, proc: Speedup /proc/stat interrupt statistics

On Fri, 08 Feb 2019, Thomas Gleixner wrote:

>Waiman reported that on large systems with a large amount of interrupts the
>readout of /proc/stat takes a long time to sum up the interrupt
>statistics. In principle this is not a problem. but for unknown reasons
>some enterprise quality software reads /proc/stat with a high frequency.

:)

>
>The reason for this is that interrupt statistics are accounted per cpu. So
>the /proc/stat logic has to sum up the interrupt stats for each interrupt.
>
>The following series addresses this by making the interrupt statitics code
>in the core generate the sum directly and by making the loop in the
>/proc/stat read function smarter.
>
>V1 -> V2: Address review feedback: undo struct layout changes, make
> variables unsigned and add test results to the changelog.
>
>Thanks,
>
> tglx
>
>8<----------------
> fs/proc/stat.c | 29 ++++++++++++++++++++++++++---
> include/linux/irqdesc.h | 1 +
> kernel/irq/chip.c | 12 ++++++++++--
> kernel/irq/internals.h | 8 +++++++-
> kernel/irq/irqdesc.c | 7 ++++++-
> 5 files changed, 50 insertions(+), 7 deletions(-)

Reviewed-by: Davidlohr Bueso <[email protected]>

2019-02-08 17:41:34

by Marc Zyngier

[permalink] [raw]
Subject: Re: [patch V2 0/2] genirq, proc: Speedup /proc/stat interrupt statistics

On 08/02/2019 13:48, Thomas Gleixner wrote:
> Waiman reported that on large systems with a large amount of interrupts the
> readout of /proc/stat takes a long time to sum up the interrupt
> statistics. In principle this is not a problem. but for unknown reasons
> some enterprise quality software reads /proc/stat with a high frequency.
>
> The reason for this is that interrupt statistics are accounted per cpu. So
> the /proc/stat logic has to sum up the interrupt stats for each interrupt.
>
> The following series addresses this by making the interrupt statitics code
> in the core generate the sum directly and by making the loop in the
> /proc/stat read function smarter.
>
> V1 -> V2: Address review feedback: undo struct layout changes, make
> variables unsigned and add test results to the changelog.
>
> Thanks,
>
> tglx
>
> 8<----------------
> fs/proc/stat.c | 29 ++++++++++++++++++++++++++---
> include/linux/irqdesc.h | 1 +
> kernel/irq/chip.c | 12 ++++++++++--
> kernel/irq/internals.h | 8 +++++++-
> kernel/irq/irqdesc.c | 7 ++++++-
> 5 files changed, 50 insertions(+), 7 deletions(-)
>

Reviewed-by: Marc Zyngier <[email protected]>

Thanks,

M.
--
Jazz is not dead. It just smells funny...