This series is based on work by Thomas Gleixner[1]. There are several optimization which helps to bring the time taken to read /proc/interrupts. Though it is not in fastpaths, still many tools read it often and this reduction in time will save meaningful amount of cycle over the long duration.
[1]: https://lore.kernel.org/all/[email protected]/ Bulk of the design/code is copied from Thomas's work on x86. powerpc had exact pattern which made it quite easy to port. Using micro-loops[2] of reading /proc/interrupts shows real benefit of the series. Bulk of the gain is already achieved using Thomas's series[1]. This series on top provide some more benefits. As the system size goes up, benefits could be more. [2]: https://lore.kernel.org/all/87jysxw65f.ffs@tglx/ ======== Performance Data ================== Time taken to read /proc/interrupts 1000 times[2] Base : 103us v6 : 63us v6+patch 1+2 : 57us v6+patch 1+2+3 : 54us Base: tip/master at c991e3897ead ("Merge branch into tip/master: 'x86/tdx'") Depends on v6[1] to be applied first. Shrikanth Hegde (3): powerpc/irq: Move __softirq_pending out of irq_stat powerpc/irq: Make irqstats array based powerpc/irq: Suppress unlikely interrupt stats by default arch/powerpc/include/asm/hardirq.h | 31 ++++--- arch/powerpc/kernel/dbell.c | 2 +- arch/powerpc/kernel/irq.c | 131 +++++++++++++++-------------- arch/powerpc/kernel/time.c | 6 +- arch/powerpc/kernel/traps.c | 11 +-- arch/powerpc/kernel/watchdog.c | 2 +- 6 files changed, 95 insertions(+), 88 deletions(-) -- 2.47.3
