[转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发

cpu,进程,多线程,并行,并发 · 浏览次数 : 0

小编点评

**区分 多CPU && 多核CPU** * 多CPU是指多个物理CPU共享相同的内存。 * 多核CPU是指多个逻辑CPU共享相同的内存。 **CPU缓存** * CPU缓存是位于CPU与内存之间的临时数据交换器。 * 速度比内存快很多。 **并行 && 并发** * 并行:多个进程可以同时运行,每个进程可以处理多个线程。 * 并发:多个进程可以并发运行,每个进程只能处理一个线程。 **进程与线程** * 进程是操作系统调度和分配的基本单位。 * 线程是进程中的一个轻量级线程。 **多核心技术** * 将多个相同的CPU放置于一个封装内,并共享内存。 * 每个核可以模拟成两个线程。 **并行多进程** * 可以通过创建多个进程来实现并发执行。 * 进程之间可以通过共享内存进行通信。 **其他** * CPU的信息主要都在/proc/cupinfo中。 * ps命令可以用来查看进程、线程、进程的属性等信息。

正文

https://cloud.tencent.com/developer/article/1886157?areaSource=&traceId=

 

文章目录

希望开此篇能帮到你。

区分 多CPU && 多核CPU

最早意识到这两个概念可能不一样是在什么时候呢,不是在买电脑的时候哈,是在安装虚拟机的时候。

安装虚拟机的时候,有一步是要我们选择虚拟机的CPU数量和核数的,我当时其实就有点懵,这俩有区别吗?2CPU各2核和1CPU4核有什么不一样吗?这还要选啊?

但是很快就打消了这个疑虑,没有太在意了。现在想想,错过了认知的机会啊。 一个CPU呢,可以由很多的核,但是,它依旧是一个CPU,不会因为它开了8个核就变成了八个CPU。

这里的CPU,是物理CPU,后面就以物理CPU来命名。此外,还有逻辑CPU,逻辑CPU数怎么算呢? 物理CPU数 * 每个CPU核数,如果支持超线程的话,再乘个2。

这些概念先记一下,后面要用。

多个物理CPU,CPU通过总线进行通信,效率比较低。

多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信。


CPU缓存

CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上。

随着多核CPU的发展,CPU缓存通常分成了三个级别:L1,L2,L3。级别越小越接近CPU,所以速度也更快,同时也代表着容量越小。L1 是最接近CPU的, 它容量最小,速度最快,每个核上都有一个 L1 缓存,L1 缓存每个核上其实有两个 L1 缓存, 一个用于存数据的 L1d Cache,一个用于存指令的 L1i Cache。L2 缓存 更大一些,速度要慢一些, 一般情况下每个核上都有一个独立的L2 缓存; L3 缓存是三级缓存中最大的一级,同时也是最慢的一级, 在同一个CPU插槽之间的核共享一个 L3 缓存。

读取数据过程。就像数据库缓存一样,首先在最快的缓存中找数据,如果缓存没有命中则往下一级找, 直到三级缓存都找不到时,向内存要数据。一次次地未命中,代表取数据消耗的时间越长。

计算过程。程序以及数据被加载到主内存;指令和数据被加载到CPU的高速缓;CPU执行指令,把结果写到高速缓存;高速缓存中的数据写回主内存。


并行 && 并发

并行,你按下时间静止,你会看到有好多个 进程/线程 都活着。 并发,你按下时间静止,你会看到只有一个 进程/线程 活着,其他都在排队。


多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发 之间的关系

1、进程的运行不仅仅需要CPU,还需要很多其他资源,如内存啊,显卡啊,GPS啊,磁盘啊等等,统称为程序的执行环境,也就是程序上下文。

2、线程是CPU调度和分配的基本单位,一定要和 进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 区别清楚。有句话说CPU只能看到线程,可以这么理解,假设我是CPU,我闭着眼,操作系统调度器将一个进程分配给我之后,我拿到进程睁开眼,我看到的是什么?我看到的是进程中的很多线程,那么我现在能调度和分配的是什么?进程?不行,因为我看不到其他进程,何来调度分配,只能调度我看到的那些线程,如果我是4核的话,把线程ABCD分配到核心1234,其他的线程依然要等待分配,至于等待多久,如何分配,暂不在本文讨论范围。

3、多核心技术是将多个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术(超线程技术)是在CPU内部仅复制必要的资源、让一个核模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。

4、一个进程最多在一个物理CPU上运行(能拿到资源不错了),如果这个CPU的空闲的核大于等于进程的线程数,就安排了,如果不够,那就先安排一部分线程,其余的等着。


多核CPU,可以并行执行多进程、多线程。多线程应该不用我解释了,多进程参考nginx架构。 多个CPU,可以并行执行多进程,自然可以并行多线程。怎么并行多进程呢?要么咱多手动多开几个进程,要么fork出子进程。


Linux下查看CPU相关信息

CPU的信息主要都在/proc/cupinfo中:

# 查看物理CPU个数
cat /proc/cpuinfo|grep "physical id"|sort -u|wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo|grep "cpu cores"|uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo|grep "processor"|wc -l

# 查看CPU的名称型号
cat /proc/cpuinfo|grep "name"|cut -f2 -d:|uniq

Linux查看某个进程运行在哪个逻辑CPU上

ps -eo pid,args,psr
#参数的含义:
pid  - 进程ID
args - 该进程执行时传入的命令行参数
psr  - 分配给进程的逻辑CPU

例子:
[~]# ps -eo pid,args,psr | grep nginx
9073 nginx: master process /usr/   1
9074 nginx: worker process         0
9075 nginx: worker process         1
9076 nginx: worker process         2
9077 nginx: worker process         3
13857 grep nginx                   3

与[转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发相似的内容:

[转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发

https://cloud.tencent.com/developer/article/1886157?areaSource=&traceId= 文章目录 区分 多CPU && 多核CPU CPU缓存 并行 && 并发 多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发 之间

[转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发

https://cloud.tencent.com/developer/article/1886157?areaSource=&traceId= 文章目录 区分 多CPU && 多核CPU CPU缓存 并行 && 并发 多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发 之间

[转帖]CPU结构对Redis性能的影响

https://wangkai.blog.csdn.net/article/details/111571446 文章目录 CPU架构多核架构多CPU架构CPU架构的影响 CPU多核对Redis的影响需求条件结果原因优化 CPU 的 NUMA 架构对 Redis 性能的影响Redis 实例和网络中断程

[转帖]MESI协议:如何让多核CPU的高速缓存保持一致

你平时用的电脑,应该都是多核的 CPU。多核 CPU 有很多好处,其中最重要的一个就是,它使得我们在不能提升 CPU 的主频之后,找到了另一种提升 CPU 吞吐率的办法。 不知道上一讲的内容你还记得多少?上一节,我们讲到,多核 CPU 里的每一个 CPU 核,都有独立的属于自己的 L1 Cache

[转帖]CPU结构对Redis性能的影响

文章系转载,便于分类和归纳,源文地址:https://wangkai.blog.csdn.net/article/details/111571446 CPU的多核架构和多CPU架构都会影响到Redis的性能 CPU架构 多核架构 一个CPU处理器一般有多个运行核心,如何在Linux查看物理CPU个数

[转帖]CPU结构对Redis性能的影响

文章系转载,便于分类和归纳,源文地址:https://wangkai.blog.csdn.net/article/details/111571446 CPU的多核架构和多CPU架构都会影响到Redis的性能 CPU架构 多核架构 一个CPU处理器一般有多个运行核心,如何在Linux查看物理CPU个数

[转帖]openeuler22.03实时系统安装及部署

openEuler预言 openEuler特性 融进了中科院软件所贡献的 RISC-V 新指令集架构支持内核的多核扩展性能力大大增强,提升了 CPU 多核的并行度,性能提升 20%采用轻量级虚拟化引擎 StratoVirt,一套架构支持虚机、安全容器、Serverless 三种场景,单虚机启动时间小

[转帖]CPU架构对redis的性能影响

目录 主流CPU架构 CPU多核对redis性能的影响 NUMA架构对redis性能的影响 绑核的风险和解决方案 绑核的风险 解决方案 作者:@dwtfukgv本文为作者原创,转载请注明出处:https://www.cnblogs.com/dwtfukgv/p/15203960.html CPU架构

[转帖]CPU架构对redis的性能影响

https://www.cnblogs.com/dwtfukgv/p/15203960.html 目录 主流CPU架构 CPU多核对redis性能的影响 NUMA架构对redis性能的影响 绑核的风险和解决方案 绑核的风险 解决方案 作者:@dwtfukgv本文为作者原创,转载请注明出处:https

[转帖]Perf IPC以及CPU性能

https://plantegg.github.io/2021/05/16/Perf_IPC%E4%BB%A5%E5%8F%8ACPU%E5%88%A9%E7%94%A8%E7%8E%87/ 为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA、睿频、功耗、GPU、大小核再到分支