aboutsummaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/export-to-sqlite.py
diff options
context:
space:
mode:
authorThomas Gleixner <[email protected]>2019-02-08 14:48:03 +0100
committerThomas Gleixner <[email protected]>2019-02-10 21:34:45 +0100
commit1136b0728969901a091f0471968b2b76ed14d9ad (patch)
tree636c5fbc5e7b28cbb6454323dde1cf9775a4c9a1 /tools/perf/scripts/python/export-to-sqlite.py
parent347253c42d7c673aa2a659d756bc7ff893459247 (diff)
genirq: Avoid summation loops for /proc/stat
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. This can be largely avoided for interrupts which are not marked as 'PER_CPU' interrupts by simply adding a per interrupt summation counter which is incremented along with the per interrupt per cpu counter. The PER_CPU interrupts need to avoid that and use only per cpu accounting because they share the interrupt number and the interrupt descriptor and concurrent updates would conflict or require unwanted synchronization. Reported-by: Waiman Long <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Reviewed-by: Waiman Long <[email protected]> Reviewed-by: Marc Zyngier <[email protected]> Reviewed-by: Davidlohr Bueso <[email protected]> Cc: Matthew Wilcox <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Alexey Dobriyan <[email protected]> Cc: Kees Cook <[email protected]> Cc: [email protected] Cc: Davidlohr Bueso <[email protected]> Cc: Miklos Szeredi <[email protected]> Cc: Daniel Colascione <[email protected]> Cc: Dave Chinner <[email protected]> Cc: Randy Dunlap <[email protected]> Link: https://lkml.kernel.org/r/[email protected] 8<------------- v2: Undo the unintentional layout change of struct irq_desc. include/linux/irqdesc.h | 1 + kernel/irq/chip.c | 12 ++++++++++-- kernel/irq/internals.h | 8 +++++++- kernel/irq/irqdesc.c | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-)
Diffstat (limited to 'tools/perf/scripts/python/export-to-sqlite.py')
0 files changed, 0 insertions, 0 deletions