阿里云ECS提供的部属集策略[1],可以控制ECS的物理分布。部属集支持多种策略:
- 高可用策略。将部署集内所有ECS实例在指定地域内严格地分散在不同的物理服务器上,进而保证ECS实例上业务的高可用性和ECS实例的底层物理服务器容灾能力;
- 低延迟策略。这种模式下会将部署集内所有ECS实例尽可能地集中部署到所在可用区内同一个网络拓扑范围内,以降低网络互通的时延。
我们知道,RDMA本身具有低延迟、高吞吐的特点。实际使用的时候,也会受到实际的物理网络距离的影响:距离越远,节点之间的的延迟就会增大。在阿里云当中,我们可以结合上部属集策略,使ECS提供弹性RDMA加速功能[2]尽可能获取到更低的时延。
我们接下来通过实际的实验,看一下部属集所能带来的效果。
1. 创建部属集
首先,进入云服务器ECS的控制台,在左侧的导航栏中,找到“部属与弹性”一节。如果部属集没有显示在这一节中,那么就可以在“更多”按钮的部分找到。
在部属集的页面,点击“创建部属集”,给部属集命名,并选择“网络低延迟策略”,然后点击确认,等待部属集创建完成。
2. 购买ECS实例,并添加到部属集当中
在这一步当中,我们可以直接在部属集页面,找到刚才创建的部属集,点击“创建实例”,就会直接跳转到ECS的购买界面。
在ECS购买界面,我们购买ecs.g8ae.xlarge规格,安装Alibaba Cloud Linux 3系统,并且允许系统自动安装eRDMA驱动程序。
同时,我们在弹性网卡部分,勾选“弹性RDMA接口”。
因为我们是通过部属集页面点击“创建实例”跳转的ECS购买界面,所以在ECS购买界面当中的高级选项中已经默认为我们勾选了部属集。如果没有的话,需要手动选择刚才创建的部属集。
3. 对比测试
创建完实例之后,等待OS初始化完之后,安装perftest(一款可以测试RDMA功能的基准测试程序)。在alinux3当中,可以通过yum直接安装:
yum install -y perftest
以RDMA Write的时延测试为例。我们将刚才分别购买的两个实例分别充当server节点和client节点。
- 在server节点运行:
ib_write_lat -R -a -F
- 在client节点运行:
ib_write_lat -R -a -F <server_ip>
测试结果如下图所示。
我们可以看到小消息的时延<10us。
我们再次购买两台相同规格的实例,除了不选择部属集,其他的配置均一样。我们再次测试ib_write_lat,可以看到这次平均时延在12.5us附近。说明这次购买的实例分布在相距较远的两个物理机上。
4. 总结
为了达到更低的延迟结果,在购买实例时,尽量选择“网络低延迟”部属集策略。此外,部属集可以尽力保证购买的实例在物理分布上尽可能靠近,但是也会受到实际库存的影响。
[1] https://help.aliyun.com/zh/ecs/user-guide/overview-43
[2] https://help.aliyun.com/zh/ecs/user-guide/erdma-overview