性能分析基础知识(1):CPU

小编从事分布式文件系统相关的工作。经常需要进行性能测试。性能测试并不是简单的执行几个脚本,还需要掌握一些基础知识,否则,可能导致最终得出的测试结果毫无及价值。小编将从几方面来介绍文件系统测试过程中应该注意的基础知识。

在这里插入图片描述
本文先介绍CPU相关的知识。

CPU架构介绍

多CPU

多个物理CPU,CPU通过总线进行通信,效率比较低,如下:
在这里插入图片描述

多核

多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信,如下:
在这里插入图片描述

多核超线程

每个CPU拥有多个核,每个核资源使用不会冲突,各个核有独立的L1 Cache,共享L2 Cache(最新的CPU还有L3 Cache),加速核与核之间的访问,Cache、存储器、外设通过CPU内部总线进行。如下:
在这里插入图片描述

CPU信息的查看方法

我们通常关心的是逻辑CPU数,使用top命令显示的cpu数就是逻辑cpu:
逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

查看CPU信息(型号)
[root@AAA ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
        Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz

# 查看物理CPU个数
[root@AAA ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
[root@AAA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores    : 6

# 查看逻辑CPU的个数
[root@AAA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
24

从上面的结果可以看出,小编的服务器有2个物理cpu,每个cpu有6核,每核有2个超线程,因此有24个逻辑cpu。

CPU高速缓存

目前的CPU有三级高速缓存,如下:
在这里插入图片描述
CPU高速缓存的作用如下:

  • 更高的缓存命中率
  • 减少BUS通信
  • 不存在Memory的竞争,每个核拥有更大的缓存带宽
  • 更低的数据延迟

智能内存访问

内存消歧

加载数据和存储数据解耦,分析内存读取顺序,智能预测和装载下一条指令所需要的数据,减少内存读取的延迟
在这里插入图片描述

内存预取

预取器负责“预取”内存内容,并将其放入高速缓存中
增加从高速缓存而非内存的装载量将缩短内存延迟并提高性能
在这里插入图片描述
每两个核心8个预取器,每个核心2个数据预取和1个指令预取
L2高速缓存配置2个预取器

CPU的工艺演进

在这里插入图片描述

CPU性能影响分析

在这里插入图片描述

总结

以上知识,除了辅助我们对服务器选型外,还提醒我们,在并发要求高的情况下,后台开发绑定CPU时应注意以下三点:

  • CPU密集型线程不要绑定处于同一个核的两个超线程
  • 同一组线程尽量绑定到同一个物理CPU
  • 根据线程占用CPU分配逻辑CPU,尽量保证均衡并发使用所有逻辑CPU

关注麻辣软硬件,获取更多有料的软硬件知识

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章