在Linux系统中, /proc 目录下提供了很多的文件来显示系统的软硬件信息。如果想了解系统中的CPU提供者及相关配置信息,可以查看 /proc/cpuinfo 。比如我们要获取物理CPU的数量、每个物理cpu的核心数、是否开启超线程等信息。
首先要搞清楚物理CPU、核心数、逻辑CPU数的概念:
① 物理CPU数量(physical id):主板上实际插入的CPU数量,有几个可以通过不重复物理id来统计。
② CPU核数(cpu cores):单个CPU上可以处理数据的芯片组数量,如双核、四核等。
③ 逻辑CPU数量:一般来说,
逻辑CPU = 物理CPU数 × 核心数 # 不支持超线程技术
逻辑CPU = 物理CPU数量 × 每个CPU核心数量 * 2 # 表示服务器的CPU支持超线程技术(简单来说就是可以让处理器中的1个核心成为操作系统中的2个核心。这样,操作系统可用的执行资源翻了一番,大大提高了系统的整体性能)
文件 /proc/cpuinfo 显示了系统正在运行的处理器类型,包括存在的 CPU 数量。这是系统的 cat /proc/cpuinfo 的示例输出。
ubuntu@VM-0-13-ubuntu:~$ cat /proc/cpuinfo processor : 0vendor_id : GenuineIntelcpu family : 6model : 79model name : Intel(R) Xeon(R) CPU E5-26xx v4stepping : 1microcode : 0x1cpu MHz : 2394.454cache size : 4096 KBphysical id : 0siblings : 2core id : 0cpu cores : 2apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : 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 lm constant_tsc rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti bmi1 avx2 bmi2 rdseed adx xsaveoptbugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mdsbogomips : 4788.90clflush size : 64cache_alignment : 64address sizes : 40 bits physical, 48 bits virtualpower management:processor : 1vendor_id : GenuineIntelcpu family : 6model : 79model name : Intel(R) Xeon(R) CPU E5-26xx v4stepping : 1microcode : 0x1cpu MHz : 2394.454cache size : 4096 KBphysical id : 0siblings : 2core id : 1cpu cores : 2apicid : 1initial apicid : 1fpu : yesfpu_exception : yescpuid level : 13wp : yesflags : 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 lm constant_tsc rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti bmi1 avx2 bmi2 rdseed adx xsaveoptbugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mdsbogomips : 4788.90clflush size : 64cache_alignment : 64address sizes : 40 bits physical, 48 bits virtualpower management:
解释如下:
processor:系统中逻辑处理核心的数量。对于单核处理器,该类将其视为 CPU 编号,对于多核处理器,它可以是物理内核,也可以是使用超线程技术的虚拟逻辑内核。(processor内核内部使用的对象,不一定绑定到物理设备,它们可能都具有相同的 physical id)
vendor_id:CPU制造商。
cpu family:CPU 产品系列代号。
mode:cpu属于其系列中的哪一代。
model name:CPU的名称及其编号,标称频率。
stepping:CPU属于生产更新版本。
cpu MHz:实际CPU频率。
cache size:CPU二级缓存的大小。
physical id:单个物理CPU标号。
siblings:单个物理 CPU 的逻辑 CPU 数量。siblings = cpu 核心 * [2]。
core id:当前所在CPU中的物理内核id。
cpu cores:逻辑核所在CPU的物理核数。比如这里有2个cpu core,对应的core id是0、1。
apicid:用于区分不同逻辑核心的编号。系统中每个逻辑核的编号必须不同,编号不一定是连续的。
fpu:是否有浮点单元。(Floating Point Unit)
fpu_exception:是否支持浮点计算异常。
cpuid level:在执行cpuid指令之前,eax寄存器中的值会根据不同的值返回不同的内容。
wp:表示当前CPU是否支持内核态用户空间写保护。(Write Protection)
flags:当前CPU支持的功能,例如浮点单元 (FPU) 的存在和处理 MMX 指令的能力。。
bogomips:粗略测量的 CPU 速度(每秒百万条指令)。
clflush size:每个flush缓存的大小单位。
cache_alignment:缓存地址对齐单元。
address sizes:可访问地址空间的数量。
power management:支持电源管理。