文章目录
-
- 一、字段含义
-
- [1.1 、lscpu 字段含义](#1.1 、lscpu 字段含义)
-
- [1.1.1. 基础架构信息](#1.1.1. 基础架构信息)
- [1.1.2. CPU 数量与拓扑](#1.1.2. CPU 数量与拓扑)
- [1.1.3. CPU 型号与版本](#1.1.3. CPU 型号与版本)
- [1.1.4. 性能与频率](#1.1.4. 性能与频率)
- [1.1.5. 虚拟化支持](#1.1.5. 虚拟化支持)
- [1.1.6. 缓存信息](#1.1.6. 缓存信息)
- [1.1.7. NUMA 拓扑](#1.1.7. NUMA 拓扑)
- [1.1.8. CPU 特性(Flags)](#1.1.8. CPU 特性(Flags))
- [1.1.9. 示例解析](#1.1.9. 示例解析)
- [1.1.10. 关键字段总结](#1.1.10. 关键字段总结)
- [1.2、Flags 字段含义](#1.2、Flags 字段含义)
-
- [1.2.1. 基础功能](#1.2.1. 基础功能)
- [1.2.2. SIMD 指令集(向量运算加速)](#1.2.2. SIMD 指令集(向量运算加速))
- [1.2.3. 虚拟化支持](#1.2.3. 虚拟化支持)
- [1.2.4. 安全与加密](#1.2.4. 安全与加密)
- [1.2.5. 超线程与缓存](#1.2.5. 超线程与缓存)
- [1.2.6. 其他高级功能](#1.2.6. 其他高级功能)
- [1.2.7. 实际应用场景](#1.2.7. 实际应用场景)
- [1.2.8. 关键标志详解](#1.2.8. 关键标志详解)
- 二、命令参数
-
- [2.1. 选项说明](#2.1. 选项说明)
- [2.2. 可用列(Columns)](#2.2. 可用列(Columns))
- [2.3. 选项与列的组合使用](#2.3. 选项与列的组合使用)
-
- [2.3.1 扩展格式(`-e`)](#2.3.1 扩展格式(
-e)) - [2.3.2 可解析格式(`-p`)](#2.3.2 可解析格式(
-p)) - [2.3.3 十六进制掩码(`-x`)](#2.3.3 十六进制掩码(
-x)) - [2.3.4 物理 ID(`-y`)](#2.3.4 物理 ID(
-y))
- [2.3.1 扩展格式(`-e`)](#2.3.1 扩展格式(
- 三、实际应用
-
- 3.1、应用场景
-
- [3.1.1 分析 NUMA 拓扑](#3.1.1 分析 NUMA 拓扑)
- [3.1.2 过滤离线 CPU](#3.1.2 过滤离线 CPU)
- [3.1..3 获取 CPU 频率范围](#3.1..3 获取 CPU 频率范围)
- [3.1..4 虚拟化环境调试](#3.1..4 虚拟化环境调试)
- [3.2. 示例命令与输出](#3.2. 示例命令与输出)
-
- [3.2.1:查看所有 CPU 的拓扑](#3.2.1:查看所有 CPU 的拓扑)
- [3.2.2:获取所有在线 CPU 编号](#3.2.2:获取所有在线 CPU 编号)
- [3.3. 关键选项对比](#3.3. 关键选项对比)
- [3.4. 常见问题](#3.4. 常见问题)
-
- [3.4.1: 如何查看离线 CPU?](#3.4.1: 如何查看离线 CPU?)
- [3.4.2: 如何提取所有 NUMA 节点?](#3.4.2: 如何提取所有 NUMA 节点?)
- [3.4.3: 如何判断是否启用超线程?](#3.4.3: 如何判断是否启用超线程?)
- 参考文档
lscpu 是 Linux 系统中用于查看 CPU 架构信息 的命令,它提供了关于处理器型号、核心数、线程数、缓存、架构类型等详细信息.详情如下:
shell
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
Stepping: 7
CPU MHz: 2499.998
BogoMIPS: 4999.99
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
NUMA node0 CPU(s): 0-7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512_vnni
一、字段含义
1.1 、lscpu 字段含义
1.1.1. 基础架构信息
| 字段 | 含义 | 示例 |
|---|---|---|
| Architecture | CPU 架构类型(如 x86_64 表示 64 位架构) | x86_64 |
| CPU op-mode(s) | 支持的 CPU 操作模式(32 位和 64 位兼容) | 32-bit, 64-bit |
| Byte Order | 字节序(Little Endian 表示低位在前) | Little Endian |
1.1.2. CPU 数量与拓扑
| 字段 | 含义 | 示例 |
|---|---|---|
| CPU(s) | 总逻辑 CPU 数量(包含超线程) | 8 |
| On-line CPU(s) list | 当前在线的 CPU 编号(0-7 表示 8 个逻辑 CPU) | 0-7 |
| Thread(s) per core | 每个核心的线程数(2 表示启用超线程) | 2 |
| Core(s) per socket | 每个物理 CPU 的核心数 | 4 |
| Socket(s) | 物理 CPU 插槽数量(1 表示单路 CPU) | 1 |
| NUMA node(s) | NUMA 节点数量(1 表示单节点) | 1 |
1.1.3. CPU 型号与版本
| 字段 | 含义 | 示例 |
|---|---|---|
| Vendor ID | CPU 制造商标识符(GenuineIntel 表示 Intel) | GenuineIntel |
| CPU family | CPU 家族编号(6 表示 Intel x86 架构) | 6 |
| Model | CPU 型号编号(85 表示 Xeon Scalable 系列) | 85 |
| Model name | CPU 型号名称(具体型号) | Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz |
| Stepping | CPU 步进版本(7 表示微架构修订版本) | 7 |
1.1.4. 性能与频率
| 字段 | 含义 | 示例 |
|---|---|---|
| CPU MHz | 当前 CPU 频率(2.50GHz) | 2499.998 |
| BogoMIPS | CPU 性能估算值(非实际性能指标) | 4999.99 |
1.1.5. 虚拟化支持
| 字段 | 含义 | 示例 |
|---|---|---|
| Hypervisor vendor | 虚拟化平台厂商(KVM 表示基于 KVM 虚拟化) | KVM |
| Virtualization type | 虚拟化类型(full 表示完全虚拟化) | full |
1.1.6. 缓存信息
| 字段 | 含义 | 示例 |
|---|---|---|
| L1d cache | 每核心一级数据缓存大小 | 32K |
| L1i cache | 每核心一级指令缓存大小 | 32K |
| L2 cache | 每核心二级缓存大小 | 1024K |
| L3 cache | 全局三级缓存大小(所有核心共享) | 36608K |
1.1.7. NUMA 拓扑
| 字段 | 含义 | 示例 |
|---|---|---|
| NUMA node0 CPU(s) | 属于 NUMA 节点 0 的 CPU 列表 | 0-7 |
1.1.8. CPU 特性(Flags)
| 字段 | 含义 | 常见标志解释 |
|---|---|---|
| Flags | CPU 支持的特性指令集和功能 | |
- fpu |
浮点运算单元 | |
- sse, avx |
SIMD 指令集(加速多媒体/科学计算) | |
- hypervisor |
支持虚拟化技术 | |
- lm |
长模式(支持 64 位) | |
- ht |
超线程技术 | |
- aes |
AES 加速指令 | |
- avx512 |
AVX-512 指令集(512 位向量运算) |
1.1.9. 示例解析
-
场景:单路 CPU 配置
- Socket(s): 1:单物理 CPU。
- Core(s) per socket: 4:每个 CPU 有 4 核心。
- Thread(s) per core: 2:每个核心 2 个线程(超线程启用)。
- 总逻辑 CPU 数量 :
1 × 4 × 2 = 8。
-
场景:虚拟化环境
- Hypervisor vendor: KVM:当前 CPU 运行在 KVM 虚拟化平台下。
- Virtualization type: full:支持完全虚拟化(无需硬件辅助虚拟化)。
1.1.10. 关键字段总结
| 字段 | 重要性 | 说明 |
|---|---|---|
| CPU(s) | ★★★★☆ | 逻辑 CPU 数量(决定并行能力) |
| Model name | ★★★★☆ | 具体 CPU 型号(用于性能评估) |
| L3 cache | ★★★★☆ | 三级缓存大小(影响多线程性能) |
| Virtualization | ★★★☆☆ | 虚拟化支持(部署虚拟机的关键) |
| Flags | ★★★☆☆ | 支持的指令集(如 AVX-512 提升计算性能) |
1.2、Flags 字段含义
1.2.1. 基础功能
| 标志 | 含义 | 说明 |
|---|---|---|
| fpu | 浮点运算单元 | 支持浮点运算(FPU) |
| vme | 虚拟模式扩展 | 允许运行虚拟机监控器(VM Monitor) |
| de | 可调试扩展 | 支持调试功能(如断点、单步执行) |
| pse | 页面大小扩展 | 支持 4MB 大页 |
| tsc | 时间戳计数器 | 提供 CPU 周期计数(用于性能测量) |
| msr | 模式特定寄存器 | 支持读写 MSR 寄存器(硬件监控) |
| pae | 物理地址扩展 | 支持 36 位物理地址(4GB 以上内存) |
| mce | 机器检查异常 | 支持硬件错误检测和报告 |
| cx8 | 比较并交换指令 | 支持原子操作(用于多线程) |
| apic | 高级可编程中断控制器 | 支持多核 CPU 的中断管理 |
| sep | 快速系统调用 | 优化系统调用性能(如 sysenter/sysexit) |
| mtrr | 内存类型范围寄存器 | 允许控制内存访问类型(如缓存策略) |
| pge | 全局分页使能 | 支持全局页表条目(减少 TLB 刷新) |
| mca | 机器检查架构 | 报告硬件错误(如内存、缓存故障) |
| cmov | 条件移动指令 | 提升分支预测性能 |
| pat | 页面属性表 | 允许动态调整内存访问策略 |
| pse36 | 36 位页目录 | 支持 4GB 以上物理地址(与 PAE 配合使用) |
| clflush | 清除缓存行 | 用于强制刷新缓存(如加密操作) |
1.2.2. SIMD 指令集(向量运算加速)
| 标志 | 含义 | 说明 |
|---|---|---|
| mmx | 多媒体扩展 | 加速多媒体处理(整数向量运算) |
| sse | 流式 SIMD 扩展 | 128 位浮点向量运算(用于音视频处理) |
| sse2 | SSE 第二代 | 扩展 SSE 功能(支持双精度浮点) |
| ssse3 | 增强型 SSE3 | 优化多媒体和图像处理 |
| sse4_1/sse4_2 | SSE 第四代 | 支持字符串搜索、校验和计算等 |
| avx | 高级向量扩展 | 256 位向量运算(提升科学计算性能) |
| avx2 | AVX 第二代 | 支持整数向量运算(用于深度学习) |
| avx512f/avx512dq/avx512bw/avx512vl | AVX-512 指令集 | 512 位向量运算(显著提升 AI 和 HPC 性能) |
| fma | 融合乘加指令 | 加速矩阵运算(常用于 AI 训练) |
| f16c | 半精度浮点运算 | 支持 16 位浮点数(用于图形渲染) |
| rdseed | 硬件随机数生成 | 生成加密安全的随机数 |
| adx | 高位辅助指令 | 加速大整数运算(用于密码学) |
1.2.3. 虚拟化支持
| 标志 | 含义 | 说明 |
|---|---|---|
| hypervisor | 虚拟化平台标识 | 表示当前 CPU 运行在虚拟化环境中(如 KVM、VMware) |
| vmx | Intel 虚拟化技术 | 支持硬件辅助虚拟化(Intel VT-x) |
| svm | AMD 虚拟化技术 | 支持 AMD-V 虚拟化(仅 AMD CPU) |
| vmx/svm | 虚拟化扩展 | 允许直接分配 CPU 资源给虚拟机 |
1.2.4. 安全与加密
| 标志 | 含义 | 说明 |
|---|---|---|
| aes | AES 加速指令 | 加速 AES 加密/解密(提升加密性能) |
| pclmulqdq | 携带乘法指令 | 优化多项式乘法(用于 CRC、加密) |
| rdrand | 硬件随机数生成 | 生成加密安全的随机数 |
| smep/smap | 栈保护 | 防止缓冲区溢出攻击 |
| mpx | 指针边界检查 | 增强内存安全(防止越界访问) |
1.2.5. 超线程与缓存
| 标志 | 含义 | 说明 |
|---|---|---|
| ht | 超线程技术 | 启用超线程(每个核心模拟多个逻辑 CPU) |
| clflush | 清除缓存行 | 强制刷新缓存(用于加密和同步) |
| clflushopt/clwb | 高效缓存刷新 | 优化缓存清理性能(用于数据库、加密) |
1.2.6. 其他高级功能
| 标志 | 含义 | 说明 |
|---|---|---|
| syscall/syscall | 快速系统调用 | 优化用户态与内核态切换 |
| nx | 不可执行位 | 防止代码注入攻击 |
| pdpe1gb | 1GB 大页 | 支持 1GB 大页(减少 TLB 刷新) |
| rdtscp | 时间戳计数器 | 提供精确的 CPU 周期计数 |
| lm | 长模式 | 启用 64 位模式 |
| constant_tsc | 固定频率 TSC | 保证时间戳计数器频率稳定 |
| nopl | NOP 指令扩展 | 支持 NOP 操作(用于填充指令) |
| xtopology | 拓扑信息 | 提供多核/超线程拓扑结构 |
| nonstop_tsc | 不停顿 TSC | 保证 TSC 在 C-States 下持续运行 |
| cpuid | CPUID 指令 | 获取 CPU 信息 |
| tsc_known_freq | 已知 TSC 频率 | 系统可直接使用 TSC 频率 |
| invpcid | 无效 PCID | 优化进程上下文切换(减少 TLB 刷新) |
| fsgsbase | 快速访问 GS/FS 基址 | 提升用户态和内核态数据访问效率 |
| tsc_adjust | TSC 校准 | 支持跨 CPU 校准 TSC |
| bmi1/bmi2 | 二进制运算指令 | 优化位操作(用于压缩、算法) |
| hle/rtm | 硬件锁消除/事务内存 | 提升多线程性能(减少锁竞争) |
| avx512_vnni | VNNI 指令 | 加速 AI 推理(向量神经网络指令) |
1.2.7. 实际应用场景
(1) 性能优化
- AVX-512:适用于 AI 训练、HPC(高性能计算)、视频编码。
- AES-NI:加速加密/解密(如 HTTPS、数据库加密)。
- FMA:优化矩阵运算(用于深度学习框架)。
(2) 虚拟化
- VMX/SVM:支持虚拟机直接分配 CPU 资源。
- hypervisor:标识当前运行在虚拟化环境中。
(3) 安全
- SMAP/SMEP:防止缓冲区溢出攻击。
- NX:防止代码注入攻击(如 Shellcode)。
(4) 调试与监控
- MCE:检测硬件错误(如内存、缓存故障)。
- TSC:用于性能分析和时间戳测量。
1.2.8. 关键标志详解
| 标志 | 作用 | 示例场景 |
|---|---|---|
| avx512f | 512 位向量运算 | AI 训练、科学计算 |
| aes | AES 加速 | 加密/解密(如 TLS 握手) |
| hypervisor | 虚拟化支持 | KVM、VMware 虚拟机 |
| ht | 超线程 | 提升多线程应用性能(如 Web 服务器) |
| rdseed | 硬件随机数 | 生成加密安全的随机数(如 OpenSSL) |
二、命令参数
2.1. 选项说明
| 选项 | 含义 | 示例 | 说明 |
|---|---|---|---|
| -a, --all | 显示所有 CPU(包括在线和离线) | lscpu -a |
默认在 -e 模式下启用 |
| -b, --online | 仅显示在线 CPU | lscpu -b |
默认在 -p 模式下启用 |
| -c, --offline | 仅显示离线 CPU | lscpu -c |
用于查看未启用的 CPU |
| -e, --extended[=] | 以扩展格式输出(默认包含所有列) | lscpu -e |
显示更详细的拓扑信息(如 NUMA 节点、缓存共享) |
| -p, --parse[=] | 以可解析格式输出(适合脚本处理) | lscpu -p |
输出逗号分隔的字段,便于自动化解析 |
| -s, --sysroot | 指定系统根目录 | lscpu -s /mnt/sysroot |
在 chroot 环境中使用 |
| -x, --hex | 以十六进制掩码格式输出 CPU 列表 | lscpu -x |
例如 0x3 表示 CPU 0-1 |
| -y, --physical | 显示物理 ID 而非逻辑 ID | lscpu -y |
用于硬件调试(如物理核心与逻辑核心映射) |
2.2. 可用列(Columns)
| 列名 | 含义 | 说明 |
|---|---|---|
| CPU | 逻辑 CPU 编号 | 从 0 开始的逻辑 CPU 编号(受超线程影响) |
| CORE | 逻辑核心编号 | 每个物理核心的编号(受超线程影响) |
| SOCKET | 逻辑物理 CPU 插槽编号 | 多路 CPU 系统中每个物理 CPU 的编号 |
| NODE | 逻辑 NUMA 节点编号 | 表示 CPU 所属的 NUMA 节点(影响内存访问性能) |
| BOOK | 逻辑 Book 编号 | IBM Power 架构中的 Book 单元编号 |
| DRAWER | 逻辑抽屉编号 | IBM Power 架构中的抽屉编号 |
| CACHE | 缓存共享信息 | 显示 CPU 之间的缓存共享关系(L1/L2/L3) |
| POLARIZATION | 虚拟化模式 | 表示 CPU 在虚拟硬件中的调度模式(如 virtual) |
| ADDRESS | 物理 CPU 地址 | 物理 CPU 的硬件地址(特定架构) |
| CONFIGURED | 是否由虚拟化平台分配 | yes/no 表示 CPU 是否被虚拟机管理程序分配 |
| ONLINE | 是否启用 | yes/no 表示 CPU 是否在线(由内核启用) |
| MAXMHZ | 最大频率 | 当前 CPU 的最大频率(MHz) |
| MINMHZ | 最小频率 | 当前 CPU 的最小频率(MHz) |
2.3. 选项与列的组合使用
2.3.1 扩展格式(-e)
bash
lscpu -e
-
输出示例:
shellCPU NODE SOCKET CORE BOOK DRAWER CONFIGURED ONLINE MAXMHZ MINMHZ 0 0 0 0 0 0 yes yes 3000 800 1 0 0 0 0 0 yes yes 3000 800 ... # 不同的机型有差异 $ lscpu -e CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE 0 0 0 0 0:0:0:0 yes 1 0 0 0 0:0:0:0 yes 2 0 0 1 1:1:1:0 yes 3 0 0 1 1:1:1:0 yes 4 0 0 2 2:2:2:0 yes 5 0 0 2 2:2:2:0 yes 6 0 0 3 3:3:3:0 yes 7 0 0 3 3:3:3:0 yes -
用途:
- 查看每个逻辑 CPU 的拓扑关系(如 NUMA 节点、核心、插槽)。
- 分析缓存共享(
CACHE列)以优化线程绑定。
2.3.2 可解析格式(-p)
bash
lscpu -p
-
输出示例 :
shell0,0,0,0,0,0,yes,yes,3000,800 1,0,0,0,0,0,yes,yes,3000,800 ... # 不同的机型有差异 $ lscpu -p # The following is the parsable format, which can be fed to other # programs. Each different item in every column has an unique ID # starting from zero. # CPU,Core,Socket,Node,,L1d,L1i,L2,L3 0,0,0,0,,0,0,0,0 1,0,0,0,,0,0,0,0 2,1,0,0,,1,1,1,0 3,1,0,0,,1,1,1,0 4,2,0,0,,2,2,2,0 5,2,0,0,,2,2,2,0 6,3,0,0,,3,3,3,0 7,3,0,0,,3,3,3,0 -
用途 :
-
适合脚本处理(如提取
CPU、NODE信息用于线程绑定)。 -
可结合
awk或cut提取特定字段:shell$ lscpu -p | awk -F, '{print $1, $2}' # The following is the parsable format which can be fed to other # programs. Each different item in every column has an unique ID # starting from zero. # CPU Core 0 0 1 0 2 1 3 1 4 2 5 2 6 3 7 3
-
2.3.3 十六进制掩码(-x)
shell
lscpu -x
-
输出示例 :
CPU(s): 0x3 Core(s): 0x3 ... -
用途 :
- 快速查看 CPU 配置(如
0x3表示 CPU 0-1)。 - 适合需要二进制掩码的场景(如内核调试)。
- 快速查看 CPU 配置(如
2.3.4 物理 ID(-y)
bash
lscpu -y
-
输出示例 :
CPU PHYSICAL ID 0 0 1 0 2 1 3 1 -
用途 :
- 显示逻辑 CPU 与物理核心的映射关系。
- 用于超线程系统中区分物理核心和线程。
三、实际应用
3.1、应用场景
3.1.1 分析 NUMA 拓扑
bash
lscpu -e NODE,CPU
- 用途 :
- 查看每个逻辑 CPU 所属的 NUMA 节点,优化内存分配(如
numactl绑定内存到对应节点)。
- 查看每个逻辑 CPU 所属的 NUMA 节点,优化内存分配(如
3.1.2 过滤离线 CPU
bash
lscpu -c
- 用途 :
- 查看未启用的 CPU(如因节能策略被禁用),检查是否需要启用。
3.1...3 获取 CPU 频率范围
bash
lscpu -p MAXMHZ,MINMHZ
- 用途 :
- 分析 CPU 动态频率调整(如 Intel Turbo Boost)的范围。
3.1...4 虚拟化环境调试
bash
lscpu -p CONFIGURED,ONLINE
- 用途 :
- 检查虚拟机是否分配了所有 CPU(如 KVM 中的 vCPU 配置)。
3.2. 示例命令与输出
3.2.1:查看所有 CPU 的拓扑
bash
lscpu -e CPU,NODE,SOCKET,CORE
-
输出 :
CPU NODE SOCKET CORE 0 0 0 0 1 0 0 0 2 1 0 1 3 1 0 1 -
解读 :
- 2 个物理核心(Core 0-1),每个核心 2 个线程(Socket 0)。
- NUMA 节点 0 和 1 分别对应不同内存区域。
3.2.2:获取所有在线 CPU 编号
bash
lscpu -p | grep yes | cut -d, -f1
-
输出 :
0 1 2 3 -
用途 :
- 提取在线 CPU 编号,用于
taskset或numactl绑定进程。
- 提取在线 CPU 编号,用于
3.3. 关键选项对比
| 选项 | 适用场景 | 优势 |
|---|---|---|
| -e | 拓扑分析 | 显示完整拓扑信息(NUMA、缓存共享) |
| -p | 脚本处理 | 逗号分隔格式,易于自动化解析 |
| -x | 高级调试 | 十六进制掩码,适合内核/硬件调试 |
| -y | 超线程调试 | 区分逻辑 CPU 与物理核心 |
3.4. 常见问题
3.4.1: 如何查看离线 CPU?
bash
lscpu -c
3.4.2: 如何提取所有 NUMA 节点?
bash
lscpu -e NODE | sort -u
3.4.3: 如何判断是否启用超线程?
bash
lscpu | grep "Thread(s) per core"
参考文档
1、https://cloud.tencent.com/developer/article/2473364