性能分析基礎知識(1):CPU

小編從事分佈式文件系統相關的工作。經常需要進行性能測試。性能測試並不是簡單的執行幾個腳本,還需要掌握一些基礎知識,否則,可能導致最終得出的測試結果毫無及價值。

性能分析基礎知識(1):CPU

小編將從如上6個方面來介紹文件系統測試過程中涉及到的基礎知識。知識點包括並不限於上圖。本文先介紹CPU相關的知識。

CPU架構介紹

多CPU

多個物理CPU,CPU通過總線進行通信,效率比較低,如下:

性能分析基礎知識(1):CPU

多個物理CPU

多核

多核CPU,不同的核通過L2 cache進行通信,存儲和外設通過總線與CPU通信,如下:

性能分析基礎知識(1):CPU

多核CPU

多核超線程

每個CPU擁有多個核,每個核資源使用不會衝突,各個核有獨立的L1 Cache,共享L2 Cache,加速核與核之間的訪問,Cache、存儲器、外設通過CPU內部總線進行。如下:(最新的CPU已經是三級緩存的架構,下文中會提及)


性能分析基礎知識(1):CPU

多核超線程CPU

CPU信息的查看方法

我們通常關心的是邏輯CPU數,使用top命令顯示的cpu數就是邏輯cpu:

邏輯CPU數 = 物理CPU個數 * 每顆物理CPU的核數 * 超線程數

 1查看CPU信息(型號)
2[root@AAA ~]# 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[root@AAA ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
7
8# 查看每個物理CPU中core的個數(即核數)
9[root@AAA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
10cpu cores : 6
11
12# 查看邏輯CPU的個數
13[root@AAA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
1424

從上面的結果可以看出,小編的服務器有2個物理cpu,每個cpu有6核,每核有2個超線程,因此有24個邏輯cpu。

CPU高速緩存

目前的CPU有三級高速緩存,如下:

性能分析基礎知識(1):CPU

CPU高速緩存的作用:

  • 更高的緩存命中率
  • 減少BUS通信
  • 不存在Memory的競爭,每個核擁有更大的緩存帶寬
  • 更低的數據延遲

智能內存訪問

內存消歧

加載數據和存儲數據解耦,分析內存讀取順序,智能預測和裝載下一條指令所需要的數據,減少內存讀取的延遲

性能分析基礎知識(1):CPU

如上圖,指令自下而上執行,其中Load4指令需要讀取磁盤,左側沒有內存消歧,指令按順序執行,當執行到Load4時,需要等待加載數據。右側經過內存消歧,提前加載Load4需要的數據,加載數據過程中執行其他指令,減少了內存讀取的延遲。Store1和Load2之間讀寫同一塊內存,需要保證先後順序,因此並未將Load2的數據加載提前進行。

內存預取

預取器負責“預取”內存內容,並將其放入高速緩存中

增加高速緩存的裝載量,從高速緩存而非內存讀取數據將縮短內存延遲並提高性能

性能分析基礎知識(1):CPU

每兩個核心有8個預取器,其中每個核心有2個數據預取器和1個指令預取器,L2高速緩存配置2個預取器

CPU的工藝演進

性能分析基礎知識(1):CPU

CPU的代號、工藝及年代

對於CPU的主頻、高速緩存大小,不同型號的芯片之間各不相同,在此不再贅述。

CPU性能影響分析

性能分析基礎知識(1):CPU

CPU性能主次排序

總結

以上知識,除了輔助我們對服務器選型外,還提醒我們,在併發要求高的情況下,後臺開發綁定CPU時應注意以下三點:

  • CPU密集型線程不要綁定在處於同一個核的兩個超線程上
  • 同一組線程儘量綁定到同一個物理CPU
  • 根據線程佔用CPU分配邏輯CPU,儘量保證均衡併發使用所有邏輯CPU

歡迎關注我們的同名微信公眾號“麻辣軟硬件”,與我們一起交流技術話題!

相關推薦

推薦中...