SmartNIC/DPU:The Good, The Bad, The Ugly
最近DPU的熱度居高不下,很多公司都加入了這一陣營,這也側面印證了行業正在轉向限制較少、基于服務器的存儲和網絡。但是,無論你是考慮使用SmartNIC、GPU還是DPU,有幾個問題是需要明確的。
The Good:SmartNIC/DPU能夠卸載CPU工作負載,減輕CPU負擔
DPU,通常被稱為數據處理單元(Data Processing Unit),通常以PCIe卡的形式出現,它可以將傳統上在服務器 CPU 上運行的網絡或存儲服務卸載到卡上。為什么說這是好的?當你考慮像 Hyper-Converged Infrastructure 這樣傳統的基于服務器的行業解決方案時,在服務器 CPU 上運行你的存儲或網絡服務意味著你在消耗服務器 CPU、網絡和內存資源。從打開系統電源的那一刻起,僅存儲服務就可以消耗多達 30% 的服務器資源(取決于你啟用了哪些數據服務)。另一個好處是,可以針對具體的任務量身定制專用硬件。
雖然一段時間以來,網卡一直在卸載網絡服務(通常稱為 TCP 卸載) ,但我們看到了一種趨勢,卸載功能正向上移動,轉移到更高級別、更復雜的網絡功能,包括安全功能。傳統上,大多數高級網絡功能運行在防火墻設備或主服務器 CPU 上。這些方法要么不可伸縮,要么不可避免地消耗服務器資源,并伴有軟件依賴。將高級網絡功能轉移到其他設備上,可以隨每臺服務器(相對于單個設備)一起擴展,并且不會對服務器 CPU(相對于軟件)造成負擔。在這種架構中,服務器操作系統消耗的是網卡的網絡服務,不需要計算出網絡流量管理的技術細節,并且它可以隨著環境中的每個節點進行擴展。
The Bad:SmartNIC/DPU 是真正的網絡或存儲引擎,還是只是一個可編程加速器?
事實上,DPU大多具有可編程加速器芯片,用于將某些服務或功能從服務器CPU上卸載。這些服務或功能是什么取決于蝕刻在硅片上的軟件。對于存儲服務,如今 DPU 本身提供的功能并不多。這意味著使用DPU時,用戶主要是獲得加速方面的優勢,但依舊會遇到與超融合基礎設施或軟件定義存儲相同的限制,因為提供完整企業級數據服務的存儲軟件仍然運行在服務器上。
我們來進一步看看為什么這很重要。當你只將一些數據服務從服務器CPU上卸載到DPU上時,您考慮的設計原則(硬件特性,即網卡提供的內容、服務器上的軟件提供的內容)與在服務器網卡上運行所有企業數據服務所采用的原則大不相同。后者可以確保CPU、網絡或內存資源的消耗為零,并且不存在軟件依賴或與服務器上運行的應用程序發生沖突。正確處理這一點很重要,因為如果你必須在服務器上運行軟件來完成企業數據服務,你必須:
- 在每臺服務器上添加(和維護)軟件,并確保它與實際購買服務器的應用程序配合良好;
- 購買更多的服務器和軟件以補償內存和 CPU 上的資源開銷(例如,20%的資源開銷需要購買25%以上的服務器和軟件許可)。
舉個例子:
AWS Nitro 本質上是一個卸載引擎,它主要是在主機上運行所有內容,然后在網卡上加速。這仍然會給服務器帶來負擔,所以我們決定不構建另一個可編程存儲卸載引擎,而只是構建一個存儲引擎。一個真正的存儲引擎并不是讓 DPU 的消費者對芯片進行編程以卸載某些存儲服務,而是將所有企業數據服務都內置于其中,包括復制、加密、壓縮、重復數據刪除等等。
另一個問題是,在構建卸載引擎時,無論是用于網絡還是存儲,DPU都不負責處理數據中心斷電等故障時的持久化(persistence)問題。這就把一些最具挑戰性的實現部分留給了軟件(通常需要額外的專用硬件)。
The Ugly:管理問題
如前所述,在服務器中使用網卡有助于減少該服務器上的資源消耗,但也有助于擴展。與此同時,需要管理的設備數量也會急劇增加。簡單地說,如果沒有針對所有這些設備的簡單管理解決方案,那么完全脫離 DPU 運行網絡和企業數據服務將毫無意義。
從這個角度來看,大多數 DPU 供應商只提供位于企業層的帶外(out-of-band)管理解決方案,這意味著你管理解決方案的能力僅限于該單一層,無論是機架還是數據中心級。但是,如果你有數千臺服務器呢?再或者有多個數據中心?且是位于全球不同地點的數據中心?如果在數據中心的每個服務器上都有數據平面或DPU,管理就會變得非常復雜。
綜上所述,在我們考慮使用SmartNIC或者DPU的時候,不僅要看到它的優勢,背后存在的問題也同樣要納入其中。
原文鏈接:https://nebulon.com/blog/smartnics-dpus-spus-good-bad-ugly/