RDMA
Contents
计算和存储都在想方设法地提高速度,谁都不想成为性能瓶颈,而在分布式架构下,网络带宽也是一个优化的地方。
带宽,是做性能估算时常用的一个单位。
在单机的情况下,我们学过DMA (直接内存访问)是一种能力,允许在计算机主板上的设备直接把数据发送到内存中去,数据搬运不需要CPU的参与。
对应地,有人实现了分布式架构下的直接内存访问,也就是RDMA。
RDMA目前来说比较垄断,Mellanox
RDMA需要专用硬件设备,包括RDMA卡、网线、交换机等。
一种不需要购置上述设备来模仿的技术叫DPDK,另外由此衍生的还有SPDK(Storage Performance Development Kit)。他们的创新点都是用户态,没有内核态中断。
DPDK和SPDK都是由Intel发起的工具箱,有一部分原因是要卖硬件。
DPDK存在的一个问题是,需要一个应用绑定一个网卡,由此来做高性能的处理,特别适合netty的场景。
我们曾经尝试对spark进行改造,使得它支持DPDK,其中包括对netty进行定制化等,但最终以失败告终,问题就出在了使用DPDK的每个进程都需要绑定一个网卡。
比如一个spark应用启动了n个executors,那就要有n个网卡了。
对于netty的情况,它起的是多线程,所以不影响。
SPDK技术就涉及到虚拟文件系统FUSE,hadoop、alluxio、lustre都已经实现对应的接口。
用户态文件系统
ZFS Ceph
spdk的存在就是提供一种以轮询的方式来访问硬盘的方式,在高速设备上用于取代中断的访问方式