lscpu
命令查看物理CPU核数,重点关注Core(s) per socket
和Socket(s)
的值,两者相乘即为物理核心总数,也可通过grep 'core id' /proc/cpuinfo | sort -u | wc -l
计算。在Linux系统中,准确查看物理机的CPU核数对系统优化、资源分配和性能调优至关重要,以下是几种可靠的方法,每种方法均附详细说明和示例:
使用 lscpu
命令(推荐)
lscpu
是最直观的工具,直接显示CPU架构的详细信息,包括物理核数和逻辑核数(超线程技术产生的线程)。
操作步骤:
lscpu
关键输出解析:
CPU(s)
:逻辑核总数(即超线程后的总线程数)。Core(s) per socket
:每个物理CPU插槽的物理核数。Socket(s)
:物理CPU插槽数量(即物理CPU个数)。
物理核总数公式:
物理核总数 = Socket(s) × Core(s) per socket
示例输出:
Architecture: x86_64
CPU(s): 16 # 逻辑核总数
Thread(s) per core: 2 # 每个物理核的线程数(2表示启用了超线程)
Core(s) per socket: 8 # 每个物理CPU的物理核数
Socket(s): 1 # 物理CPU个数
...
:
此例中物理核总数 = 1(Socket) × 8(Core per socket) = 8。
查看 /proc/cpuinfo
文件
Linux虚拟文件系统 /proc/cpuinfo
存储了CPU的原始数据,可通过过滤关键字提取信息。
操作步骤:
grep -c "core id" /proc/cpuinfo | uniq # 查看物理核数 grep -c "processor" /proc/cpuinfo # 查看逻辑核总数
输出解析:
core id
:每个物理核的唯一ID,去重后的数量即物理核数。processor
:逻辑核的编号,总数即逻辑核数。
使用 nproc
命令
快速获取当前可用的逻辑核总数(适用于脚本自动化):
nproc --all # 输出逻辑核总数
其他辅助命令
getconf
命令:getconf _NPROCESSORS_ONLN # 返回在线逻辑核数
top
或htop
:
运行top
后按1
,显示所有逻辑核的实时状态(不区分物理/逻辑核)。
重要概念区分
- 物理核(Physical Cores):CPU硬件实际存在的核心,决定基础算力。
- 逻辑核(Logical Cores):通过超线程技术将一个物理核虚拟为多个线程,提升并行效率。
关系:
逻辑核数 = 物理核数 × 每个核的线程数
(通常为1或2)。
应用场景建议
- 运维/调优:优先用
lscpu
全面分析物理核与逻辑核分布。 - 脚本开发:用
nproc
或getconf
快速获取逻辑核数。 - 故障排查:检查
/proc/cpuinfo
确认CPU型号和状态。
- 物理核数 =
Socket(s) × Core(s) per socket
(通过lscpu
获取)。 - 逻辑核数 =
CPU(s)
(lscpu
)或grep -c "processor" /proc/cpuinfo
。 - 避免混淆:物理核是硬件实体,逻辑核是操作系统看到的可调度单元。
引用说明参考 Linux Man 手册(
man lscpu
、man nproc
)及 Linux 内核文档(/proc/cpuinfo),确保信息的准确性与权威性。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/40451.html