效能分析基础知识(1):CPU
小编从事分散式档案系统相关的工作。经常需要进行效能测试。效能测试并不是简单的执行几个指令码,还需要掌握一些基础知识,否则,可能导致最终得出的测试结果毫无及价值。

小编将从如上6个方面来介绍档案系统测试过程中涉及到的基础知识。知识点包括并不限于上图。本文先介绍CPU相关的知识。
CPU架构介绍
多CPU多个物理CPU,CPU通过总线进行通讯,效率比较低,如下:
多个物理CPU
多核
多核CPU,不同的核通过L2 cache进行通讯,储存和外设通过总线与CPU通讯,如下:
多核CPU
多核超执行绪
每个CPU拥有多个核,每个核资源使用不会冲突,各个核有独立的L1 Cache,共享L2 Cache,加速核与核之间的访问,Cache、储存器、外设通过CPU内部总线进行。如下:(最新的CPU已经是三级快取的架构,下文中会提及)
多核超执行绪CPU
CPU资讯的检视方法
我们通常关心的是逻辑CPU数,使用top命令显示的cpu数就是逻辑cpu:
逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超执行绪数
1检视CPU资讯(型号)
2[[email protected] ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
3 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
4
5# 检视物理CPU个数
6[[email protected] ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
7
8# 检视每个物理CPU中core的个数(即核数)
9[[email protected] ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
10cpu cores : 6
11
12# 检视逻辑CPU的个数
13[[email protected] ~]# cat /proc/cpuinfo| grep "processor"| wc -l
1424
从上面的结果可以看出,小编的服务器有2个物理cpu,每个cpu有6核,每核有2个超执行绪,因此有24个逻辑cpu。
CPU快取内存
目前的CPU有三级快取内存,如下:
CPU快取内存的作用:
更高的快取命中率减少BUS通讯不存在Memory的竞争,每个核拥有更大的快取带宽更低的资料延迟
智慧内存访问
内存消歧载入资料和储存资料解耦,分析内存读取顺序,智慧预测和装载下一条指令所需要的资料,减少内存读取的延迟

如上图,指令自下而上执行,其中Load4指令需要读取磁盘,左侧没有内存消歧,指令按顺序执行,当执行到Load4时,需要等待载入资料。右侧经过内存消歧,提前载入Load4需要的资料,载入资料过程中执行其他指令,减少了内存读取的延迟。Store1和Load2之间读写同一块内存,需要保证先后顺序,因此并未将Load2的资料载入提前进行。
内存预取
预取器负责“预取”内存内容,并将其放入快取内存中
增加快取内存的装载量,从快取内存而非内存读取资料将缩短内存延迟并提高效能

每两个核心有8个预取器,其中每个核心有2个数据预取器和1个指令预取器,L2快取内存配置2个预取器
CPU的工艺演进

CPU的代号、工艺及年代
对于CPU的主频、快取内存大小,不同型号的芯片之间各不相同,在此不再赘述。
CPU效能影响分析

CPU效能主次排序
总结
以上知识,除了辅助我们对服务器选型外,还提醒我们,在并发要求高的情况下,后台开发系结CPU时应注意以下三点:CPU密集型执行绪不要系结在处于同一个核的两个超执行绪上同一组执行绪尽量系结到同一个物理CPU根据执行绪占用CPU分配逻辑CPU,尽量保证均衡并发使用所有逻辑CPU欢迎关注我们的同名微信公众号“麻辣软硬件”,与我们一起交流技术话题!