lscpu 命令学习

文章目录

    • 一、字段含义
      • [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))
    • 三、实际应用
      • 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
  • 输出示例

    shell 复制代码
    CPU 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
  • 输出示例

    shell 复制代码
    0,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
  • 用途

    • 适合脚本处理(如提取 CPUNODE 信息用于线程绑定)。

    • 可结合 awkcut 提取特定字段:

      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)。
    • 适合需要二进制掩码的场景(如内核调试)。
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 绑定内存到对应节点)。
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 编号,用于 tasksetnumactl 绑定进程。

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

2、https://cloud.tencent.com/developer/article/2138064

3、https://www.cnblogs.com/liu-myu/p/18152556

相关推荐
TomCode先生1 小时前
2个月精通SaaS MES系统业务知识学习计划(每天2小时)
学习
●VON1 小时前
Flutter for OpenHarmony前置知识《Flutter 路由与导航完整教程》
学习·flutter·华为·openharmony·开源鸿蒙
搞机械的假程序猿1 小时前
普中51单片机学习笔记-AT24C02读写
笔记·学习·51单片机
光影少年1 小时前
web3学习路线
前端·学习·前端框架·web3
暗然而日章2 小时前
C++基础:Stanford CS106L学习笔记 3 流
c++·笔记·学习
青衫码上行2 小时前
【JavaWeb学习 | 第17篇】JSP内置对象
java·开发语言·前端·学习·jsp
Molesidy2 小时前
【Embedded Development】【TCP-IP】关于TCP-IP网络协议的学习记录以及基于TCP-IP网络协议的上层协议的初步理解
网络协议·学习·tcp/ip
Darken032 小时前
基于 STM32 ——GPIO输出
单片机·学习·gpio·硬件
组合缺一2 小时前
Solon AI 开发学习10 - chat - 工具调用概念介绍
java·人工智能·学习·ai·llm·solon