cpuid 是一个在 Linux 系统中用于查询 CPU 详细信息的命令行工具,它的全称是 "CPU IDentification",它通过直接调用 CPU 的 CPUID 指令来获取处理器本身提供的各种信息,而不是从 /proc/cpuinfo 这样的文件中读取,它能提供非常底层和准确的数据。

安装 cpuid
cpuid 命令通常不在 Linux 的默认安装包中,你需要手动安装,在基于 Debian/Ubuntu 的系统上,可以使用 apt:
sudo apt update sudo apt install cpuid
在基于 Red Hat/CentOS/Fedora 的系统上,可以使用 yum 或 dnf:
sudo yum install cpuid # 或者 (对于较新的系统) sudo dnf install cpuid
基本用法
安装完成后,最简单的用法就是直接在终端输入 cpuid:
cpuid
这个命令会打印出非常全面的 CPU 信息,包括厂商、型号、特性、缓存大小等,输出内容会很长,并且按类别分组。

常用选项和示例
cpuid 命令提供了很多选项,让你可以只查询特定类别的信息,这对于快速获取关键数据非常有用。
选项 -1:显示 CPU 基本信息(最常用)
这是最常用的选项,它会显示 CPU 的基本识别信息,包括厂商、系列、型号、频率等。
cpuid -1
示例输出:
CPUID Vendor ID: GenuineIntel
CPUID Family: 6, Model: 158, Stepping: 10
CPUID Model: 0x3e (Coffee Lake)
CPUID Signature: 0x906ea
CPUID Features: FPU, VME, DE, PSE, TSC, MSR, PAE, MCE, CX8, APIC, SEP, MTRR, PGE, MCA, CMOV, PAT, PSE36, CLFSH, DS, ACPI, MMX, FXSR, SSE, SSE2, SS, HTT, TM, PBE, SSE3, PCLMULQDQ, DTES64, MON, DS_CPL, VMX, SMX, EST, TM2, SSSE3, FMA, CX16, PCID, SSE4.1, SSE4.2, X2APIC, POPCNT, TSC_DEADLINE_TIMER, AES, XSAVE, OSXSAVE, AVX, F16C, RDRAND, HYPERVISOR, LAHF_LM, ABM, BMI1, AVX2, BMI2, SMEP, BMI1, HLE, RTM, RDSEED, ADX, SMAP, AVX512F, AVX512DQ, AVX512CD, AVX512BW, AVX512VL, AVX512IFMA, AVX512VBMI, CLFLUSHOPT, CLWB, PT, SGX, AVX512_VNNI, AVX512_BF16, AVX512_VPOPCNTDQ, RDPID, FSRC, SGX_LC, ARCH_CAPABILITIES, SPEC_CTRL, SSBD, IBRS, IBPB, STIBP, AMD_SSBD, VIRT_SPEC_CTRL, FLUSH_L1D, AMD_SSB_NO, TSX_FORCE_ABORT, HWP, HWP_NOTIFY, HWP_ACT_WINDOW, HWP_EPP, HWP_PKG_REQ, AVX512_4VNNIW, AVX512_4FMAPS, AVX512_VP2INTERSECT, SRBDS_CTRL, MD_CLEAR, TSXLDTRK, POWER_CTRL, FBSDP_NO, RSVD, SNOOP_FILTER, DTLB_4M, L1D_FLUSH, L1D_PREFETCH, SPEC_CTRL_SSBD, SSBD_NO, AVX512_FP16, AVX512_BF16, AVX512_VNNI, AVX512_VBMI2, AVX512_VPOPCNTDQ, AVX512_FP16, AVX512_BF16, AVX512_VNNI, AVX512_VBMI2, AVX512_VPOPCNTDQ, AVX512_FP16, AVX512_BF16, AVX512_VNNI, AVX512_VBMI2, AVX512_VPOPCNTDQ, AVX512_FP16, AVX512_BF16, AVX512_VNNI, AVX512_VBMI2, AVX512_VPOPCNTDQ
CPUID Cache Information:
L1 Data Cache: 64 KB (2 lines, 64 bytes/line)
L1 Instruction Cache: 64 KB (2 lines, 64 bytes/line)
L2 Cache: 512 KB (4 lines, 64 bytes/line)
L3 Cache: 8192 KB (56 lines, 64 bytes/line)
CPUID Topology Information:
Cores: 8
Threads per core: 2
Logical processors: 16
CPUID Speed Information:
Max. Frequency: 4.800 GHz
Bus Frequency: 100.000 MHz
解读:

- Vendor ID:
GenuineIntel表示是 Intel 处理器。 - Family/Model/Stepping: 这是 CPU 的核心身份标识。
- Features: 列出了 CPU 支持的所有指令集特性,
SSE,AVX,AVX2,AES等,如果你的程序需要某个指令集,可以在这里检查。 - Cache Information: 显示了各级缓存的大小。
- Topology Information: 显示了物理核心数、每核心线程数和逻辑处理器总数,对于支持超线程的 CPU,逻辑处理器数是物理核心数的两倍。
- Speed Information: 显示了最大频率和总线频率。
选项 -l:显示 CPU 的逻辑核心和拓扑信息
这个选项专门用来显示 CPU 的核心、线程、NUMA 节点等拓扑结构。
cpuid -l
示例输出:
CPUID Topology Information:
Logical processors: 16
Cores: 8
Threads per core: 2
Physical packages: 1
NUMA nodes: 1
APIC ID: 0
Core ID: 0
SMT ID: 0
...
(会为每个逻辑处理器列出类似信息)
选项 -r:显示 CPU 的寄存器信息
这个选项会显示 CPU 的各种控制寄存器和模型特定寄存器 的值,这对于高级用户和开发者调试底层问题非常有用。
cpuid -r
选项 -m:显示 CPU 的缓存信息
如果你只想快速查看缓存大小,这个选项很方便。
cpuid -m
示例输出:
CPUID Cache Information:
L1 Data Cache: 64 KB (2 lines, 64 bytes/line)
L1 Instruction Cache: 64 KB (2 lines, 64 bytes/line)
L2 Cache: 512 KB (4 lines, 64 bytes/line)
L3 Cache: 8192 KB (56 lines, 64 bytes/line)
选项 -s:显示 CPU 的速度信息
只显示 CPU 的频率相关信息。
cpuid -s
示例输出:
CPUID Speed Information:
Max. Frequency: 4.800 GHz
Bus Frequency: 100.000 MHz
与 /proc/cpuinfo 的区别
很多人会混淆 cpuid 和 /proc/cpuinfo,它们的主要区别在于信息来源和准确性:
| 特性 | cpuid 命令 |
/proc/cpuinfo 文件 |
|---|---|---|
| 信息来源 | 直接从 CPU 的 CPUID 指令获取。 |
由操作系统内核收集和提供。 |
| 准确性 | 最高,是 CPU 自己报告的原始数据。 | 可能被内核修改或格式化,有时会不准确或省略某些信息。 |
| 用途 | 底层硬件分析、驱动开发、性能调优、验证 CPU 特性。 | 查看基本的 CPU 信息、编写简单的脚本等。 |
- 如果你需要最权威、最底层的 CPU 信息,用于开发或深度分析,请使用
cpuid。 - 如果你只是想快速查看 CPU 的基本概况(有多少核心、什么型号),
cat /proc/cpuinfo就足够了。
cpuid 是一个非常强大和专业的 Linux 工具,对于系统管理员、开发者和任何需要深入了解 CPU 硬件细节的人来说都非常有用,通过不同的选项,你可以精确地获取 CPU 的基本识别信息、拓扑结构、缓存大小、支持的指令集等,其数据的准确性和完整性远超系统提供的其他工具。
