一、dpdk是什麼
---------
dpdk是專為快速收發包所開發的一系列的庫檔案和驅動**。dpdk最初的動機很簡單,為了證明intel架構多核處理器能夠支撐高效能資料報處理,現在dpdk逐漸成為通用多核處理器高效能資料報處理的業界標桿。
可以用來
1)在極短的時間裡面完成收發包
2)開發快速的抓包演算法。
3)執行第三方的快速路徑棧
二、傳統資料報處理流程下的弊端
---------------
在講解dpdk解決了什麼問題之前,我們先來看看高速資料報處理領域存在的難題
傳統網路裝置驅動包處理的流程如下:
1、資料到達網絡卡裝置
2、網**過dma取資料
3、取到資料後,網絡卡傳送中斷,喚醒處理器。
4、驅動軟體填充讀寫緩衝區資料結構
5、資料報文到達核心協議棧
6、將資料報文從核心態拷貝到使用者態
7、使用者態進而處理資料
報文傳統資料報處理方式存在以下兩個難題
1.每來一次報文,就觸發一次中斷,網際網路時代的頻寬從千兆到萬兆,甚至運營商級別的頻寬都達到了100萬兆,採用中斷模式時,大量資料的到來會導致頻繁的中斷觸發,系統承受不了如此頻繁的中斷。
2.資料報需要從核心態拷貝到使用者態,當資料量巨大時,這個拷貝操作會大幅的降低資料報處理效能。
三、dpdk使用的技術以及解決的問題
------------------
dpdk框架通過使用一些工程技術很少的解決了上述問題。
3.1 輪詢
採用類似網路程式設計中的poll模型來接收資料報,可避免中斷上下文切換帶來的開銷
3.2 使用者態驅動
linux下使用者態使用的技術是uio技術,後面會做詳細的介紹。在這種工作模式下,可避免不必要的核心拷貝,又避免了系統呼叫。乙個間接的影響在於,使用者態驅動不再受限於核心現有的資料格式和行為定義。
3.3 親和性和獨佔
dpdk工作在使用者態,但是執行緒的排程還是依賴於核心。利用cpu的親和性繫結,可以讓指定任務執行在某個cpu邏輯核心上,避免了執行緒在不同核心之間頻繁切換,不同核心之間切換容易導致cache miss和cache write back,從而造成效能下降。
3.4 大頁記憶體
利用大頁記憶體可以有效的降低tlb miss,從而減少訪存的開銷。
3.5 軟體調優
比如結構體的cache line對齊
比如資料在多核間訪問避免跨cache line訪問
比如適時的預讀取資料
比如多元資料批量操作
3.6 充分挖掘網絡卡效能,使用硬體的新特性
三、dpdk應用場景
------------------
而dpdk最大的優點就是改進小封包吞吐量與作業負荷效能,傳統的網路架構都是針對大封包吞吐量進行最佳化,而intel® dpdk可以解決小封包所帶來效能不佳的問題。
這幾年電信網路雲化逐漸成為不可逆轉的趨勢,而電信網路是典型的管道類業務,用ovs遠遠無法滿足動輒上百g的**需求,
因此dpdk被廣泛應用。
華為,愛立信,思科等電信裝置商的高**電信雲裝置基本都已經支援dpdk,在全球上百家主流運營商部署測試活商用,如at&t,vodafone,中國移動等。
除了應用在企業終端外, intel dpdk 也可以在軟體定義網路 (sdn) 與網路功能虛擬化 (nfv) 中扮演著重要的角色。
相信讀完這篇部落格,你對dpdk的理解有了乙個總體上的認識。從下節開始,我開始講解一些dpdk開發中的基礎概念,
了解這些概念有助於後續更好的理解和使用dpdk框架
下一課傳送門
Python基礎教程 簡介
python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型語言 這意味著開發過程中沒有了編譯這個環節。類似於php和perl...
postman基礎教程 01簡介
postman是乙個比較簡單方便的介面測試工具,會寫幾篇文章總結一下postman的基本使用 postman上手容易,提供錄製外掛程式,提高case編寫速度,官方文件齊全,使用者眾多,但是也存在劣勢比如可擴充套件性較差,無法與資料庫結合,非開源,case校驗方式較少 日常使用足夠了,後面會總結一下用...
Django框架 基礎教程(總)
django是乙個開放源 的web應用框架,由python寫成。django遵守bsd版權,初次發布於2005年7月,並於2008年9月發布了第乙個正式版本1.0 mvc框架,全稱角model view controller,是軟體工程的一種架構模式,這個模式把軟體系統分為三個部分 模型 model...