向量封包處理器(VPP)如何運作

目錄

FD.io背後的技術

硬件加速


FD.io背後的技術

FD.io的核心是矢量數據包處理(VPP)。

從2002年開始開發,VPP是當前在運輸產品中運行的生產代碼。它在x86服務器和嵌入式設備上的x86,ARM和Power架構等多種架構的用戶空間中運行。VPP的設計與硬件,內核和部署(裸機,VM,容器)無關。它完全在用戶空間中運行。

VPP幫助FD.io突破了性能和規模的極限。獨立測試表明,以VPP爲基礎的FD.io在規模上比當前可用的技術快兩個數量級。

VPP從網絡IO層讀取最大的可用數據包向量。

然後,VPP通過“數據包處理”圖處理數據包的向量。

VPP不會處理整個圖形中的第一個數據包,然後處理整個圖形中的第二個數據包,而是先處理通過一個圖形節點的所有數據包向量,然後再移動到下一個圖形節點。

由於向量中的第一個數據包會預熱指令緩存,因此其餘數據包往往會以極高的性能進行處理。處理數據包向量的固定成本在整個向量中攤銷。這不僅導致非常高的性能,而且還導致統計上可靠的性能。如果VPP落後一點,則下一個向量包含更多的數據包,因此固定成本將在更大數量的數據包中攤銷,從而降低了每個數據包的平均處理成本,從而導致系統追趕。結果,吞吐量和等待時間非常穩定。如果有多個核可用,則圖形調度程序可以將(向量,圖形節點)對調度到不同的核。

粗略的日常比喻是要考慮一堆木材的問題,其中每一塊木材都需要切割,打磨並在上面鑽個孔。一次只能擁有一個工具(類似於指令緩存)。如果您先拿起鋸子並進行所有切割,然後拿起砂光機並進行所有打磨,然後拿起鑽頭並進行所有操作,則將更快地完成木材的切割,打磨和鑽孔。您的鑽探。拿起每個木材的工具要慢得多。

VPP的圖形節點體系結構還易於擴展。您可以從單獨的源代碼庫中爲VPP構建獨立的二進制插件(只需要標頭)。插件從插件目錄加載。VPP插件可以重新排列數據包圖並引入新的圖節點。這允許通過插件引入新功能,而無需更改核心基礎結構代碼。

硬件加速

這種相同的圖節點體系結構還允許FD.io在可用時動態地利用硬件加速,從而使供應商能夠繼續在硬件方面進行創新,而不會違反FD.io軟件的“隨處運行”的承諾。

從邏輯上講,您可以將硬件加速視爲將某些軟件圖形節點替換爲執行相同功能的硬件,只是速度更快。因爲硬件加速器供應商可以通過簡單地提供一個充當輸入節點的插件來實現此目的,該插件可以移交給要在軟件中執行功能的第一個圖形節點,或者提供一個輸出節點就可以儘快移交該插件。軟件處理完成。這樣,可以使用加速硬件(如果存在),但是如果功能缺失或資源用盡,則功能可以繼續。這種架構爲硬件加速器提供了最大的創新空間。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章