性能分析基礎知識(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

關注麻辣軟硬件,獲取更多有料的軟硬件知識

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