Re: [PATCH 0/4] irq: change irq_desc and kstat_irq_legacy to variable sized arrays

Ingo Molnar
2009-01-10T22:43:55Z

* Mike Travis <travis@sgi.com> wrote:

>
> The following patches change irq_desc and kstat_irq_legacy into
> variable sized arrays based on nr_cpu_ids when CONFIG_SPARSE_IRQS=y.
>
> irq: change references from NR_IRQS to nr_irqs
> irq: allocate irq_desc_ptrs array based on nr_irqs
> irq: initialize nr_irqs based on nr_cpu_ids
> kstat: modify kstat_irqs_legacy to be variable sized
>
> Based on: tip/cpus4096 @ v2.6.28-6140-g36c401a
>
> (Ingo - I will push these to your tip/cpus4096 branch via my cpus4096-for-ingo
> git tree.)

Thanks - please send a pull request when you feel good about them.

The changes look good to me.

> Affects of the SPARSE changes on NR_CPUS values.
>
> 1 - 128-defconfig (non-SPARSE)
> 2 - 4k-defconfig (non-SPARSE)
> 3 - 4k-defconfig (SPARSE)
>
> ====== Data
>
> .1. .2. .3. ..final..
> 1114112 . -1114112 . -100% irq_desc(.data.cacheline_aligned)
> 208896 -69632 -138752 512 -99% irq_cfgx(.data)
> 34816 . -34816 . -100% irq_timer_state(.bss)
> 17480 . -17480 . -100% per_cpu__kstat(.data.percpu)
> 0 . +4096 4096 . irq_desc_legacy(.data.cacheline_aligned)

Impressive!

If i remember your previous figures correctly we've got about +4MB of
memory bloat at 4K CPUs, that is now down to 3MB total?

Ingo