多功能PCIE交换机之六:基于NTB夸节点的读写优化
1、基于NTB跨节点读写的应用的特点
NTB常常用在要求高性能和高可靠性的场合,用来实现跨节点数据的传输。比如用作虚拟网卡、跨节点数据同步通道等,这些场合都期望充分发挥NTB基于PCIE的高速传输特性,最大限度地提高系统性能。
2、基于NTB跨节点读写的两种实现方式
实现地址转换、建立NTB通道之后,有两种实现NTB跨节点传输数据的方式:
基于CPU实现数据传输
基于NTB
DMA实现数据传输
前者依赖CPU去搬运数据,会占用CPU周期,但非常适合多线程应用;后者依赖独立的DMA硬件搬运数据,几乎不消耗CPU,但在多线程环境需要额外考虑对DMA硬件的并发访问。而在速度方面:在不利用CPU并发处理的情况下,后者一般比前者快很多。比如在笔者的系统上,用CPU搬运数据大概只有100MB/s的带宽,而用DMA的带宽接近1000MB/s,这是在还没有对DMA/PCIE进行专门优化设置的情况下测得的。
3、两种实现方式的共同特点
不管是用CPU还是DMA跨节点搬运数据,底层都是基于PCIE事务实现。从本地往远端节点写数据,底层依赖于PCIE
post write 事务;从远端节点往本地节点写数据,底层是由PCIE
non-post read实现。根据PCIE
post事务和non-post事务的特性可以知道,post操作一般都比non-post操作速度快。在笔者的系统上的测试数据应证了这一理论:CPU往对方节点写比CPU从对方节点读快,DMA往对方节点写也比DMA从对方节点读快。
4、总结
不管是用哪种方式实现跨节点传输,需要透过不同的PCIE应用看到底层PCIE事务传输和处理的本质,这样才能从整体上理解不同的应用表现出的性能差异,从而根据需要进行取舍、优化。