在Linux系统中,查看CPU内核信息是系统管理、性能优化和故障排查的常见操作,CPU内核数量直接影响系统的并行处理能力,而内核类型(如物理核心、逻辑核心)则关系到资源分配的合理性,以下将从基础命令到高级技巧,系统介绍如何全面获取CPU内核信息。
基础命令:快速查看核心数量
对于大多数场景,用户只需快速获取CPU的核心总数,以下两个命令最为常用:
nproc
命令
nproc
是GNU coreutils提供的专用工具,直接返回逻辑CPU核心数(即包括超线程后的虚拟核心),输出简洁高效:
nproc
在8核16线程的CPU上,执行结果为16
,该命令适合脚本调用,无需额外解析。
/proc/cpuinfo
文件
/proc/cpuinfo
是Linux内核提供的虚拟文件,包含CPU的详细信息,通过统计processor
字段的行数,可获取逻辑核心数:
cat /proc/cpuinfo | grep "processor" | wc -l
若需区分物理核心与逻辑核心,可结合physical id
(物理CPU ID)和core id
(物理核心ID)字段,统计物理核心数:
cat /proc/cpuinfo | grep "core id" | sort -u | wc -l
深入解析:lscpu
命令的结构化输出
lscpu
命令是util-linux
包提供的工具,能以人类可读的格式展示CPU详细信息,涵盖架构、核心数、线程数等关键指标,执行lscpu
后,输出通常包含以下字段:
字段名 | 说明 |
---|---|
Architecture(s) | CPU架构(如x86_64、aarch64) |
CPU op-mode(s) | 操作模式(如32-bit、64-bit) |
Byte Order | 字节序(如Little Endian) |
CPU(s) | 逻辑CPU总数(即线程数) |
On-line CPU(s) list | 在线CPU列表(如0-7,表示8个核心均在线) |
Thread(s) per core | 每个物理核心的线程数(超线程开启时为2,否则为1) |
Core(s) per socket | 每个物理CPU插槽的物理核心数 |
Socket(s) | 物理CPU插槽数(多路服务器常见) |
NUMA node(s) | NUMA节点数(非统一内存访问架构相关) |
Vendor ID | CPU厂商(如GenuineIntel、AuthenticAMD) |
CPU family | CPU系列代号(如6代Intel Core为”6″) |
Model | CPU具体型号(如Intel Core i7-10700K的模型为”158″) |
Model name | CPU商用名称(如”Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz”) |
Stepping | CPU步进(硬件版本标识) |
CPU MHz | 当前运行频率(动态变频,可能低于标称频率) |
CPU max MHz | CPU最大支持频率 |
CPU min MHz | CPU最小支持频率 |
BogoMIPS | 内核启动时测得的伪性能指标(仅供参考,不直接代表性能) |
Virtualization | 虚拟化支持(如VT-x、AMD-V) |
L1d cache | 一级数据缓存大小(如32K) |
L1i cache | 一级指令缓存大小(如32K) |
L2 cache | 二级缓存大小(如256K) |
L3 cache | 三级缓存大小(如8192K,即8MB) |
NUMA node0 CPU(s) | NUMA节点0关联的CPU列表(多节点服务器中优化内存访问的关键) |
通过lscpu
的输出,可直接计算物理核心数:
物理核心数 = Core(s) per socket × Socket(s)
若Core(s) per socket
为8、Socket(s)
为1,则物理核心数为8;若Thread(s) per core
为2,则逻辑核心数为16。
特殊场景:查看CPU亲和性与核心状态
在服务器优化或实时任务调度中,可能需查看特定进程的CPU亲和性(绑定的核心)或核心的在线状态。
查看进程的CPU亲和性
通过taskset
命令可获取或设置进程的CPU亲和性,查看PID为1234的进程绑定的核心:
taskset -p 1234
输出格式为pid 1234's current affinity mask: ff
,其中ff
为十六进制掩码,转换为二进制后每位对应一个逻辑核心(如ff
=11111111,表示绑定0-7号核心)。
查看核心的在线状态
Linux支持动态关闭核心以节能,在线核心信息记录在/sys/devices/system/cpu/
目录下,每个核心对应一个cpuX
文件夹(X为核心编号),若cpuX/online
文件存在且内容为1
,则核心在线;为0
则离线,检查0号核心状态:
cat /sys/devices/system/cpu/cpu0/online
若需关闭核心(需root权限),可执行:
echo 0 > /sys/devices/system/cpu/cpu1/online # 关闭1号核心
Linux查看CPU内核信息的方法覆盖从快速统计到深度解析的全场景需求:日常使用中,nproc
和lscpu
能满足大多数需求;需精细化管理时,/proc/cpuinfo
和/sys/devices/system/cpu/
提供原始数据;而进程调度优化则依赖taskset
等工具,掌握这些方法,不仅能准确获取核心数量,更能深入理解CPU的拓扑结构与运行状态,为系统调优提供数据支撑。