因為前幾年聽書《明朝的那些事》,我曾慕名去了兩個地方,一個是杭州于謙故居,另一個就是貴陽的陽明祠。對于看書不多的我來說,從那時起有些崇拜王守仁和他那“知行合一”的哲學理論。
其實技術上有些思路,也是與哲學相通的。
從TurboBoost初期的3ds Max渲染測試說起
當年3ds Max的渲染測試截圖不好找了,我就拿一張SolidWorks最終渲染的螢幕照片做為替代,正好前一段測試了Dell Precision T5810和T3420工作站。手機拍的品質不好大家見諒:)
記得Intel從10來年前的Xeon 5500系列時期引入TurboBoost睿頻技術,這一動作當時似乎沒有将記憶體控制器、以及後來的PCIe控制器整合進CPU那麼受人關注。本質上說是CPU技術發展遇到頻率功耗牆——然後開始推多核——部分軟體的并發線程上不去導緻有的核心空閑。此時CPU功耗距離TDP(熱設計功耗)尚有餘量,不如索性自動“超頻”來提高性能。
談到圖形工作站上的CPU渲染(或者說最終生成),無論3ds Max還是SolidWorks等都會充分把CPU的線程用滿。比如我在上圖中圈出的16個“小窗”,實際上是一顆4核8線程的Intel Xeon E5-1620 v4 CPU,拍照時正好處于前8個小窗渲完,另外新開8個小窗的切換時刻。這裡TurboBoost能發揮作用嗎?
上面引用這份較早的資料,今天還是同樣的道理。處于活動的CPU核心越少,TurboBoost可超頻的幅度就越大,這一點我想許多做技術的朋友都清楚。而當所有核心被程式占滿時,Intel部分CPU還支援小幅的TurboBoost,據說判斷标準是此時TDP是否超标。
具體到實際産品上,當年我測過一款Xeon W5580的工作站,3ds Max渲染時監控CPU主頻,印象中就是以1秒間隔很規律的在3.20GHz和3.33GHz之間切換。這樣當然也比頻率一直固定在3.20GHz原始頻率上效率要高一點,但不是所有應用都适合這麼幹。前兩天還與做資料庫的朋友聊過這個,比如金融行業需要穩定低延時的高頻交易應用,就不希望CPU頻率跳來跳去。
這時大家可能會想起伺服器/工作站BIOS裡有個限制CPU核心數的選項,對于某些要求單核心性能的應用,修改這個應該可以把TurboBoost幅度保持在高水準。另外,理論上每顆CPU的TurboBoost和節電狀态可以根據負載不同來單獨控制,那麼可以給一台伺服器上多個CPU限制不同的核心數嗎?
例如以前有的4核CPU TurboBoost的描述是3/2/2/1,也就是從單核到4核能夠超頻的幅度(100或133MHz的倍數)。那麼如果我們預設目标是雙核的頻率+200MHz,TurboBoost能否設一個上限選項?以確定在隻有一個Core活動時頻率也不會往上跳。
AVX與non-AVX Turbo頻率的差異
引用自《Performance and Energy Efficiency of Dell PowerEdge Servers withE5-2600 v4》
上圖的字有點小,點選放大後可以看清。從這裡我了解到之前沒太注意的一點,目前流行的Xeon E5 v4等Intel CPU在執行AVX指令時頻率會有所降低,估計也是功耗方面考慮吧。這個頻率也分為至少3種——TDP基礎頻率、最大Turbo頻率、全部核心最大Turbo頻率——在AVX和non-AVX狀态下都可能會有不同。
這裡有個問題,雙路或者四路伺服器,當部分CPU上有AVX指令運作是否會影響到餘下CPU的頻率?當時我并沒有想到這一點,而最近才了解到這些早已有人考慮過。
DPAT處理器加速技術:原理上并不複雜
上圖來自我在網上搜到的一個文檔,Dell亞太區伺服器産品經理吳鵬程曾經分享的資料《戴爾13G伺服器性能提升與最佳實踐》,裡面提到了Dell Processor AccelerationTechnology(DPAT)2.0技術。
這裡給出的圖示應該不難了解,我這人寫技術喜歡撈幹貨。正如前面所講的,如果所有CPU核心都開着,你不能保證在幾個線程工作的情況下不會有其它程式偶爾把别的空閑核心也用起來(即使做了綁核),這時TurboBoost頻率就會受到影響。
上圖介紹了DPAT技術實作的幾種場景
DPAT1.0:我了解就是在全部核心工作時穩定TurboBoost的水準;
DPATPro場景1:所有CPU運作Non-AVX代碼,隻限制CPU1的核心數到4 Core3.3G Turbo,CPU 2跑在18 Core最大Turbo頻率2.8G;
DPATPro場景2:跑滿全部核心,但隻有一個CPU運作AVX代碼,此時2顆CPU頻率相差200MHz;
DPATPro場景3:與場景1的差別在于,全部CPU或者隻有CPU2運作AVX代碼,此時CPU2的最大Turbo頻率降為2.6G。
據了解DPAT是個免費的技術,隻需要在做伺服器配置時選擇一個License即可支援。使用中有多種途徑可以打開,最簡單的一個方法是在BIOS中可以看到Number of Cores for Processor 1這樣針對每顆CPU的核心數的限制,還有Processor 1 Controlled Turbo可以獨立調整每顆CPU TurboBoost頻率上限的選項。
同時應確定System Profile設定為Performance mode,或者Custom mode選項并将CPU Power Management設為Maximum Performance mode并打開Turbo Boost mode。
上面是DPAT針對的主要目标應用場景。如果有使用者想詳細了解Intel CPU在使用不同核心數時設計的具體TurboBoost檔位,另外還有Dell針對低延時應用環境的更多最佳實踐,可以找這方面的技術顧問來咨詢。