需要配置支持RDMA技术的网卡,最具代表性的是CX-5、CX-6
1.零拷贝指的是不需要内核和应用层进行拷贝数据,从而降低内核态和用户态切换
2.kernal by pass 指的是传统网络数据包需要使用linux内核协议栈进行层层解封装,并且需要大量中断给cpu造成很大的负担,而kernal by pass可以绕过linux协议栈让用户层直接来解封装,常见的解决方案如DPDK
zerocopy物理上说绕开Cpu不太准确,应该是数据不经过CPU的运算处理,他还是得借用CPU的总线来进行IO。所以不同BUS设计CPU进行DMAIO的速度也会有差异。
也不是完全不进行内核态和用户态的切换,sendfile的IO是必须的,但这个过程和时机可以优化,SGDMA现在最新的算法是两次状态切换。我司在RMDA的应用是DBHA。
RDMA技术概述:
英文全称 remote direct memory access,意思是远程直接内存访问,这种技术是一种最早用于高性能计算领域的网络通讯协议,目前已在数据中心当中得到广泛应用。
RDMA允许用户程序绕过操作系统内核CPU,直接和网卡交互进行网络通信,从而提供搞宽带和极小时延。
DMA工作示意图:
上图红框标出来的,当两个应用程序实现内存交互的时候,一般通过CPU来控制。
当你有DMA这个进程的时候,不用通过CPU,而是通过DMA Engine来实现两个程序之间的内存交互
RDMA工作示意图