Subject: Re: [PATCH -v2] x86: increase NR_IRQS and nr_irqs

From: Yinghai Lu <[email-masked]>
Date: Sun, 03 Jan 2010 19:20:19 -0800

On 01/03/2010 07:06 PM, Jesse Brandeburg wrote:
> On Mon, Dec 28, 2009 at 9:08 PM, Yinghai Lu <[email-masked]> wrote:
>> have a system with lots of igb and ixgbe, when iov/vf are enabled for
>> them, we hit the limit of 3064.
>>
>> when system have 20 pcie installed, and one card have 2 functions, and one
>> function need 64 msi-x,
>>  may need 20 * 2 * 64 = 2560 for msi-x
>> but if iov and vf are enabled
>>  may need 20 * 2 * 64 * 3 = 7680 for msi-x
>> assume system with 5 ioapic, nr_irqs_gsi will be 120.
>> NR_CPUS = 512, and nr_cpu_ids = 128
>> will have NR_IRQS = 256 + 512 * 64 = 33024
>> will have nr_irqs = 120 + 8 * 128 + 120 * 64 = 8824
>>
>> when SPARSE_IRQ is not set, there is no increase with data
>> when NR_CPUS=128, and SPARSE_IRQ is set
>>   text            data     bss            dec           hex    filename
>> 21837444        4216564 12480736        38534744        24bfe58 vmlinux.before
>> 21837442        4216580 12480736        38534758        24bfe66 vmlinux.after
>> when NR_CPUS=4096, and SPARSE_IRQ is set
>>   text            data     bss            dec           hex    filename
>> 21878619        5610244 13415392        40904255        270263f vmlinux.before
>> 21878617        5610244 13415392        40904253        270263d vmlinux.after
>>
>> -v2: update comments to address Ingo's concern
>>
>> Signed-off-by: Yinghai Lu <[email-masked]>
> 
> I'm not sure this is the best plan, but may be okay for now.  What
> happens when all of your slots have 6 port 82599 ixgbe adapters in
> them?  They are being made[1], as well as quad port 82576 igb
> adapters, however I'm not fully sure of the SRIOV support of the
> bridges being used on those adapters.
> 
> Is it on the table to (re-)design this subsystem to be a little more
> dynamic?  There are probably examples in ppc64 or ia64 directories.
> Every time you suggest a limit I can find a case where it won't be
> enough.
> 
> [1] http://www.hotlavasystems.com/products_10gbe.html

you mean
20 * 6 * 64 * 3 ?

23040

maybe we can just keep nr_irqs = (256 - 32 - 10) * nr_cpu_ids?
32: for exception
10: for IPI etc.

YH