Linux下使用lscpu查看CPU架构 详细参数解读

Linux下使用lscpu查看CPU架构 详细参数解读

系统教程

lscpu命令通过CPU(s)、Thread(s) per core、Core(s) per socket和Socket(s)四行可直接计算物理核心数、线程数及CPU封装数,逻辑CPU总数恒等于三者乘积。

直接看 CPU(s)Thread(s) per coreCore(s) per socketSocket(s) 这四行,就能算出你的 CPU 是几核几线程、物理封装有几个——其他字段多数是辅助验证或调优用的。

怎么看“几核几线程”?

关键不是背公式,而是盯住这三行输出:

  • Thread(s) per core:值为 1 表示没开超线程;值为 2(常见)表示启用了超线程;某些 AMD Zen 4 或 Intel Raptor Lake 可能是 3 或 4,但极少见
  • Core(s) per socket:单个物理 CPU 插槽里的真实核心数,比如 8、16、32
  • Socket(s):主板上插了几颗物理 CPU,服务器常见 2/4/8,桌面机基本是 1

逻辑 CPU 总数(即系统识别的“CPU 个数”)就是 CPU(s) 的值,它恒等于 Socket(s) × Core(s) per socket × Thread(s) per core。如果这四个数对不上,说明有 CPU 被内核禁用(比如启动参数加了 maxcpus=)或处于离线状态。

为什么 lscpu | grep "Model name" 有时不准?

在虚拟化环境(KVM、VMware、Hyper-V)中,Model name 显示的是 Hypervisor 模拟/透传给 Guest 的型号,不是宿主机真实 CPU。例如宿主机是 EPYC 9654,Guest 里却可能显示 AMD EPYC Processor 或更模糊的 Common KVM processor。此时更可靠的判断依据是:

Swoole linux版

Swoole 是一款面向生产环境的 PHP 异步网络通信引擎,专为 Linux 操作系统设计(同时支持 FreeBSD 和 macOS)。它采用纯 C 语言编写,作为 PHP 扩展运行后会接管程序控制权并进入事件循环。区别于传统 Web 框架,Swoole 使 PHP 开发者能够编写高性能的异步并发 TCP、UDP、WebSocket 服务,并支持协程与毫秒定时器,广泛应用于物联网、网络游戏等高性能场景。

下载

  • Vendor IDCPU family/Model 组合(比如 GenuineIntel + family: 6 model: 143 对应 13/14 代 Intel Core)
  • Virtualization 字段是否为 VT-xAMD-V(宿主机支持才可能透传)
  • 配合 cat /proc/cpuinfo | head -20flags 里有没有 hypervisor —— 有就一定是虚拟机

--parse--extended 哪个更适合脚本解析?

--parse 输出是制表符分隔的纯文本,首行为字段名,第二行起是对应值,没有空格/括号/冒号干扰,适合 awkcut 直接取列:

cpu,core,socket,node
0,0,0,0
1,0,0,0
2,1,0,0
3,1,0,0

--extended 虽然可读性好,但字段对齐靠空格,且含中文标点和单位(如 L1d cache: 32K),shell 脚本容易错位。除非你用 Python 解析,否则别选它做自动化。

NUMA node(s) 不是 CPU 数量,但影响很大

NUMA node(s) 值为 1,不代表没有 NUMA 结构——它只表示当前系统识别到的 NUMA 节点总数。多路服务器上,Socket(s): 2NUMA node(s): 2 才是典型配置;若 Socket(s): 2NUMA node(s): 1,说明 BIOS 关了 NUMA 或启用了 NUMA balancing 并做了合并,这对内存密集型应用(如 PostgreSQL、Redis)的延迟敏感度会显著升高。这时候得看 numactl --hardware 输出确认真实拓扑。

本文地址:https://www.sztg.com.cn/article/668995.html

如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!

猜您喜欢