我正在浏览启动代码并遇到以下掩码。在boot_cpu_init()
中设置的那些CPU online mask : The number of CPU's available for getting scheduled on
CPU active mask : The number of CPU's on which some task can be migrated to (not very clear as to the difference between online and active)
CPU present mask : Total number of CPU's limited by max cpu's variable
CPU possible mask : Total number of possible CPU's in the system
但我仍然不清楚为什么这些面具存在。为什么不单独使用cpu_online_bits()。是否足以看到哪些CPU可用以及系统可用的总CPU?
答案 0 :(得分:1)
我有同样的问题,在这里找到你的帖子。在深入研究之后,我得到了一些关于它们的观点。 CPU热插拔在其中起着重要作用。
可能的'面具和'礼物'掩码代表静态CPU资源,以及' online'和活跃的'意思是动态的。静态资源在编译时或在引导阶段声明。它在内核生命期间不会被改变。动态资源将随CPU热插拔操作而变化。
有时您可能需要为每个可能的'分配或初始化一些其他资源。 CPU,比如为每个可能的'初始化列表。 blk_softirq_init()中的CPU。
很难分辨出CPU与网络之间的差异'和活跃的'从启动时间开始,我们可以在程序中获得离线CPU的想法。将CPU放下的步骤如下图所示 http://image.slidesharecdn.com/cpuhotplugrcuandbig-140320112138-phpapp02/95/lce12-cpu-hotplug-rcu-and-biglittle-22-638.jpg?cb=1395333911
当CPU进入第一步,即CPU_DOWN_PREPARE时,调度程序将其标记为“不活动”,但它仍然是“在线”#39;在这一刻。调度程序此时无法将任何任务迁移到它。完全删除CPU后,它不会在线'了。
我不确定您是否仍需要这些信息,但请写下更多详细信息 http://vh21.github.io/linux/2015/04/28/linux-cpu-mask.html