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