三大优势:
- Zero Copy:零拷贝(本质:只有用户态内存,无copy内核态内存)
- Kenel Bypass:内核旁路(本质:只有用户态和网卡,没有kernel事儿)
- No CPU Involvement:无CPU参与(本质:只有对端网卡参与,无需对端CPU参与)
Involvement: 美 /ɪnˈvɑːlvmənt/ n. 卷入,参与,介入;投入,沉迷;
- involvement in介入;参与
- job involvement工作投入;职务参与;工作认同
具体三大优势具体是指什么?
- Zero Copy::是数据的零拷贝,没有数据从用户态到内核态再到网卡的拷贝,无论是tx和rx都是直接网卡直接到内存,对立面是内核协议栈的数据经过多次拷贝。本质是数据move,是网卡访问用户态的内存,访问方式是DMA,是虚拟内存页表转化为HPA之后交给网卡直接DMA,主要能降低时延。注意主体是:流动数据,介质是内存。从发送层面是zero copy,接收层面也是。所以它表达的是 数据 在RDMA里面的特点。另外每次copy的时候CPU是通过虚拟地址访存,会存在Cache、TLB等多个miss的可能性,关于Zero Copy进一步减少这些性能损耗
- Kenel Bypass:是数据收发内核旁路,但是管理面需要参与。核心原理是memory region直接映射和处理,以及网卡的PCIe bar空间映射到用户态通过doorbell通知。也避免了内核态和用户态的切换,双重降低时延。 本质在于处理主体是网卡直接搬运。注意主体是:Kernel。Kernel Bypass是用户态 bypass了kernel,直接和网卡写作。从发送层面是kernel bypass的,接收层面也是bypass的。当然同时也带来一些劣势,就是无法使用内核提供的一些工具比如tcpdump等,所以未来XDP应该还是有很大发展空间。
- No CPU Involvement:是远端的CPU无需投入,比如write和read,就无需远端cpu投入,直接网卡通过DMA进行读取。本质是网卡直接通过DMA进行读写。注意主体是:CPU
其他:
- RDMA提供一种基于事务的verbs(RDMA应用编程接口(API))从而提高并行能力。能提高吞吐
- 上面提到了三个主体:数据、kernel、CPU,还有一个隐藏的主题是网卡。其中kernel和CPU都减少了参与,那就是网卡完成了这个工作,准确是网卡的通过DMA直接搬运内存。其中内存中数据减少了copy,是网卡可以直接DMA访问用户态的内存完成。