问个多核架构下中断优化的问题
本文是原「蜗窝讨论区」的历史存档(2016-12-26),来自版块「Linux kernel技术问答」,共 1 帖。讨论区已停止服务,此处仅供查阅。
现在我用的imx6芯片 是SMP架构 ,双核的,有个性能优化的问题。imx6 系统一跑起来,芯片厂商把 外设中断执行全部绑定在 CPU0上了。 这是我的推测,我是看代码得知的,看到imx6 内核初始化时,通过写GIC 相关寄存器,把imx6芯片所有的外设中断都绑定在CPU0上了。因为嵌入式系统是要求及时响应为目的,应用没有irqbalance 这种中断负载均衡的措施。(imx6里面没有irqbalance)
那芯片厂商如果这样设计发布他们sdk 开发包的话,我觉得有问题啊,如果比如说MMC 设备在进行频繁的写数据通信。同时wifi 外设又在接受几十个G的数据流量。这样的话,都在CPU0上执行的话。虽说即使是有中断上半部和下半部的区分,但是很多中断上半部都在同一个CPU上执行,会不会影响中断触发性能。
还有啊,如果代码里有很多的spin_lock_irqsave spin_unlock_irqrestore操作(这些应该很多是禁用CPU0上的本地中断吧),这样的话,会不会影响中断执行的性能?
所有我的建议是不是在一些中断频繁触发的场合,非常有必要把某个外设中断 绑定在CPU1上执行,不在CPU0。
