3. CPU资源基础
在多OS CPU内存与设备资源规划中,CPU是最先需要被“看清”的资源。很多容量规划失误并非算力不足,而是把物理核、逻辑核、超线程、主频、缓存和调度单位混为一谈,导致虚拟机vCPU超额分配、NUMA跨节点访问、缓存争用和调度延迟被低估。本节从硬件结构到操作系统调度,建立一套可用于资源规划的CPU认知模型。
一、从物理核到逻辑核:CPU的层级结构
一颗现代服务器CPU通常包含多个物理核(Physical Core),每个物理核内部拥有独立的算术逻辑单元、寄存器组、L1/L2缓存以及共享或私有的L3缓存。物理核是真正能同时执行指令的硬件执行单元。逻辑核(Logical Core,也称逻辑处理器)则是操作系统看到的可调度单元。在没有超线程的情况下,一个物理核呈现为一个逻辑核;开启超线程后,一个物理核可呈现为两个逻辑核。
超线程(Hyper-Threading,Intel称HT,AMD称SMT)的本质是让两个线程共享同一个物理核的执行资源。它复制寄存器状态、程序计数器和部分控制逻辑,但ALU、L1/L2缓存、浮点单元等仍被两个逻辑核共享。因此超线程提升的是“吞吐量”而非“单线程性能”:当两个线程都处于计算密集型时,它们会争抢执行单元,单线程性能可能下降;当线程频繁等待内存或I/O时,超线程能有效填补空闲周期。
二、主频、缓存层级与性能关系
主频(Clock Frequency)表示CPU时钟周期频率,通常以GHz为单位。主频越高,单位时间内可执行的时钟周期越多,但实际性能还取决于每周期指令数(IPC)、流水线效率、缓存命中率和内存延迟。因此“主频高”不等于“性能强”,尤其在多核并发和内存密集型场景中,缓存与内存带宽往往比主频更关键。
缓存层级通常分为L1、L2、L3。L1最小最快,通常分为指令缓存和数据缓存,每核私有;L2每核私有,容量大于L1;L3为多核共享,容量最大但延迟也最高。缓存命中率直接决定CPU等待内存的时间。在虚拟化环境中,vCPU数量超过物理核数量会导致缓存争用加剧,表现为上下文切换增加、缓存命中率下降和尾延迟上升。
| 层级 | 典型位置 | 共享范围 | 访问延迟 | 规划关注点 |
|---|---|---|---|---|
| L1 Cache | 核内 | 每逻辑核私有 | 约1-4周期 | 超线程共享时易争用 |
| L2 Cache | 核内 | 每物理核私有 | 约10-20周期 | 同核两线程共享 |
| L3 Cache | 片内 | 多核共享 | 约30-60周期 | 跨NUMA访问代价高 |
| 内存 | 主板 | 全系统共享 | 约200-300周期 | 带宽与NUMA亲和性 |
三、CPU调度基本概念
操作系统调度器管理的是逻辑核上的任务切换。核心概念包括:运行队列(Run Queue)、上下文切换(Context Switch)、时间片(Timeslice)、优先级(Priority)、抢占(Preemption)和负载均衡(Load Balancing)。在Linux中,CFS(完全公平调度器)按虚拟运行时间分配CPU;实时调度类(SCHED_FIFO、SCHED_RR)则优先于普通任务。
在多OS场景中,若多个操作系统实例共享同一物理CPU,调度层级会叠加:Hypervisor先调度vCPU到物理核,Guest OS再调度进程到vCPU。这种“双层调度”会引入额外延迟,且Guest OS看到的CPU拓扑可能与物理拓扑不一致,导致NUMA亲和性失效。
# 查看逻辑核与物理核对应关系
lscpu -e=CPU,CORE,SOCKET,NODE,ONLINE
# 查看超线程是否开启
lscpu | grep -i "thread"
# 查看CPU调度策略与运行队列
chrt -p <pid>
mpstat -P ALL 1
# 查看缓存层级与共享关系
lscpu -C
规划要点:vCPU总数不应简单等于逻辑核总数。计算密集型负载建议vCPU:物理核不超过1:1;I/O密集型可适度超配至2:1甚至更高,但必须监控就绪等待和缓存争用。
四、案例与常见误区
某业务将一台32物理核(开启超线程后64逻辑核)的服务器划分为4个OS实例,每个实例分配16 vCPU。初期运行正常,但高峰期出现明显延迟抖动。排查发现:4个实例的vCPU在物理核上交错分布,同一物理核的两个逻辑核被不同实例占用,导致L1/L2缓存频繁失效;同时部分vCPU跨NUMA节点访问内存。调整方案为:按物理核边界分配vCPU,关闭跨实例的超线程共享,并绑定NUMA节点,尾延迟下降约40%。
常见误区:①把逻辑核当物理核算力;②认为主频越高性能越强;③忽略超线程的缓存争用;④在虚拟化中按逻辑核数量1:1分配vCPU却未做亲和性绑定;⑤只看平均CPU利用率,不看就绪等待和上下文切换。
总结来看,CPU资源规划应遵循“先物理、后逻辑、再看调度”的顺序:以物理核评估真实算力,以逻辑核评估并发上限,以主频和缓存评估单线程与内存敏感度,最后结合调度策略和NUMA拓扑确定vCPU分配与绑定方案。只有把硬件结构与操作系统调度统一起来,才能避免“核数够但性能不够”的规划陷阱。