Kernel Bypass & Offload 介紹

系統網絡優化能夠有兩方面的工做能夠作:1 繞開內核(bypass);2 用硬件替代軟件(offload)。html

具體包括:linux

1. 繞開內核:git

  • 不使用內核內核子系統的功能,採用本身實現的相同功能的代碼來處理。
  • 從用戶空間直接訪問和控制設備內存—避免數據從設備拷貝到內核,再從內核拷貝到用戶空間。

2. 用硬件替代:github

  • 用專用的硬件設備替代軟件的部分功能。
  • 典型的用硬件替代軟件的例子有:DMA engines, GPUs, Rendering screens, cryptography, TOE(TCP Offload Engines).

爲何要作兩方面的工做呢?主要緣由能夠歸結爲:緩存

1. UNIX通過設計和優化,目前它的主要任務是支持多個進程同時運行,而且避免任何進程由於缺乏資源而長時間掛起。 可是在高頻交易領域,咱們但願某些特定的進程處理每條消息的響應時間快,延遲波動小,而不須要所在機器上全部進程的平均性能很好。網絡

2. TCP/IP協議棧被優化爲防止連接丟失和有效的利用帶寬。性能

 

目前已經有不少成熟的解決方案能夠用了,他們是:優化

這些解決方案每一個都有他們本身的解決思路。ui

  • 定製設備驅動。.netmap和DNA在標準Intel驅動的基礎上加入了I/O內存到用戶空間的映射。
  • 定製硬件。Myricom和Napatech有他們本身定製的硬件以及對應的驅動(Myricom用的是ASIC, Napatech用的是FPGA)。
  • 用戶空間的庫。這些解決方案每一個都提供了用於訪問他們擴展功能的庫。這些功能差別極大:以太網I/O、libpcap的兼容、多進程處理的硬件輔助的消息包分發、緩存管理、整個TCP/IP層的功能。
  • Licensing。netmap是開源的,DNA用戶庫須要適度的license。Napatech須要NDA,並且還要依賴昂貴的硬件。

參考文章:spa

http://ttthebear.blogspot.com/2008/07/linux-kernel-bypass-and-performance.html

<Kernel in the Way Bypass and Offload Technologies> -- Christoph Lameter

http://lukego.github.io/blog/2013/01/04/kernel-bypass-networking/

相關文章
相關標籤/搜索