DPDK:簡介

背景:最近因爲要移植一些項目到國產化設備上,但是涉及到網間通信,在10GE以上網絡間通信,國產化CPU存在較大的性能問題,會有cpu中斷處理不及時而造成網卡隊列充滿的情況。所以產生了有沒有啥辦法能降低cpu軟中斷的辦法。這就引入了今天的主題DPDK,網上DPDK的資料茫茫多,有很多寫的很好的,但是也有不少明顯就是在注水,所以對於一個新人小白來說,這一點還是不夠友好。

DPDK是什麼:DPDK全稱是Intel Data Palne Development Kit,是Intel 提供的數據平面開發工具,爲Inter architecture(IA)處理器架構下用戶高效的數據包處理提供庫函數和驅動的支持,它不同於Linux系統以通用性設計爲目的,而是專注於網絡應用中數據包的高性能處理。具體體現在DPDK應用程序是運行在用戶空間上利用自身提供的數據平面庫來收發數據包,繞過了Linux內核協議棧對數據包處理過程。

傳統報文收發的缺點:

  1. 傳統的收發報方式都必須採用用硬中斷來做通訊,每次硬中斷大約消耗100微妙,這還不算因爲終止上下文所帶來的Cache Miss。
  2. 數據必須從內核態用戶態之間切換拷貝帶來大量CPU消耗,全局鎖競爭。
  3. 收發包都有系統調用的開銷。
  4. 內核工作在多核上,爲可全局一致,即使採用Lock Free,也避免不了鎖總線,內存屏障帶來的性能損耗。
  5. 從網卡到業務進程,經過的路徑太長,有些其實未必需要,例如netfilter框架,這些都帶來了一定的消耗,而且容易Cache Miss。

DPDK的優點:

性能高、用戶態開發、死後易恢復。

DPDK基本原理:

DPDK基於UIO(Userspace I/O)旁路數據。數據從網卡->DMA接收到硬件中斷->將數據拷貝到大頁內存->DPDK輪詢模式->DPDK基礎庫->業務進程。

下圖是普通linux網卡數據報文與DPDK數據報文走向流程對比。

未完待續。。。

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