【给点知识-1分钟小知识】一个lscpu命令引发的探究

【给点知识-1分钟小知识】一个lscpu命令引发的探究

1.背景

机器操作系统:CentOS7
机器的类型:物理机器
在统计一台Linux服务器配置的时候,我使用了lscpu命令来统计,发现打印了一大串数据。于是引发了一系列的问题.如图以下是lscpu命令的输出

[root@000~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                40
On-line CPU(s) list:   0-39
Thread(s) per core:    2
Core(s) per socket:    10
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
Stepping:              4
CPU MHz:               3105.908
CPU max MHz:           3600.0000
CPU min MHz:           1200.0000
BogoMIPS:              5600.12
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              25600K
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp flush_l1d

接下来详细讲解下,这都是什么意思?

2.专业术语详解

2.1 CPU、单核、多核、卡槽、超线程

讲解之前先来了解下这几个概念
并行:并行是指多个处理器或者是多核的处理器同时处理多个不同的任务,同时进行
并发:指一个处理器同时处理多个任务,不是同时进行,而是任务间不断切换进行

2.1.1 CPU

CPU(Central Processing Unit,中央处理单元)是计算机系统中的核心组件之一,也被称为处理器。它是计算机中的主要执行器,负责执行计算机程序中的指令,进行算术和逻辑运算,以及控制其他硬件组件的操作。
以上是公认的官方概念。
具体到物理物质的时候是什么呢?它长什么样?以下是intel的CPU。

在这里插入图片描述

2.1.2 单核

在这里插入图片描述

  1. 早期计算机: 在计算机的早期,使用电子管构建的计算机主要是单核的。ENIAC(Electronic Numerical Integrator and Computer)是世界上第一台通用计算机,于1945年投入使用,采用电子管作为主要元件。
  2. 晶体管技术: 20世纪50年代晶体管的发明取代了电子管,使得计算机得以小型化和稳定化。然而,这些计算机仍然是单核心的。
    单核处理器一次只能处理一个任务。在单核时代,处理器按顺序执行指令流,每个时钟周期处理一个指令。虽然可以通过流水线技术提高每秒钟执行的指令数量,但在任何给定的时刻,单核处理器仍然只能处理一个指令。
    假设有一个程序,任务是从磁盘读取数据,然后将数据展示到屏幕上。在这个场景中,任务可以分解为以下几个步骤:
  3. 从磁盘读取数据: 这是一个任务,涉及到文件系统的操作。程序需要与磁盘交互,读取存储在磁盘上的数据。
  4. 数据处理: 一旦从磁盘读取数据,可能需要进行一些处理,例如解析文件格式、提取特定信息等。
  5. 图形展示: 最后,数据需要被呈现在屏幕上。这可能涉及图形处理、用户界面渲染等任务。
    在单核处理器上,这些任务是按照顺序执行的。处理器首先执行磁盘读取任务,然后是数据处理任务,最后是图形展示任务。每个任务在处理器上执行一段时间,然后切换到下一个任务。

在这里插入图片描述

2.1.3 多核

在这里插入图片描述

随着计算机的发展,人们发现单核CPU利用率不高,性能也不好,比如一个任务中有读取磁盘操作,那么cpu使用率可能只有30% 所以还有其他一部分没有被利用
于是多核技术就出现了,就在一个CPU中增加了多个核,这样可以充分的利用CPU了。多核处理器通过在同一芯片上集成多个处理核心来提高并行度,从而同时处理多个任务。每个核心仍然是单核的,但整个处理器能够并行执行多个任务,提高了整体性能。
比如一个CPU有四个核心,那么就可以同时执行多个任务。如果有两个程序,首先都是读取程序->然后处理数据->展示数据;
程序1的读取程序由核心1处理,处理完后,这个时候核心1空闲了就回去读取程序2的数据,然后就可以并行执行
在这里插入图片描述

具体来说,也有可能的情况是:核心1 2 3 被程序1使用,那么核心4 就可以被程序2使用了,当核1 被程序1 释放后,又可以被程序2使用了,就这样处理

  1. 程序1的核心分配:
    • 核心1:读取程序1的数据
    • 核心2:处理程序1的数据
    • 核心3:展示程序1的数据
  2. 程序2的核心分配:
    • 核心4:读取程序2的数据
    • 核心1:处理程序2的数据
    • 核心2:展示程序2的数据
      在这里插入图片描述

2.1.4超线程

  1. 多核处理器通过在同一芯片上集成多个处理核心,使得处理器能够同时执行多个任务。每个核心都是一个独立的处理单元,可以独立执行指令流。多核技术主要通过并行处理多个任务来提高整体性能。每个核心都有自己的寄存器、缓存等资源,能够独立地执行任务,但核心之间的资源并不共享。
  2. 虽然多核心技术提高了利用率但是还是没有充分使用,而且还有一些资源共享的问题,比如内存共享、缓存共享、文件系统共享、硬件资源共享等
  3. 超线程技术通过在单个物理核心上支持多个逻辑线程,使得处理器能够在同一时刻执行多个线程。每个逻辑线程共享物理核心的资源,包括寄存器、缓存等。超线程通过在一个时钟周期内切换执行不同线程的指令,以保持更高的指令吞吐量。
  4. 由于cpu的执行速度非常快,而其他部件相对来说又比较慢,所以cpu经常会处于空闲状态,为了充分利用cpu资源,intel又在core的基础上提出了hyper-threading概念,即一个core里可以模拟多个逻辑核,这个就叫做thread。
  5. 超线程技术是通过硬件实现的。具体来说,它是通过在单个物理处理器核心上模拟多个逻辑核心来实现的。每个逻辑核心都有自己的寄存器、执行单元和缓存,使得处理器在同一时刻能够执行多个线程。这种硬件层面的支持使得超线程能够更有效地利用处理器的资源,提高并发度,提升整体性能。与软件实现相比,硬件实现通常能够更高效地支持并行执行,因为它直接涉及到底层的硬件结构和指令执行。
  6. 超线程(Hyper-Threading)技术创建了逻辑核心。在单个物理核心上,超线程技术模拟了两个逻辑核心。每个逻辑核心都能够独立地执行指令流,拥有自己的寄存器集和执行单元,但它们共享同一物理核心的资源,如缓存和执行单元。

2.1.5 总结

一个CPU可以有多个核,一个核心可以有多个线程
在这里插入图片描述

2.1.6 卡槽

主要说明卡槽主要用来就是放CPU的槽。有很多个与cpu对应的引脚

在这里插入图片描述

3.lscpu输出结果详解

2.1 CPU部分结果详解

CPU(s):                40 // cpu总量
On-line CPU(s) list:   0-39 // 在线的cpu总个数
Thread(s) per core:    2 // 每个核心有几个线程
Core(s) per socket:    10// 每个槽有几个核
Socket(s):             2  // 卡槽个数

CPU(Central Processing Unit,中央处理单元)是计算机系统中的核心组件之一,也被称为处理器。它是计算机中的主要执行器,负责执行计算机程序中的指令,进行算术和逻辑运算,以及控制其他硬件组件的操作。
这里的输出结果CPU表示系统中的逻辑 CPU 数量,也包括启用了超线程技术的虚拟核心

这里输出的CPU(s)表示的就是逻辑核数,所以统计CPU的时候就知道逻辑核数有多少个
逻辑核=卡槽个数(Socket(s)) X 每个CPU有几个核(Core(s) per socket) X 每个核心有几个线程(Thread(s) per core)=40

3.2 其他部分详解

Architecture:          x86_64  // 指定系统架构,这里是 x86_64,表示一个64位系统。
CPU op-mode(s):        32-bit, 64-bit  // 指示支持的 CPU 操作模式,显示了32位和64位两种模式。
Byte Order:            Little Endian //  指定系统的字节序,这里是 Little Endian(小端序)。
CPU(s):                40
On-line CPU(s) list:   0-39
Thread(s) per core:    2
Core(s) per socket:    10
Socket(s):             2
NUMA node(s):          2 // 显示 NUMA(非一致性存储访问)节点的数量,这里是2。
Vendor ID:             GenuineIntel // 标识 CPU 制造商,这里是 GenuineIntel,表示英特尔制造。
CPU family:            6 // 显示 CPU 系列,这里是6。
Model:                 62 // 显示 CPU 型号,这里是62。
Model name:            Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz// 提供 CPU 的具体型号和频率信息。
Stepping:              4 // 显示 CPU 的步进信息,这里是4。
CPU MHz:               3105.908 // 显示 CPU 的实际运行频率,这里是3105.908 MHz。
CPU max MHz:           3600.0000 // 显示 CPU 的最大运行频率
CPU min MHz:           1200.0000// 显示 CPU 的最小运行频率
BogoMIPS:              5600.12 // 用于表示 CPU 性能的估算值,这里是5600.12。
Virtualization:        VT-x // 显示是否支持虚拟化技术,这里是VT-x,表示支持 Intel 虚拟化技术。
L1d cache:             32K // 分别表示各级缓存的大小。
L1i cache:             32K // 分别表示各级缓存的大小。
L2 cache:              256K // 分别表示各级缓存的大小。
L3 cache:              25600K // 分别表示各级缓存的大小。
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38 // 提供 NUMA 节点的 CPU 列表。
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 // 提供 NUMA 节点的 CPU 列表。
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp flush_l1d //指令集 所有的应用程序底层都是执行这些指令集,比如请求网络调用了指令集:

指令集介绍:
1. **fpu:** 浮点运算单元,用于浮点数运算。
2. **sse, sse2, ssse3, sse4_1, sse4_2:** SIMD(单指令、多数据)指令集,用于向量化浮点运算,加速多媒体处理。
3. **avx:** 高级向量扩展,是 SSE 的延伸,提供更广泛的 SIMD 指令。
4. **aes:** 高级加密标准(Advanced Encryption Standard)指令集,用于硬件加速加密算法。
5. **ht:** 超线程技术,允许每个物理核心模拟出两个逻辑核心。
6. **tm, tm2:** 事务内存指令集,支持事务内存操作。
7. **nx:** 不执行(No eXecute),防止执行栈上的数据。
8. **vmx, smx:** 虚拟化技术相关的指令集,用于虚拟化环境。
9. **aes, rdrand:** 用于加密和随机数生成的指令集。
10. **ept, vpid:** 虚拟化相关的指令集,支持扩展页表(EPT)和虚拟处理器标识(VPID)。
  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lscpu是一个在Linux系统中显示有关CPU架构的命令。它可以提供关于CPU型号、核心数、线程数以及其他相关信息。你可以通过在终端中输入lscpu来运行该命令。如果你在Ubuntu系统中遇到“-bash: lscpu: command not found”错误,你可以使用以下命令来安装lscpu:apt-get install util-linux。在CentOS系统中,可以使用yum install util-linux命令进行安装。在Fedora系统中,可以使用dnf install util-linux命令进行安装。如果你使用的是OS X系统,则可以使用brew install util-linux命令进行安装。另外,如果你在Docker容器中运行,可以使用docker run cmd.cat/lscpu lscpu命令来运行lscpu。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [linux之lscpu命令](https://blog.csdn.net/weixin_37335761/article/details/124332363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Linux命令(51)之lscpu](https://blog.csdn.net/z19861216/article/details/131533182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值