Русскоязычное Linux-сообщество's Journal
 
[Most Recent Entries] [Calendar View]

Wednesday, October 8th, 2014

    Time Event
    8:29a
    Распределение IRQ на ARM платформах
    "А мужики-то не знают" (с)

    С неким удивлением узнал, что на ARM платформах irqbalance не только бесполезен, ибо все прерывания повешены на CPU0, но также этот самый irqbalance сильно тупит и за пару дней способен отожрать всю память.

    Ссылки:

    https://lkml.org/lkml/2012/8/4/51
    http://comments.gmane.org/gmane.linux.ports.arm.kernel/102251
    https://groups.google.com/d/msg/linux.kernel/pNyi-qX9uz8/r3ouEhRxwPMJ

    График памяти с рестартом irqbalance по расписанию раз в сутки:



    Под катом также лог и частичный костыль:

    # cat /proc/interrupts	
    
                   CPU0       CPU1      
         29:   31828467   20846645       GIC  arch_timer
         30:          0          0       GIC  arch_timer
         32:          0          0       GIC  axp_mfd
         33:        209          0       GIC  serial
         37:      29810          0       GIC  RemoteIR
         39:   56968226          0       GIC  sunxi-i2c.0
         40:          0          0       GIC  sunxi-i2c.1
         41:          0          0       GIC  sunxi-i2c.2
         54:          0          0       GIC  timer0
         55:         12          0       GIC  aw_clock_event
         56:          0          0       GIC  sunxi-rtc alarm
         59:          0          0       GIC  dma_irq
         60:          0          0       GIC  sunxi-gpio
         64:   26340917          0       GIC  sunxi-mmc
         71:  173325506          0       GIC  ehci_hcd:usb1
         72:   26892046          0       GIC  ehci_hcd:usb3
         76:   82951670          0       GIC  sunxi lcd0
         77:          0          0       GIC  sunxi lcd1
         78:          0          0       GIC  g2d
         79:   41450949          0       GIC  sunxi scaler0
         80:          0          0       GIC  sunxi scaler1
         88:          0          0       GIC  sw_ahci
         92:          0          0       GIC  ace_dev
         96:          0          0       GIC  ohci_hcd:usb2
         97:          0          0       GIC  ohci_hcd:usb4
        101:          0          0       GIC  mali_gp_irq_handlers
        102:          0          0       GIC  mali_mmu_irq_handlers
        103:          0          0       GIC  mali_pp_irq_handlers
        104:          0          0       GIC  mali_mmu_irq_handlers
        106:          0          0       GIC  mali_pp_irq_handlers
        107:          0          0       GIC  mali_mmu_irq_handlers
        120:          0          0       GIC  sunxi-i2c.3
        IPI0:          0          0  Timer broadcast interrupts
        IPI1:   11828993   31203597  Rescheduling interrupts
        IPI2:          0          0  Function call interrupts
        IPI3:        569        549  Single function call interrupts
        IPI4:          0          0  CPU stop interrupts
        IPI5:          0          0  CPU backtrace
        Err:          0
    


    В моём случае пришлось вручную вешать USB веб камеру на CPU1:
    echo 2 >/proc/irq/$(cat /proc/interrupts | grep 'ehci_hcd:usb1' | cut -f 1 -d ":" | tr -d " ")/smp_affinity
    

    А irqbanace нафиг вырубить через /etc/default/irqbalance и "ENABLED=0"
    Платформа: dual core Allwinner A20 "BananaPi"

    Спасибо за внимание
    via

    << Previous Day 2014/10/08
    [Calendar]
    Next Day >>

Русскоязычное Linux-сообщество   About LJ.Rossia.org