小編從事分佈式文件系統相關的工作。經常需要進行性能測試。性能測試並不是簡單的執行幾個腳本,還需要掌握一些基礎知識,否則,可能導致最終得出的測試結果毫無及價值。小編將從幾方面來介紹文件系統測試過程中應該注意的基礎知識。
本文先介紹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
關注麻辣軟硬件,獲取更多有料的軟硬件知識