云计算环境中,eRDMA是种高性能网络通信技术,可以支持数据从一台计算机内存传输到另一台计算机内存中,而无需双方的操作系统内核参与。这样方式具备高吞吐、低延迟和低CPU开销特点,适合用于大规模数据传输和高性能网络通信场景。华纳云整理的关于eRDMA的主要特性如下!
基于云上overlay VPC网络,eRDMA底层链路复用VPS网络,采用全栈自研的拥塞控制CC算法,兼具传统RDMA网络高吞吐、低延迟的特点,还可以支持秒级大规模RDMA网络。
eRDMA具有完整兼容现有RDMA生态。eRDMA具有和传统RDMA相同的RC语义,可以支持全部RDMA操作。满足大部分需求,不用改动当前应用就可以在eRDMA上平滑运行。
eRDMA还能支持大规模部署,eRDMA容忍VPC网络中的传输质量变化,如延迟、丢包等。在有损的网络环境中还可以有良好性能。eRDMA可以在云服务器使用过程中动态添加设备,支持热迁移,部署具有灵活性。
eRDMA常用于缓存数据库如Redis、大数据如Spark、高性能如WRF、AI训练等多种场景中,且在这些领域中已取得可观性能收益。
容器中如何配置eRDMA?通过Docker--device选项,把/dev/infiniband/rdma_cm和/dev/infiniband/uverbsX两个字符设备映射到容器中,这样容器内的应用程序就可以绕过操作系统内核直接访问eRDMA设备进行数据的收发 。具体步骤为:
确认服务器添加ERI网卡、部署驱动程序,且eRDMA设备工作正常,在实例中安装Docker并下载对应的镜像。运行容器,用device参数把eRDMA字符设备暴露于容器中。在容器内安装eRDMA的驱动程序套件,用yum或apt源便捷部署相应程序包。
以上配置,就可以在容器应用程序上重复利用eRDMA的高吞吐量、低延迟的特点,更快实现数据传输和通信效率。