一項Xeon E5-2600 v4測試數據的背后
Intel新一代服務器處理器Xeon E5-2637 v4標稱的內存帶寬76.8GB/s,達到了該系列的最高水平,不過在實測中它與有的同門兄弟相比卻有一些差距。類似的情況也出現在E5-2623 v4幾款上面,這是為什么呢?
從Pentium III Xeon 933 PK Pentium III 933說起
在準備撰寫本文的過程中,我想起10多年前的一個故事,也是與Intel Xeon(至強)CPU相關的
Pentium III Xeon 733-933,Slot-2、133MHz前端總線、256KB全速L2 Cache
搞服務器比較早的朋友可能還記得,Intel第一代服務器專用處理器是Pentium Pro,當年我見過單Socket 8插槽的Pentium Pro主板(華碩P6NP5)。當桌面產品線升級到Pentium II和Pentium III時,開始出現相對應采用Slot 2插槽的Xeon產品線。Pentium II Xeon和早期的Pentium III Xeon L2 Cache容量有1-2MB,當時CPU的工藝還難以將如此大容量SRAM和CPU內核集成到一個Die上面。
從133MHz前端總線的Pentium III Xeon開始,Intel直接將on-die 256KB二級緩存的Pentium III設計拿過來用。不過當時的用戶也不傻,比如Pentium III Xeon 700 2MB的價格高達1萬多,而Pentium III Xeon 866/933 256KB大約在5-6千元。
相比之下,同樣256KB 緩存的Pentium III 933只有2千多。那時候我還真碰上一位用戶就要選擇Xeon 933,理由是他了解到性能比普通Pentium III高出5%。
從那往后到Pentium 4與Intel Xeon的一段時間內,除了單雙路和CPU封裝/主板不同之外,服務器與桌面CPU規格上差別確實不大。一對一的性能差距,有時就是Intel將L2 Cache時序設置不同這樣的原因。
內存帶寬測試及實際應用價值
硬件設計上的不同,會反映在有些性能測試中。CPU Cache會影響到處理器訪問內存的效率,包括緩存命中率等。在本文中我們討論內存帶寬測試,目的就是分析影響到該性能的CPU參數,由于今天的CPU比當初要復雜很多,所以得出結論不會那么簡單。
引用自《Performance and Energy Efficiency of Dell PowerEdge Servers with E5-2600 v4》
在4月1日那天,Intel正式發布了新一代雙路服務器處理器Intel Xeon E5-2600 v4,隨之而來的有更先進的工藝、更多的核心、更高的處理能力和能效比等。當然若干項基準測試紀錄又一次被刷新了。
各種漂亮的數據我不想一一列舉,上圖來自一份戴爾文檔的“Memory subsystem performance”部分,可以看到在相同的PowerEdge 13G服務器平臺上v4處理器測出的內存帶寬比v3更高。這一點倒是不意外,因為Xeon E5-2600 v4內存支持到DDR4 2400,而v3只能到DDR4 2133。
而我也聽不少用戶反映過,說他們的應用對內存帶寬不敏感,只要配置的容量夠了就行。這個確實與應用類型有關,哪些用戶需要更多在意這個指標呢?
上圖的Linpack浮點計算性能測試,是HPC(高性能計算)行業所公認的。我們看到,在相同主頻、核心數、內存頻率以及功耗的情況下,BDW(Broadwell,Xeon E5-2667 v4)的核心效率比上一代Xeon E5-2667 v3提高了13%。
而在將Xeon E5v4的內存頻率提高到DDR4 2400之后,性能又有進一步提高。初步結論就是高內存帶寬對高性能計算應用是有價值的。
性能不完全符合理論值,原因何在?
2016年2月SPA lab使用Dell PowerEdge R730服務器測試
真正引發我們撰寫本文的,是上面這個對比圖表。首先我標出了一個小錯誤,E5-2630 v4是10核心而不是8核,它與大部分型號的L3 Cache配置都是2.5MB per Core。而在這一代產品中也有一個例外,E5-2667 v4、E5-2643 v4和E5-2637 v4這三款頻率優化型CPU的L3 Cache大于這個比例。
我最初看到這個對比時有些不解之處:測試結果并不完全按照理論內存帶寬排列,而是有些意外之處(紅圈部分)。同時我們也注意到圖中還有關于內存控制器數量的描述,從最左邊的E5-2699 v4到E5-2650(L) v4這些12核及以上的CPU都是2個內存控制器,右邊的10核及以下的只有1個內存控制器。
上圖截自http://ark.intel.com網站,正如我們在本文開頭所述,單內存控制器(同樣支持4通道DDR4 2400)的E5-2667 v4、E5-2643 v4和E5-2637 v4,標稱內存帶寬與雙內存控制器的型號同為76.8GB/s。
接下來我們就想探究影響這一測試結果的原因,先列出幾種可能性(多選):
a.內存頻率
b.內存控制器數量?
c.QPI帶寬?
d.L3 Cache容量?
e.環形總線(Ring bus)瓶頸?
f.CPU核心數量 or 主頻?
首先第1點不用問了,第2點根據對比數字和戴爾文檔中的標識也可以基本確認;接下來就是看下列幾個疑點與c/d/e/f中的哪些項目相關:
1.E5-2637 v4(4核心)測試內存帶寬落后于另外2款DDR4 2400單內存控制器的CPU;
2.E5-2623 v4(4核心)測試內存帶寬落后于另外3款DDR4 2133單內存控制器的CPU;
3.E5-2603 v4(6核心)測試內存帶寬落后于同為DDR4 1866單內存控制器的E5-2609 v4。
注:Xeon E5-2623 v4官網標稱的內存帶寬,與其它DDR4 2133單內存控制器的CPU同為68.3GB/s。
STREAM測試工具、OSB+DIR snoop新特性
由于要分析性能瓶頸,我們就需要對測試工具及其產生的壓力負載進行了解。為此我請教了一位朋友——戴爾解決方案顧問楊小雷,下面是他發的一條微博。
通過與這位朋友的交流我還得知:STREAM工具測出來的帶寬要在BIOS里設置本地訪問的模式,就是它下面標的OSB+DIR snoop。所以理論上的內存帶寬是每個CPU理論最大帶寬的2倍。這是Broadwell的默認模式,Xeon E5-2600 v4的新特性,以前沒有的。
這樣一來QPI帶寬的因素也可以排除了。關于“snoop”,讓我回想起2008年撰寫過的Intel Xeon 5400服務器/工作站平臺:
“Snoop Filter(探聽過濾器)是一種特殊的緩存,用于存儲CPU二級緩存的索引信息(只是包括其標簽和狀態,不包括數據),有助于減少處理器的前端總線發生數據堵塞的情況,提高前端總線的效率。Snoop Filter的容量要大于或等于每個CPU二級緩存容量之和才能發揮最佳的作用,5400系列處理器的二級緩存從5300系列的8MB增加到12MB,相應的5400芯片組中Snoop Filter也由5000X的16MB增加到24MB。”
如今發生了一些變化,CPU整合了內存控制器(IMC),多處理器Xeon平臺也從SMP變成了NUMA架構。如果我沒理解錯的話,類似于Snoop Filter的功能現放在CPU上實現,而L3 Cache的部分功能就是包含每個Core的L1 Cache和L2 Cache數據,以保證緩存的全局一致性訪問。
上表引用自《Measuring Performance of Intel Broadwell Processors with High Performance Computing Benchmarks》
Xeon E5v4架構:L3 Cache容量影響內存帶寬發揮
這結論看似順理成章,但并不是每一次拍腦袋都能正確,所以我們才要建立在實測數據分析的基礎上。另外,還有沒有讀者不了解為什么Xeon E5會有單/雙兩種不同的內存控制器數量?
上圖(點擊放大)來自國外網站,其中紅框標出的部分與最終發布的產品規格有少量出入
Broadwell EP即Xeon E5-2600 v4的代號,其實從v2開始Intel超過10核心就采用2個(對)環形總線和雙內存控制器(總數還是4通道)的設計。
與上圖有所出入的是,最右邊的單內存控制器(LCC)也包括10核心的Xeon E5-2640 v4和Xeon E5-2630L v4。前文中我們確認了將內存控制器連接到環形總線的Home Agent在DDR4 2400這樣高頻率下可能成為瓶頸。
接下來就靠數字分析了,在這里省略掉我思考的過程。根據前面列出的Xeon E5-2600 v4全線內存帶寬對比,4核10MB L3 Cache的2623 v4表現最低;另外2款較低的E5-2637 v4(4核心)E5-2603 v4(6核心)都是15MB L3 Cache;而在L3 Cache達到20MB之后,STREAM測試的數值基本上就是內存頻率的反映了。
Intel有意為頻率優化型CPU補短?
Intel Xeon E5-2600 v4系列中的幾款頻率優化型CPU,由于減少了核心數量,相應的內存控制器數量和L3 Cache也受到影響,盡管它們仍支持較高的內存頻率,但實際帶寬性能表現受到一定影響。大多數HPC應用講究計算的并行度和能耗比,估計不會選擇這幾款;而在意單線程性能的應用(如:工作站),對內存帶寬不見得敏感。
而另一方面,Intel將E5-2667 v4、E5-2643 v4和E5-2637 v4這三款CPU的L3 Cache加大,客觀上減少了實際內存帶寬下降的幅度。
最終把問題搞清楚,又客串了一把工程師的小編我也該補補腦了:)而真正的專家是在文中提到的那位朋友,同時也要感謝下我的另一位朋友喬峰。