php 多核cpu,你以为你的多核CPU都是真的吗?多核“假象”

提到CPU核数,相信绝大部分的同学想到的都是top命令,直接到自己的服务器上看一下是多少个核。看到的核越多,貌似笑的越开心。比如说说我的CPU,用top命令展开以后,看到了有24核。那么事实真是你想象的这么美好吗?# top

top - 17:04:51 up 882 days, 1:16, 1 user, load average: 0.05, 0.05, 0.00

Tasks: 596 total, 1 running, 595 sleeping, 0 stopped, 0 zombie

Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

......

Cpu23 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

那么是否就说明我的机器安装的CPU真的有24核?其实不是的,我们通过top命令看到的CPU核也叫做逻辑核。 说到这里我们先来普及一下基本概念:物理CPU:主板上真正安装的CPU的个数,通过physical id可以查查看

物理核:一个CPU会集成多个物理核心,通过core id可以查看到物理核的序号

逻辑核: intel运用了超线程技术,一个物理核可以被虚拟出来多个逻辑核,processor是逻辑核序号

好了,我们了解完cpu的基本概念后,来找一台机器真正看一下。在linux系统下,通过 cat /proc/cpuinfo可以看到CPU更为详细的信息,在操作系统的视角看来是有24个逻辑核,但是在物理上很有可能多个逻辑核对应的是同一个物理核。如下所示例子:

实际查看你的CPU查看物理CPU#cat /proc/cpuinfo | grep "physical id" | sort | uniq

physical id : 0

physical id : 1

可以看出,该实机有两个物理CPU。查看物理核#cat /proc/cpuinfo| grep "cpu cores"| uniq

cpu cores : 6

cpu cores表示每个cpu有6个物理核心,因为有2个物理CPU,所以该机器总共只有12个物理核。而不是top命令里看到的24个,整整少了一半。 Intel是通过超线程技术把一个物理核虚拟出来了多个,故而操作系统层面看到的比实际的物理核要多。我们寻找一下证据查看逻辑CPU#cat /proc/cpuinfo | grep -E "core id|process|physical id"

processor : 0

physical id : 0

core id : 0

......

processor : 12

physical id : 0

core id : 0

......

processor : 23

physical id : 1

core id : 10

processor就是逻辑核的序号,可以看出该机器总共有24个逻辑核。大家注意看processor 0和processor 12的physical id、core id都是一样的,也就说他们他们也处在同一个物理核上。但是他们的processor编号却不一样,一个是0,一个是12。这就是说,这两个核实际上是一个核,只是通过虚拟技术虚拟出来的而已。

超线程作用

超线程里的2个逻辑核实际上是在一个物理核上运行的,模拟双核心运作,共享该物理核的L1和L2缓存。物理计算能力并没有增加,超线程技术只有在多任务的时候才能提升机器核整体的吞吐量。而且据Intel官方介绍,相比实核,平均性能提升只有20-30%左右。也就是说,在我刚才的机器上看到的24核的处理能力,整体上只比不开超线程的12核性能高30%。让我们再用开发者使用的进程来看,由于你的进程被其它进程分享了L1、L2,这就导致cache miss变多,性能会比不开超线程要差。

所以说,操作系统看到的24核只是一个“假象”。

开发内功修炼之CPU篇专辑:

我的公众号是「开发内功修炼」,在这里我不是单纯介绍技术理论,也不只介绍实践经验。而是把理论与实践结合起来,用实践加深对理论的理解、用理论提高你的技术实践能力。欢迎你来关注我的公众号,也请分享给你的好友~~~本文由博客群发一文多发等运营工具平台 OpenWrite 发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值