要搞清楚Linux系统里的CPU核心数,其实手头有现成的工具,就是/proc/cpuinfo这个虚拟文件和lscpu命令。它们能提供逻辑核心、物理核心、线程数等详细信息,是系统性能分析的基础。下面把几种常用方法梳理一下。
1. 使用lscpu命令(最简方式)
lscpu是专门解析CPU信息的工具,输出结构清晰,直接包含核心数相关字段。操作命令:
lscpu
关键信息解读:
- CPU(s):显示系统总的逻辑核心数(包括超线程生成的虚拟核心);
- Core(s) per socket:每个CPU插槽上的物理核心数;
- Socket(s):CPU插槽数(物理CPU数量);
- Thread(s) per core:每个物理核心的线程数(若大于1,说明支持超线程技术)。
物理核心数的计算公式很简单:物理核心数 = Core(s) per socket × Socket(s)。例如,若输出中Core(s) per socket为4、Socket(s)为2,那么物理核心数就是8。
2. 查看/proc/cpuinfo文件(原始信息)
/proc/cpuinfo是Linux系统提供的CPU详细信息文件,通过grep和wc命令可以提取核心数。
(1)获取逻辑核心数
逻辑核心数即系统中所有逻辑处理器的数量,对应processor字段的唯一值数量。命令:
cat /proc/cpuinfo | grep 'processor' | wc -l
(2)获取物理核心数
物理核心数需通过physical id(物理CPU编号)和cpu cores(每个物理CPU的核心数)计算:
- 方法一:统计
physical id的唯一值数量(适用于无超线程或已知每个物理核心线程数的场景);命令:
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
- 方法二:直接提取
cpu cores字段的值(更准确,反映物理核心的真实数量);命令:
cat /proc/cpuinfo | grep 'cpu cores' | uniq
例如,若输出为cpu cores : 4,则表示每个物理CPU有4个物理核心。
3. 使用nproc命令(快速获取逻辑核心数)
nproc是专门用于显示可用逻辑核心数的命令,无需复杂参数,结果直接明了。操作命令:
nproc
该命令输出的结果与lscpu中的CPU(s)字段一致,代表系统当前可用的逻辑核心数量。
4. 补充:通过top/htop工具查看
- top命令:运行
top后,按数字键1,顶部会显示CPU的逻辑核心列表(如Cpu0、Cpu1等),数量即为逻辑核心数; - htop命令:需先安装(
sudo apt install htop或sudo yum install htop),运行后直接显示逻辑核心的柱状图,更直观。
通过上述方法,可以全面了解Linux系统中CPU的核心数信息,包括逻辑核心、物理核心及线程配置,为系统性能分析、优化提供基础数据。