天天看點

别小看雲計算隐性成本 找個貼心”伴侶”很重要

本文是針對在基于主機的網絡應用程式中采用通用cpu的相關優勢及陷阱進行深入挖掘分析,并就目前被用于基于主機的網絡以提供更好成本效益的不同伺服器網絡硬體技術進行探讨的系列文章的第三部分。在本系列文章的第一部分中,我們主要讨論了基于主機的網絡和當使用通用cpu以部署資料路徑時所潛在的問題。同時,我們還探讨了智能伺服器擴充卡對于硬體加速和伺服器解除安裝的重要性。而在本系列文章的第二部分中,我們探讨了目前被用于這類智能伺服器擴充卡的三大基本技術,并就為基于主機的網絡應用程式提供最佳成本效益的解決方案提供了相應的指導和建議。在最後一部分文章中,我們将與大家共同探讨促成智能伺服器擴充卡在未來幾年成為資料中心主流技術的幾大關鍵要素。

在最近幾年中,許多資料平面處理的執行個體都已經得到了長足的發展,無論是在開源社群還是在資料中心營運商内部的商業部署。例如,開放虛拟交換機( open virtual switch ,ovs [ 1 ])的使用者空間和核心元件已經發展演化到引入了更先進和更具可擴充的隧道和資料流處理能力。ovs的核心子產品處理隧道與交換。該核心還針對不重疊或精确比對的資料流實作了一個快速緩存機制。最近,支援隧道的諸如vxlan [ 2 ]和通配符比對規則也已經被添加到資料路徑。在諸如微軟azure這樣的商業部署中,虛拟交換機支援網絡虛拟化的租戶,以及複雜的比對操作功能,如負載平衡和安全性。在谷歌andromeda網絡,資料包處理節點為防火牆、安全、速率限制、路由等提供比對資料流和資料平面處理等功能。

在主機或伺服器領域,基于主機的網絡資料平面處理已經獲得了演變,部署在通用cpu如x86指令架構的軟體中。然而,不同于在這樣的通用cpu執行傳統的處理任務,資料平面處理,及更特别的隧道的封裝和解封以及基于流的比對處理是獨特的。當他們在通用的cpu上執行時,這種獨特性會帶來顯著的不足。替代方案已被提出,如在多核soc或fpga運作資料平面,但如本系列文章的前幾部分所提到的那樣,這些方法隻能提供邊際收益。

有效且規模化的實施資料平面處理需要處理核心和産品的架構元素是由特殊成分專門打造的。接下來,我們将着重讨論成功的七大重要因素。

關鍵因素1:處理器的多線程

流處理需要通路記憶體,諸如基于ram的ddr3-或ddr4-。為了協助在cpu核心的處理,基于硬體的加速器處理重複或專門的功能,例如加密和散列。單線程處理,通過通用cpu(如标準的x86,mips和arm核心)、記憶體和加速器存取延遲浪費cpu周期。例如,通路ddr3記憶體需要幾百個cpu周期,而通路硬體加速器可能需要更長的的周期,使cpu核心閑置無用,在這一延長期間有效性無用。對于典型的基于主機的資料平面處理任務,這個問題往往會降低cpu的有效使用率約10-20%。軟體定制編碼技術可以填補延遲差距,但這些變化是費時且相當麻煩的,并且其減少了軟體的可移植性。

解決該問題的一個理想的辦法是實作高度多線程的處理核心。當處理核心多線程(例如,每個核心八線程),處理器流水線可以始終執行有用的指導,而不會停滞或閑置。其結果是,較之單線程機器的存儲器或硬體加速器的通路要求顯著,而在典型的基于主機聯網和新興nfv應用程式的資料平面處理的情況下,多線程處理增益可以高達800%。

關鍵因素2:許多處理器核心優于一些更快的核心

通用cpu通常是針對最高處理器時脈速度以功率和面積為代價實施了優化的。例如,超過15個階段的大型複雜管道,亂序執行和分支預測能力在這樣的cpu中是常見的。如前面所解釋的,由于缺乏多線程,以減少記憶體延遲的影響,也同樣需要大的高速緩存。當這樣的通用的cpu核心被打包成一個單一的矽晶片,如在mips-或基于arm的多核soc,有效性能增益比包裝在相同的矽晶片的大量較小的處理核更低。換言之,在矽晶片使用更加優化的多線程處理核心要比使用較少的具備很少或沒有線程和大型高速緩存的高性能通用cpu核心的資料平面處理更好。使用大型處理器核心會有顯著的開銷,其價格和功耗在服務區擴充卡設計中已經被設定,作為通用伺服器用于計算節點顯示。

關鍵因素3:記憶體和加速器的多線程

在資料密集的流處理,對于記憶體和硬體加速器的有效通路是相當關鍵的,但該挑戰僅僅隻是加劇了大量的流量和複雜的處理(如用于比對和複雜操作的元組數目)。鑒于越來越多支援更多的使用者,租戶和應用程式的需要,以及對于安全性和服務水準相關的嚴格監管政策的要求,這樣的要求,必然會成為資料中心普遍的問題。雖然更快地通路記憶體是很重要的,但多線程通路記憶體更為重要。一個具備硬體加速器的多線程的記憶體子系統可以確定避免處理核心停滞。這樣一個高效的設計的一個例子是使用多個具備高帶寬縱橫輸入sram記憶體庫。采用專用的高性能緊耦合的硬體引擎執行關鍵功能如原子、統計、查詢和負載平衡來通路這種sram記憶體庫,進一步實作了加速。

關鍵因素4:高性能分布式網格構造

以上介紹的多線程處理核心,硬體加速和多組存儲單元必須同步,提供高性能的同時避免停滞。在通路共享資源時,傳統的共享總線結構受到帶寬飽和和負載的競争問題的作用。這個問題可以通過在處理元件之間使用具備多比特分帶寬/對半帶寬 (bisection bandwidth)的一個有效的高性能分布式網格構造來避免。這種分布式的網格構造會避免沖突和在通用的基于cpu的soc常見的共享總線結構飽和的問題。

關鍵因素5:優化基于主機的網絡的程式設計工具

雖然乍看之下,通用cpu核心似乎很容易程式設計,例如,通過使用标準的基于c語言的程式設計工具,但當試圖讓應用程式并行及性能規模化的時候,其難度和複雜程度大幅增加。是以從這個意義上說,它們缺乏對于開發優化的資料平面處理應用程式良好的支援。當程式設計的多線程處理核心時,采用強大的、易于使用的、基于c語言的程式工具以支援并行程式設計環境,并在程式設計期間支援提供線程級可視化是相當關鍵的。他們也應該允許建立針對多線程操作優化的資料平面處理程式。

除了基于c程式設計工具,正在支援進階程式設計語言,如p4[3]正成為可能,其能夠使說明和資料路徑的功能的代碼更簡單并且不那麼耗時。使用開源的p4語言,設計人員可以編寫簡潔的程式,以靈活地定義比對,操作處理,以快速部署新的協定,如新興的網絡覆寫 。p4也是硬體無關的,是以它可以被重新定向到不同的技術和實作方式中,條件是它們支援p4的環境。

關鍵因素6:命中計算節點經濟

智能伺服器擴充卡正在不斷的以自然的方式發展,從低容量的特殊應用程式開始,有望成為大容量的主流部署。采用多核心soc晶片的初始部署都發現了他們進入裝置和專用的伺服器的方式,有時被稱為服務節點或網絡節點。在這樣的應用程式中,一些情況下使用網絡處理器和fpga。由于服務節點的部署量并沒有非常大,資料中心營運商都願意為資料平面處理的可程式設計伺服器擴充卡支付溢價。

盡管基于主機的軟體定義網絡(sdn)和網絡功能的虛拟化(nfv)技術已經成為資料中心應用的主流,然而,對于智能伺服器擴充卡在更高容量的計算節點的需求預計會大幅上升。這種情況将需要智能伺服器擴充卡能夠較之早期服務節點部署提供更好的成本效益。具體而言,這樣的擴充卡将不得不在今天部署的大多數伺服器的25瓦的pci express總線封裝内以線速運作。最重要的是,他們必須有合理的價格,以支援計算節點伺服器的容量經濟。是以,在可程式設計伺服器擴充卡的矽技術和資料平面處理架構必須實作性能,規模性和經濟性。上述從1至5的五大關鍵因素均要求滿足資料平面處理在25-, 40- and 50gbe帶寬的要求,同時命中資料中心營運商們對于計算節點經濟的預期。

關鍵因素7:為主流應用做好準備的軟體系統

除了滿足性能、功能、價格和功耗方面的要求,主流對于可程式設計的伺服器擴充卡的采用将需要一個良好支援的軟體系統。具體來說,伺服器作業系統核心、使用者空間和虛拟交換機的網絡軟體堆棧必須支援安裝和運作這樣的伺服器擴充卡,可以解除安裝資料平面處理如虛拟網絡隧道和比對相關流程處理操作。

易于與現有的伺服器應用程式、開源軟體和最大特征功能的快速內建整合是一套解決方案能夠獲得成功的至關重要的原因。舉個例子,解除安裝運作在現有的開放源代碼解決方案上的架構,如open vswitch,而不是用專有或分叉的解決方案來替換它們,無疑會占上風。關鍵的一點是,當任何新功能在開源社群中實作部署時,必須向上融入相應的開源主線樹(如www.kernel.org或www.openvswitch.org)。來自我們所熟悉的作業系統廠商的商業作業系統和管理程式的分布也應包括上述的資料路徑解除安裝的功能。作業系統供應商必須支援可程式設計的伺服器擴充卡的裝置驅動程式和相關軟體的認證資格,以便使這種擴充卡能夠被主流資料中心營運商采納實作無縫操作。

主流市場的智能伺服器擴充卡

基于主機的網絡部署預計将推動主流市場對于智能伺服器擴充卡的應用。這些擴充卡必須是特制的,并支援其成功的主要因素。而上文中,我們跨架構和技術讨論了伺服器擴充卡獲得成功的七大因素,以及規模經濟和軟體系統的要求。

本文轉自d1net(轉載)

繼續閱讀