CPUInfo里的Linux核心数代表什么
小樊
40
2025-12-22 22:43:34
Linux核心数的含义与查看方法
概念与含义
- 在 linux 的 /proc/cpuinfo 中,所谓“核心数”通常指字段 cpu cores,表示单个物理 CPU 封装内的物理核心数量(例如 4 核、8 核)。与之相关:
- physical id:物理插槽/封装编号,用于区分不同的物理 CPU。
- core id:同一物理封装内每个物理核心的唯一编号。
- processor:操作系统可见的逻辑处理器编号,数值上等于系统的逻辑 CPU 数(= 物理 CPU 数 × 每颗物理 CPU 的 cpu cores × 超线程因子)。
- siblings:同一物理封装内的逻辑处理器数量,用于辅助判断是否开启超线程。以上字段共同描述了“物理 CPU—物理核心—逻辑处理器”的层级关系。
如何判断你看到的是哪种“核心数”
- 若你看到的是“cpu cores”这一项,它指的是每颗物理 CPU 的物理核心数。
- 若你看到的是“processor”的总条数(或用命令统计 processor 数量),那是逻辑 CPU 数,并非物理核心数。
- 快速自检是否存在超线程:比较同一物理封装内的 siblings 与 cpu cores。若 siblings ≈ 2 × cpu cores,通常表示启用超线程;若 siblings == cpu cores,通常表示未启用超线程。
常用命令与判读示例
- 查看物理 CPU 个数:cat /proc/cpuinfo | grep “physical id” | sort -u | wc -l
- 查看每颗物理 CPU 的物理核心数:cat /proc/cpuinfo | grep “cpu cores” | sort -u
- 查看逻辑 CPU 总数:cat /proc/cpuinfo | grep “processor” | wc -l
- 辅助判断超线程:在同一物理封装内对比 siblings 与 cpu cores 的大小关系。示例:若输出显示 physical id 为 0 的只有一个、cpu cores=8、siblings=16、processor 共 16 个,则代表1 颗物理 CPU、8 核、开启超线程,逻辑 CPU 为 16。
与线程数、并行度的关系
- 常见关系:总逻辑 CPU 数 = 物理 CPU 个数 × 每颗物理 CPU 的 cpu cores × 超线程因子。超线程因子通常为 1(未启用)或 2(启用)。
- 并行度提示:线程/进程能同时并行的上限通常不超过逻辑 CPU 数;但受工作负载类型、内存带宽、I/O等因素影响,实际加速比往往低于逻辑 CPU 数。