Linux lscpu显示CPU架构信息

此命令用来显示cpu的相关信息
lscpu从sysfs和/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读!
命令输出的信息包含cpu数量,线程(thread),核数(core),套接字和Nom-Uniform Memeor Access(NUMA)节点数,缓存等!
不是所有的列都支持所有的架构,如果指定了不支持的列,那么lscpu将打印列,但不显示数据!
• Socket 具体是指的主板上 CPU 的插槽数量,一般笔记本只有一个,而服务器可能会有多个。如果有两个插槽,通常称为两路
• Core 具体是指 CPU 的核心,也就是平常说的几核,比如八核之类
• thread 是指的每个 Core 的硬件线程数,超线程
  
命令格式:

lscpu [-a|-b|-c] [-x] [-s directory] [-e [=list]|-p [=list]]
  lscpu -h|-V

常用命令选项

-a, –all        包含上线和下线的cpu的数量,此选项只能与选项e或-p一起指定
-b, –online     只显示出上线的cpu数量,此选项只能与选项e或者-p一起指定
-c, –offline    只显示出离线的cpu数量,此选项只能与选项e或者-p一起指定
-e, –extended [=list]		以人性化的格式显示cpu信息,如果list参数省略,输出所有可用数据的列,在指定了list参数时,选项的字符串、等号(=)和列表必须不包含任何空格或其他空白。比如:’-e=cpu,node’ or ’–extended=cpu,node’
-h, –help					帮助
-p, –parse [=list]			优化命令输出,便于分析.如果省略list,则命令的输出与早期版本的lscpu兼容,兼容格式以两个逗号用于分隔cpu缓存列,如果没有发现cpu缓存,则省略缓存列,如果使用list参数,则缓存列以冒号(:)分隔。在指定了list参数时,选项的字符串、等号(=)和列表必须不包含空格或者其它空白。比如:’-e=cpu,node’ or ’–extended=cpu,node’
-s, –sysroot directory		为一个Linux实例收集CPU数据,而不是发出lscpu命令的实例。指定的目录是要检查Linux实例的系统根
-x, –hex					使用十六进制来表示cpu集合,默认情况是打印列表格式的集合(例如:0,1)

可用的列:
           CPU  逻辑 CPU 数量
          CORE  逻辑核心数量
        SOCKET  逻辑(CPU)座数量
          NODE  逻辑 NUMA 节点数量
          BOOK  逻辑 book 数
        DRAWER  logical drawer number   					  //逻辑抽屉数(不太明白,好像和book有关系)
         CACHE  shows how caches are shared between CPUs      //cpu之间如何共享缓存
  POLARIZATION  CPU dispatching mode on virtual hardware      //虚拟硬件上的CPU调度模式
       ADDRESS  physical address of a CPU 					  //cpu物理地址
    CONFIGURED  shows if the hypervisor has allocated the CPU //管理程序是否分配了cpu
        ONLINE  shows if Linux currently makes use of the CPU //在使用的cpu
        MAXMHZ  shows the maximum MHz of the CPU    		  //最大频率
        MINMHZ  shows the minimum MHz of the CPU    		  //最小频率

显示格式:

[root@master ~]# lscpu 
  Architecture:           # 架构
  CPU(s): 				   # 逻辑cpu颗数
  Thread(s) per core:     # 每个核心线程
  Core(s) per socket:     # 每个cpu插槽核数/每颗物理cpu核数
  CPU socket(s): 		   # cpu插槽数
  Vendor ID: 			   # cpu厂商ID
  CPU family: 			   # cpu系列
  Model: 				   # 型号
  Stepping: 			   # 步进
  CPU MHz: 		       # cpu主频
  BogoMIPS: 			   # 估算MIPS, MIPS是每秒百万条指令
   Hypervisor vendor:	   # 虚拟化技术的提供商
  Virtualization: 		   # cpu支持的虚拟化技术
  L1d cache: 			   # 一级缓存(google了下,这具体表示表示cpu的L1数据缓存)
  L1i cache: 			   # 一级缓存(具体为L1指令缓存)
  L2 cache: 			   # 二级缓存
   NUMA node0 CPU(s): 0-3  # 四个cpu在同一个numa节点node0上
   Flags				   # cpu支持的技术特征
Linux 上的 /proc是一个虚拟文件系统,在系统启动后挂载在 /proc 上,/proc 包含了很多内核和系统信息用来展示 Linux 内核是如何展示硬件的,比如在 /proc/cpuinfo 里可以看到一些关于 CPU 的信息,其中的 flags 包含了很多用来表示 CPU 特征的参数:
具体每个 flag 缩写代表什么意思呢?关于 Linux 的最权威答案永远来自源代码,VPSee 在内核源代码里找到了每个 flag 的相关注释,通过这些注释可以很方便我们理解这些 flags 缩写
...
/* Intel-defined CPU features, CPUID level 0x00000001 (edx), word 0 */
#define X86_FEATURE_FPU         (0*32+ 0) /* Onboard FPU */
#define X86_FEATURE_VME         (0*32+ 1) /* Virtual Mode Extensions */
#define X86_FEATURE_DE          (0*32+ 2) /* Debugging Extensions */
#define X86_FEATURE_PSE         (0*32+ 3) /* Page Size Extensions */
#define X86_FEATURE_TSC         (0*32+ 4) /* Time Stamp Counter */
#define X86_FEATURE_MSR         (0*32+ 5) /* Model-Specific Registers */
#define X86_FEATURE_PAE         (0*32+ 6) /* Physical Address Extensions */
#define X86_FEATURE_MCE         (0*32+ 7) /* Machine Check Exception */
#define X86_FEATURE_CX8         (0*32+ 8) /* CMPXCHG8 instruction */
#define X86_FEATURE_APIC        (0*32+ 9) /* Onboard APIC */
#define X86_FEATURE_SEP         (0*32+11) /* SYSENTER/SYSEXIT */
#define X86_FEATURE_MTRR        (0*32+12) /* Memory Type Range Registers */
#define X86_FEATURE_PGE         (0*32+13) /* Page Global Enable */
#define X86_FEATURE_MCA         (0*32+14) /* Machine Check Architecture */
#define X86_FEATURE_CMOV        (0*32+15) /* CMOV instructions */
                                          /* (plus FCMOVcc, FCOMI with FPU) */
#define X86_FEATURE_PAT         (0*32+16) /* Page Attribute Table */
#define X86_FEATURE_PSE36       (0*32+17) /* 36-bit PSEs */
#define X86_FEATURE_PN          (0*32+18) /* Processor serial number */
#define X86_FEATURE_CLFLSH      (0*32+19) /* "clflush" CLFLUSH instruction */
#define X86_FEATURE_DS          (0*32+21) /* "dts" Debug Store */
#define X86_FEATURE_ACPI        (0*32+22) /* ACPI via MSR */
#define X86_FEATURE_MMX         (0*32+23) /* Multimedia Extensions */
#define X86_FEATURE_FXSR        (0*32+24) /* FXSAVE/FXRSTOR, CR4.OSFXSR */
#define X86_FEATURE_XMM         (0*32+25) /* "sse" */
#define X86_FEATURE_XMM2        (0*32+26) /* "sse2" */
#define X86_FEATURE_SELFSNOOP   (0*32+27) /* "ss" CPU self snoop */
#define X86_FEATURE_HT          (0*32+28) /* Hyper-Threading */
#define X86_FEATURE_ACC         (0*32+29) /* "tm" Automatic clock control */
#define X86_FEATURE_IA64        (0*32+30) /* IA-64 processor */
#define X86_FEATURE_PBE         (0*32+31) /* Pending Break Enable */

/* AMD-defined CPU features, CPUID level 0x80000001, word 1 */
/* Don't duplicate feature flags which are redundant with Intel! */
#define X86_FEATURE_SYSCALL     (1*32+11) /* SYSCALL/SYSRET */
#define X86_FEATURE_MP          (1*32+19) /* MP Capable. */
#define X86_FEATURE_NX          (1*32+20) /* Execute Disable */
#define X86_FEATURE_MMXEXT      (1*32+22) /* AMD MMX extensions */
#define X86_FEATURE_FXSR_OPT    (1*32+25) /* FXSAVE/FXRSTOR optimizations */
#define X86_FEATURE_GBPAGES     (1*32+26) /* "pdpe1gb" GB pages */
#define X86_FEATURE_RDTSCP      (1*32+27) /* RDTSCP */
#define X86_FEATURE_LM          (1*32+29) /* Long Mode (x86-64) */
#define X86_FEATURE_3DNOWEXT    (1*32+30) /* AMD 3DNow! extensions */
#define X86_FEATURE_3DNOW       (1*32+31) /* 3DNow! */
...

/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
...
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
...
/* More extended AMD flags: CPUID level 0x80000001, ecx, word 6 */

bug
关于CPU系列、型号等的基本概述。始终仅基于第一个CPU。有时在Xen Dom0中,内核会报告错误的数据!在虚拟硬件上,每个插槽的内核数量等。可能是错的。

举例说明
举例来说,如果某个服务器"2路4核超线程",也就是 2 个插槽,4 核心,默认为 2 thread,也就是 2x4x2 是 16 逻辑 CPU。对操作系统来说,逻辑 CPU 的数量就是 Socket * Core * Thread。
比如下面我的台式机,1 Sockets, 4 Cores,2 Threads,那么就是 4 核 8 线程。

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

If you shed tears when you miss the sun, you also miss the stars

猜你喜欢

转载自blog.csdn.net/qq_50573146/article/details/127063225