hanwckf / rt-n56u

Padavan
3.27k stars 3.68k forks source link

关于irq cpu分配 #374

Open footlog-mao opened 4 years ago

footlog-mao commented 4 years ago

探讨一下, rc/smp.c中定义 static const struct smp_irq_layout_t mt7621a_irq[] = { { GIC_IRQ_FE, SMP_MASK_CPU1 }, / GMAC -> CPU:0, VPE:1 / { GIC_IRQ_EIP93, SMP_MASK_CPU1 }, / EIP93 -> CPU:0, VPE:1 / { GIC_IRQ_PCIE0, SMP_MASK_CPU2 }, / PCIe0 -> CPU:1, VPE:0 (usually rai0) / { GIC_IRQ_PCIE1, SMP_MASK_CPU3 }, / PCIe1 -> CPU:1, VPE:1 (usually ra0) / { GIC_IRQ_PCIE2, SMP_MASK_CPU0 }, / PCIe2 -> CPU:0, VPE:0 (usually ahci) / { GIC_IRQ_SDXC, SMP_MASK_CPU2 }, / SDXC -> CPU:1, VPE:0 / { GIC_IRQ_XHCI, SMP_MASK_CPU3 }, / xHCI -> CPU:1, VPE:1 / }; gmac,是比较占cpu的,htop看,5g 测速时gmac cpu 就基本上80%以上了,常常会彪到100% ra0和usb在一个cpu上,这样如果使用usb和2.4g的时候,如果cpu处理不过来,是不是会影响2.4G的速度,或者说大家感觉用usb的时候,2。4受影响会不会和这个有关?不过从我的测试看好像到是用不满cpu 所以eth独占一个cpu,ra0和usb分开这样会不会好一些?

我定义成这样 static const struct smp_irq_layout_t mt7621a_irq[] = { { GIC_IRQ_FE, SMP_MASK_CPU2 }, / GMAC -> CPU:0, VPE:1 / { GIC_IRQ_EIP93, SMP_MASK_CPU0 }, / EIP93 -> CPU:0, VPE:1 / { GIC_IRQ_PCIE0, SMP_MASK_CPU1 }, / PCIe0 -> CPU:1, VPE:0 (usually rai0) / { GIC_IRQ_PCIE1, SMP_MASK_CPU3 }, / PCIe1 -> CPU:1, VPE:1 (usually ra0) / { GIC_IRQ_PCIE2, SMP_MASK_CPU3 }, / PCIe2 -> CPU:0, VPE:0 (usually ahci) / { GIC_IRQ_SDXC, SMP_MASK_CPU1 }, / SDXC -> CPU:1, VPE:0 / { GIC_IRQ_XHCI, SMP_MASK_CPU0 }, / xHCI -> CPU:1, VPE:1 / }; GMAC 单独使用一个cpu,usb和ra0分开,分到平常没有大软中断任务的cpu0上

ghost commented 4 years ago

如果没有USB得路由器应该没这种问题吧?

footlog-mao commented 4 years ago

如果没有USB得路由器应该没这种问题吧?

usb和2.4不会争cpu,但是eth最好还是单独放一个cpu,个人意见。