CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

这篇具有很好参考价值的文章主要介绍了CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 写此篇博客的原因

  • 学习多线程的时候,需要了解CPU和线程的相关概念,但是网上给出的概念让我实际操作时产生了混淆。
  • 本文与其他文章不一样的点在于,解释为什么逻辑CPU数不是核数的2倍(比较新的处理器会有这种情况),能够解答非计算机专业人士的问题。

CPU信息的查询方法参见本文第二部分

画重点:

大核支持超线程,小核不支持超线程,同时含有大小核的处理器不能简单地用核数乘2得到逻辑CPU的个数!!!

分析过程见 1.2 和 1.3

1. 物理CPU,核,逻辑CPU概念

CPU的核心数和线程数取决于具体的品牌,模型和代数(generation)。
对于AMD芯片和Intel芯片,这两个数字都在持续增加,通常新的CPU要比老的CPU有更多的物理内核数。

CPU的概念比较容易混淆,也可以称宏观肉眼可见的CPU为处理器Processor

  • Processor
    • 安装在主板插口(Socket)上的物理芯片,通常也称之为CPU
  • CPU内核(Core)
    • 是一个物理元件(也即可见可触及的实体),位于处理器(Processor)内部,用于处理繁杂的计算任务。单块CPU上能进行计算的芯片组的数量,如双核,四核等。
  • CPU线程(Thread)
    • 是一个虚拟元件(也即逻辑层面的,只有操作系统可见),又称为逻辑内核(逻辑处理器)(逻辑CPU),代表了你的CPU内核能够支持的线程数量,帮助CPU更高效地处理任务。如果该核支持超线程技术,那1颗内核可以当成2颗内核来发挥作用。每个线程都作为独立的CPU实例运行。

1.1 内核工作方式

下图给出了内核的工作方式:
逻辑处理器,Ubuntu,linux

1.2 超线程

我们都知道处理器(Processor)是整个系统的大脑,核数越多,线程数越多,CPU性能就越好,因为可以更快地且同时地组织和处理多项任务。
超线程(Hyper-threading)是英特尔(Intel)提出的技术,用于“欺骗”操作系统,使其认为有额外的内核。
因此,如果你的处理器是四核且支持超线程,那么你的操作系统会认为有:1个CPU,4个物理核心,8个逻辑核心。
如果不支持超线程,那么就是:1个CPU,4个物理核心,4个逻辑核心。详见下图:
逻辑处理器,Ubuntu,linux

注意不是所有的CPU都是每个内核两个线程,有的CPU中存在P核和E核,这意味着部分内核支持超线程,而另一部分不支持。

因此!!!

下面公式是不严谨的,没有办法解释大小核的情况,关于大小核我会在后面的章节介绍:

总核数 = 物理CPU个数 × 每颗物理CPU的核数。
总逻辑CPU数 = 物理CPU个数 ×每颗物理CPU的核数 × 超线程数

1.3 什么是大小核

尽管此前的 Intel 桌面CPU都打着多核的旗号,但它们在很多方面是相似的。
然而,随着12th Generation Intel Alder Lake CPUs的提出,处理器有了新的特点,那就是同时拥有两种内核:性能核(Performance Cores) + 效率核(Efficient Cores),简称为P核和E核,也就是中文网站所说的大(P)小(E)核

Alder Lake CPU的问世,意味着我们得习惯用新的方法或者说指标来区分处理器。以前的12核处理器指的是就是它有12个核,而对于12th Gen Intel CPU,这12个核可能会有(8+4)或者 8P+4E或者8C4c(C, big core, c, small core)这样的注释。
P核提供超线程,因此每个P核会有2个thread,E核只支持单线程。

而我的电脑配置是:1个物理CPU,12个核心(8 + 4),20个逻辑CPU
也即

总核数= 物理CPU个数 x ( 每颗物理CPU的P核数 + 每颗物理CPU的E核数)
12 = 1 x (8 + 4)
总逻辑CPU数 = 物理CPU个数 x ( 每颗物理CPU的P核数 x 2 + 每颗物理CPU的E核数 x 1)
20 = 1 x (8 x 2 + 4 x 1)

2. CPU信息的查询方法

2.1 Windows下查询CPU信息的方法

在Windows下,打开任务管理器,选中性能(Performance)—> 选中CPU,就可以看见CPU信息,下图所示的CPU是 Intel Core i7-4790,有4个物理核心,和8个逻辑处理器,说明该CPU支持英特尔的超线程技术。
逻辑处理器,Ubuntu,linux

2.2 Linux下查询CPU信息的方法

方法一:lscpu 整体查看

命令:

lscpu

我的结果如下图,1个物理CPU,12个核心,20个逻辑CPU
逻辑处理器,Ubuntu,linux

方法二:分别查看

参考:【cpu概念】物理cpu个数、核数、逻辑cpu数的概念

查看物理CPU的个数:

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

查看CPU是几核:

cat /proc/cpuinfo |grep "cores"|uniq

查看逻辑CPU的个数:

cat /proc/cpuinfo |grep "processor"|wc -l

3. 参考

参考链接:
How Many CPU Cores & Threads Do You have? [How To Check]
P-Cores vs E-Cores & Intel’s New CPUs文章来源地址https://www.toymoban.com/news/detail-535435.html

到了这里,关于CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 如何使用adb command来设置cpu频率和核数

    透過ADB Shell設定CPU開核與freq的command與用法如下: # Disable PPM echo 0 /proc/ppm/enabled # Enable PPM (Default) echo 1 /proc/ppm/enabled echo 0 /proc/ppm/enabled Fixed # Core for each cluster echo X Y /proc/ppm/policy/ut_fix_core_num Where, X = -1, 0 ~ 4. Core# for cluster 0 Y = -1, 0 ~ 4. Core# fot cluster 1 echo 4 4 /proc/ppm/policy/ut_fix_co

    2024年02月09日
    浏览(7)
  • 【Flink精讲】Flink性能调优:CPU核数与并行度

    【Flink精讲】Flink性能调优:CPU核数与并行度

    提交任务命令: bin/flink run -t yarn-per-job -d -p 5 指定并行度 -Dyarn.application.queue=test 指定 yarn 队列 -Djobmanager.memory.process.size=2048mb JM2~4G 足够 -Dtaskmanager.memory.process.size=4096mb 单个 TM2~8G 足够 -Dtaskmanager.numberOfTaskSlots=2 与容器核数 1core: 1slot 或 2core: 1slot -c com.atguigu.flin

    2024年04月11日
    浏览(7)
  • Windows系统快速查看电脑CPU核数及wmic命令介绍

    Windows系统快速查看电脑CPU核数及wmic命令介绍

    1.打开cmd,然后输入:wmic         wimc是Windows management instrumentation的缩写,Window管理工具,提供从命令行接口和批处理脚本 执行系统管理 的支持。wmic可以通过命令行操作, 获取系统信息、安装软件、启动服务、管理进程等操作 2.进入wmic命令模式后,输入:cpu get *,获取

    2024年02月06日
    浏览(10)
  • 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】

    getrusage 是一个用于获取系统资源使用情况的函数,它在 Unix 和类 Unix 系统中可用。要使用它,你需要包含 sys/resource.h 头文件。下面是一个简单的 C++ 示例程序,用于获取进程的资源使用情况: 使用 RUSAGE_SELF 常量,表示获取当前进程的资源使用情况。你可以根据需要使用其他

    2023年04月23日
    浏览(11)
  • CPU的制造和概念

    CPU的制造和概念

    为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA、睿频、功耗、GPU、大小核再到分支预测、cache_line失效、加锁代价、IPC等各种指标(都有对应的代码和测试数据)都会在这系列文章中得到答案。当然一定会有程序员最关心的分支预测案例、Disruptor无锁

    2024年02月09日
    浏览(6)
  • cpu load与cpu使用率与线程的5种状态

    cpu load值是正在运行和就绪等待状态线程数之和。 load越大,说明线程竞争时间片越激烈,线程等待队列越长。 对于8核系统,如果load为10,说明8个线程正在执行,2个线程等待时间片。 cpu利用率 load越大,cpu使用率越高吗? 不一定,如果线程是执行IO这种,线程拿到时间片后

    2024年02月01日
    浏览(10)
  • CPU之IPC相关

    CPU之IPC相关

    IPC=InstructionUnhaltedCyclethread Instruction,即某个固定时间段内系统完成的指令数,考虑到系统中任何形式的应用都是由指令完成,且在不修改应用(代码逻辑)的前提下完成固定的任务所需的指令数是相同的。所以这里的指令数就是一个与系统性能直接挂钩的指标。 UnhaltedCycle,

    2024年02月16日
    浏览(4)
  • Systrace系列12 —— CPU Info 解读

    Systrace系列12 —— CPU Info 解读

    本文主要是对 Systrace 中的 CPU 信息区域(Kernel)进行简单介绍,简单介绍了如何在 Systrace 中查看 Kernel 模块输出的 CPU 相关的信息,了解 CPU 频率、调度、锁频、锁核相关的信息。 下面是高通骁龙 845 手机 Systrace 对应的 Kernel 中的 CPU Info 区域(底下的一些这里不讲,主要是讲 K

    2024年02月06日
    浏览(11)
  • 如何让进程或线程独占CPU核

    核孤立和绑定是一种有效的性能优化手段,能够有效降低关键线程或进程时延,提升运行稳定性。本文前两节描述如何尽量将其他用户或内核线程隔离在指定核心之外,第三节介绍如何将时延敏感进程绑定到指定隔离好的孤立核心上。 1.1 使用tuned实现核孤立 redhat官方推荐使

    2024年02月01日
    浏览(8)
  • 单核cpu是怎么处理多线程的

    单核cpu是怎么处理多线程的

    首先,要先了解几个概念: 1、线程是CPU调度和分配的基本单位。 2、进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 。 3、一个进程可以包括多个线程。 4、CPU的时间片是由计算机的操作系统OS里的调度器分配的.   当多个线程需要执行时,OS里的调度器

    2024年02月11日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包