DPDK

網路的核心是報文的轉發過程,linux網路是通過內核協議棧進行轉發的,報文控制平面和數據轉發平面沒有分離,不適合處理大規模網絡數據包,因爲linux分爲內核區和用戶區,報文先進入內核區然後拷貝到用戶區,供給上層應用程序處理。並且爲了全面的支持用戶空間的各個功能,協議棧中嵌入了大量用於對接的接口。如果能讓應用程序直接接管網絡數據包處理、內存管理以及CPU調度,那麼性能可以得到一個質的提升。

  如今的處理器都是多核,而且內存也越來越大,可以提高多核和大內存的擴展性,減少CPU多核之間任務的切換,內存cache miss,因爲內存的訪問速度永遠也趕不上cache和cpu的頻率,爲了能讓性能平行擴展,最好是少訪問。

  要提高網路報文轉發,從如下幾個方面着手:

  1.控制層留給Linux做,其它數據層全部由應用程序來處理。
  2.減少系統調度、系統調用、系統中斷,上下文切換等
  3.摒棄Linux內核協議棧,將數據包傳輸到用戶空間定製協議棧
  4.使用多核編程技術替代多線程,將OS綁在指定核上運行
  5.針對SMP系統,使CPU儘量使用所在NUMA系統節點的內存,減少內存刷寫
  6.使用大頁面,減少訪問
  7.採用無鎖技術解競爭

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