什么是 CPU 逻辑核上下线
Linux 支持在运行时把逻辑核从调度器中取下或重新加入:把某个核的 online 文件写成 0,内核会先把该核上的任务与中断迁走,再把它从可用 CPU 集合中移除;写回 1 则重新启用。这个机制用于故障隔离、硬件维护演练与在线扩缩容验证。需要注意的是 CPU0 不允许下线,且云主机往往还受固件与管理平台限制。
基本信息
| 查看在线集合 | cat /sys/devices/system/cpu/online |
|---|---|
| 下线单核 | echo 0 > /sys/devices/system/cpu/cpuN/online |
| 上线单核 | echo 1 > /sys/devices/system/cpu/cpuN/online |
| 限制 | CPU0 不可下线,需要 root |
| 前提 | 内核启用 CONFIG_HOTPLUG_CPU |
| 观测 | lscpu 的 CPU(s) online 行、/proc/cpuinfo 条数 |
典型使用场景
- 故障隔离:怀疑某个核异常时临时下线观察影响
- 维护演练:模拟核数变化,验证应用是否会随 CPU 数量变化行为
- 在线缩容验证:确认服务在核数减少后仍能满足 SLO
- 排查特定核上的中断与错误计数异常
- 压测环境构造不同核数场景,做容量基线对比
查看与操作
查看与操作
cat /sys/devices/system/cpu/online # 形如 0-7
lscpu | grep -i 'On-line' # 在线核数
nproc # 当前可用核数
echo 0 | sudo tee /sys/devices/system/cpu/cpu7/online # 下线 CPU7
echo 1 | sudo tee /sys/devices/system/cpu/cpu7/online # 重新上线
cat /sys/devices/system/cpu/offline # 确认下线结果
grep -c processor /proc/cpuinfo # 与 online 集合互相校验操作影响对照
| 动作 | 内核行为 | 需要注意 |
|---|---|---|
| 下线一个核 | 迁移任务与中断到其他核 | 迁移瞬间可能有抖动,避峰操作 |
| 批量下线 | 可用算力下降 | 按 SLO 评估,避免线上误操作 |
| 重新上线 | 核重新参与调度 | 中断与负载会逐步分布过去 |
| CPU0 | 不允许下线 | 尝试会直接返回错误 |
该操作不持久,重启后按固件与内核参数恢复;把它当作临时手段,不要作为长期的核数控制方式(长期控制应使用启动参数或调度隔离)。
在承载关键业务的机器上批量下线逻辑核会直接减少可用算力,可能触发延迟升高甚至级联故障;执行前必须评估余量并存留恢复路径。