1. 简介
etcd是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供给分布式系统访问,尤其被当前最流行的容器编排平台kubernetes所使用,用来管理配置数据、状态数据和元数据。
etcd 集群旨在提供具有最佳稳定性、可靠性、可扩展性和性能的键值存储。吞吐量和延迟是衡量性能的一些最常用方法,延迟是完成操作所需的时间,吞吐量是在给定时间段内完成的总操作数。
在本文中,我们比较了AWS M6g实例(基于 Arm Neoverse IP的 Graviton2)与M5实例(基于 Xeon Platinum 8000系列)上的etcd吞吐量和延迟,以展示Graviton2上的性能优势。
2. 基准测试搭建与结果
对于测试环境的搭建,我们使用了集成在etcd项目中的默认benchmark工具,这是etcd的官方基准测试工具。
etcd的性能测试通常有两种类型的“写”工作负载:
- Write to leader
- Write to all members
Figure 1: 测试拓扑(Write to leader)
Figure 2: 测试拓扑(Write to all members)
该测试用到了四个EC2集群,配置如下,并且为这些实例使用了同一个置放群组以减少网络延迟。基准测试客户端使用一个m6g.4xlarge实例。
Table 1: 测试集群配置
基准测试软件版本和测试参数如下:
下表显示的结果是经过预热阶段(20次测试运行迭代)后20次连续测试运行迭代的汇总结果(20次的平均值),每次结果中取平均吞吐量和平均延迟作为衡量标准。与Xeon实例相比,在Graviton2实例上运行etcd可以得到18%的性能提升。
“Write to leader” case:
Table 2: etcd在M5和M6g上的吞吐量性能结果 (Write to leader)
Table 3: etcd在M5和M6g上的时延性能结果 (Write to leader)
“Write to all members” case:
Table 4: etcd在M5和M6g上的吞吐量性能结果 (Write to all members)
Table 5: etcd在M5和M6g上的时延性能结果 (Write to all members)
下图显示了在M5和M6g实例上运行etcd的的吞吐量和延迟比较 (Write to leader case)。
Figure 3: M6g VS M5 实例的性能提升 (Write to leader case)
Figure 4: M6g VS M5 实例的延迟降低 (Write to leader case)
下图显示了在M5和M6g实例上运行etcd的的吞吐量和延迟比较(Write to all members case)。
Figure 5: M6g VS M5 实例的性能提升 (Write to all members case)
Figure 6: M6g VS M5 实例的延迟降低(Write to all members case)
3. 总结
总而言之,与基于x86的同水平EC2实例相比,部署在AWS Graviton2上的etcd提升了高达18%的吞吐量,减少了18%的延迟,此外还有20%的成本优势。在这些实例上部署应用程序既简单又高效,不会产生额外开销。有关如何将现有应用程序迁移到AWS Graviton2的详细信息,请查看此github页面。
访问AWS Graviton页面,了解有关采用基于 Arm 的处理器的客户案例。如果您对在Arm Neoverse平台上运行的软件工作负载有任何疑问,欢迎留言讨论。