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/

相关文章
相关标签/搜索