是否应该在异构多线程CPU上启用SMP?

时间:2018-10-28 03:19:04

标签: linux-kernel arm smp

我正在为big.LITTLE板构建Linux内核,我一直在想关于CONFIG_SMP选项,该选项启用了内核的对称处理支持。 Linux的文档说应该在多线程处理器上启用它,但是我想知道对称多处理是否不仅只能在实际上对称的处理器上正常工作。 我知道SMP是什么,但是我还没有找到任何提示或文档,没有任何有关在专门为ARM的big.LITTLE构建的Linux上使用它的提示。

1 个答案:

答案 0 :(得分:2)

是的,如果要使用多个内核,则必须启用CONFIG_SMP。这本身将使所有内核(无论大内核还是小内核)都可用于内核。

然后,您有两个选择(我假设您使用的是Mainline Linux内核或与其没有太大不同的东西,例如,不是Android内核):

  1. 如果还启用了CONFIG_BL_SWITCHER(->内核功能-> big.LITTLE支持-> big.LITTLE切换器支持)和CONFIG_ARM_BIG_LITTLE_CPUFREQ(-> CPU电源管理-> CPU频率缩放-> CPU频率缩放->通用ARM big LITTLE CPUfreq驱动程序),SoC中的每个大内核都将与一个小内核配对,并且每对中只有一个内核在任何给定时间处于活动状态,具体取决于CPU负载。因此,基本上,逻辑核心的数量将是物理核心数量的一半,并且每个逻辑核心将结合一个物理大核心和一个物理小核心(除非大核心的总数与小核心的数量不同)将会有不成对的物理核心,它们也是逻辑核心)。对于每个逻辑核心,大小物理核心之间的切换将由cpufreq调控器管理,并且在概念上等效于CPU频率切换。
  2. 如果您未启用上述两个配置选项,则所有物理核心将可用作逻辑核心,可以同时处于活动状态,并且由调度程序将它们视为相同。

如果您的目标是低功耗,则第一个选项更适合,而第二个选项则可让您最大程度地利用CPU。

在主线内核中集成了异构多处理(HMP)支持后,情况将会改变。