一文搞懂linux cpu hotplug

您所在的位置:网站首页 linux禁用cpu 一文搞懂linux cpu hotplug

一文搞懂linux cpu hotplug

2023-03-12 08:16| 来源: 网络整理| 查看: 265

​1. 介绍

Linux 的cpu热插拔是cpu电源管理的一部分,支持系统在负载比较低的时候,拔掉一个cpu,从而省下cpu的静态功耗,并在系统需要时,重新将cpu插上。

另外,在多cpu系统启动、休眠唤醒的过程中也会涉及到non-boot cpu的拔插。

2. 数据结构cpu hotplug数据结构3. CPU状态

cpu的状态包括:possible、present、online、active。

possible状态的cpu:可理解为存在这个CPU资源,但还没有纳入Kernel的管理范围。present状态的cpu:表示已经被kernel接管。online状态的cpu:表示可以被调度器使用。active状态的cpu:表示可以被迁移migrate。4. 拔插流程

Linux内核在初始的时候,会创建虚拟总线cpu_subsys,每个cpu调用register_cpu注册时,都会将cpu设备挂在这个总线下。

cpu的拔插是通过操作文件节点online实现的,具体拔插操作如下(以cpu1为例):

拔核操作

echo 0 > /sys/devices/system/cpu/cpu1/online

插核操作

echo 1 > /sys/devices/system/cpu/cpu1/online

CPU的拔插流程可以概括为:

cpu hotplug流程

AP:将要被拔掉的cpu。

BP:处理拔核流程的cpu。

4.1 CPU UPcpu up流程颜色的含义:绿色:系统初始化过程调用。黄色:BP上做的处理。橙色:AP上做的处理。Kernel会为每个cpu都创建一个hotplug线程,执行state中定义的状态回调函数,比如teardown/startup。cpu_up的时候依赖底层的具体实现,没有进一步画出cpu_boot后的动作,这后面linux会通过PSCI接口跟ATF通信,然后由ATF跟其他电源管理模块通信,最终由电源管理模块完成上电。4.2 CPU DOWNcpu down流程cpu down的流程跟cpu on相反,整个过程很类似;cpu电的关闭是通过do_idle->cpu_die->cpu_off利用PSCI向ATF发起关闭cpu的请求,然后由ATF跟其他电源管理模块通信,最终在电源管理模块将cpu的电关闭。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3