1. TCP卸载(TCP Segment Offload,
TSO)
这种技术是将TCP数据的分段处理下放到网卡中进行,通过提高网卡的处理能力,象显卡中的GPU一样增加
一个网卡的NPU,上层只需要把数据下放,由NPU完成对TCP数据的分段操作,由此可减少CPU的负载,通常
TSO处理的数据大小是8K~64K字节。将这个技术扩展,使之不仅对TCP协议适用,而且可适用于其他协议
,就出现了GSO(Genenic
Segment Offload),针对各种协议能通用化处理。目前Linux的2.6.18后的内核
都支持GSO,更早点的内核也能支持TSO。
2.
RDMA(Remote Direct Memory
Access)
RDMA扩展了DMA的概念,本地直接可以将数据直接发送到对方的应用程序的内存空间,而普通DMA是本地系
统范围内,将数据从外部设备数据空间放到系统内核的内存空间,还需要进一步处理解析然后拷贝到应用
程序的内存空间。RDMA就简化了这个拷贝过程,也能降低CPU的使用率。但RDMA这种处理是属于点对点的
拷贝,一般基于TCP实现,同时需要修改相关的应用,内核和网卡驱动的实现才能支持,而且安全方面也
是需要仔细考虑的因素。
3.
Onloading
Onloading过程针对的是CPU和内存的速度不匹配的问题,现在的CPU频率都是上G,而内存大都只有几百M
,CPU快而内存慢,因此CPU从内存读取数据时必然会存在停等现象,造成CPU的使用率下降。Onloading技
术就是尽量减少CPU访问内存的操作,使用了两种方法,一种是新的DMA处理,内存数据移动不需要CPU参
与每个字节的移动,只需要逻辑处理,由内存设备实现数据的移动,CPU的参与就很少了;第2种方法是在
网卡中就将数据包的包头和负载分开使CPU能并行处理(在多CPU环境下)。Intel的I/OAT技术就是
Onloading技术的一个实现,软件上Linux
2.6.18内核后都支持,但硬件方面CPU必须是双核或4核的Xeon
处理器才支持,普通桌面CPU不支持。I/OAT技术专门为CPU优化了TCP/IP协议栈,使包头和负载并行处理
,减少了CPU计算负载,同时增强了DMA处理机制,使CPU使用率进一步下降,同时不需要修改应用的实现
。
阅读(770) | 评论(0) | 转发(0) |