tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: RFC: IRQ affinity (aka interrupt routing)



Hi,

(2014/08/20 18:06), Kengo NAKAHARA wrote:
I implement "intrctl" for amd64 and i386. Here is the implementation,
     https://github.com/knakahara/netbsd-src/compare/rfc/irq-affinity2
and here is the patch
     http://knakahara.github.io/patches/netbsd/irq-affinity-initctl.patch

I implement MI version intrctl. Here is the implementation,
    https://github.com/knakahara/netbsd-src/compare/rfc/irq-affinity3
and here is the patch
    http://knakahara.github.io/patches/netbsd/irq-affinity-mi.patch

I move MI code to sys/kern/subr_intr.c, of course the code use
intr_distribute() and other MI interfaces.

This version show interrupt list by interrupt name and MI cpu index.
==========
# intrctl list
 interrupt name CPU#00(+)       CPU#01(-)       CPU#02(-)       CPU#03(-)       
CPU#04(+)       CPU#05(+)       CPU#06(+)       CPU#07(+)
 ioapic0 pin 3         0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 4         0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 18        0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 19     1648*              0               0              34        
       0               0               0               0        unknown, unknown
 ioapic0 pin 23      375               0               0             270        
     273*              0               0               0        unknown, unknown
 ioapic0 pin 22        0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 21        0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 20        0*              0               0               0        
       0               0               0               0        unknown
 ioapic0 pin 9         0*              0               0               0        
       0               0               0               0        unknown
==========

And affinity syntax is here.
    intrctl affinity -c 7 -i 'ioapic0 pin 23'
        7 : MI cpu index (not cpuid)
        'ioapic0 pin 23' : interrupt name same as vmstat -i

Therefore, I test on FUJITSU PRIMERGY RX200 S6 which has two ioapics.
It works well to set affinity 'ioapic1 pin 0' and 'ioapic1 pin 4'.

Could you comment the implementation?

Thanks,

--
//////////////////////////////////////////////////////////////////////
Internet Initiative Japan Inc.

Device Engineering Section,
Core Product Development Department,
Product Division,
Technology Unit

Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>


Home | Main Index | Thread Index | Old Index