Azure 上的 Memcached 工作负载简介
基于 Ampere Altra 处理器的Dpsv5 虚拟机
Ampere® Altra®处理器从设计伊始就旨在为云原生应用程序(如Memcached)提供卓越的性能。以其创新架构,提供高性能、线性可扩展性和惊人的能源效率,Ampere Altra允许工作负载在不断增加的负载下,性能变化很小,以可预测的方式运行。在 Memcached 实际工作负载中提供行业领先的性能/瓦特能力和更低的碳足迹。
微软提供了一个全面的Azure虚拟机系列产品,以Ampere Altra云原生处理器为特色,可以运行各种各样的向外扩展的工作负载,如web服务器、开源数据库、内存应用程序、大数据分析、游戏、媒体等。由Ampere Altra处理器提供算力的Dpsv5 虚拟机是一种通用虚拟机产品,每个vCPU提供 2GB内存。vCPU、内存和本地存储的优化组合,可以经济有效地运行工作负载,不需要每个vCPU占用大量RAM。Epsv5虚拟机为内存优化型虚拟机,每个vCPU提供4gb的内存,适用于开源数据库、内存缓存应用、游戏和数据分析引擎等内存密集型工作负载。
Memcached 是一种开源的、内存中的键值对数据存储系统,通常用于存储来自数据库调用、API 调用或页面渲染结果的小块,任意类型的数据(字符串、对象)。 由于其内存特性,Memcached 旨在通过在 RAM 中缓存数据和对象以减轻数据库负载来加速动态 Web 应用程序。据 DB-engines 称,它一直被列为云中最受欢迎的键值存储系统之一。
在这份工作负载简介中,我们比较了Azure中基于Ampere altra的Microsoft Azure Dpsv5实例和基于Intel® Xeon® Ice lake的Dsv5和基于AMD EPYC™ Milan的Dav5实例,同时分析了这些处理器上的吞吐量和延迟数据。
Fig. 1
对于大规模云部署,性能和性价比是两项重要的指标。
如图2所示,基于Ampere Altra的D16ps v5 虚拟机的性能比D16s v5 虚拟机好4%,比D16as v5好28%。
在基准测试配置部分的表1中,列出了D16ps v5、D16as v5和D16s v5的每小时成本。在考虑虚拟机每小时的价格后,我们观察到D16ps v5 VM比D16s v5具有30%的性价比优势,比D16as v5 虚拟机具有43%的性价比优势,如图3所示。
我们使用memtier_benchmark(由Redis Labs开发)作为Memcached基准测试的负载生成器。每个测试都配置为使用多个线程运行,每个线程有多个客户端,并且启用了流水线。
我们建议使用GCC (GNU Compiler Collection) 10.2或更新版本编译Memcached-server,因为新的编译器在生成优化代码方面取得了重大进展,可以提高AArch64应用程序的性能。
我们使用Ubuntu 20.04.4 LTS操作系统和5.13.0-1017-azure内核,使用GCC 10.2编译的Memcached 1.6.9进行测试。我们比较了Microsoft Azure D16ps v5、D16sv 5和D16asv5虚拟机。对于每个测试,我们都使用类似的客户机生成对Memcached-server的请求。
由于在指定的服务水平协议(SLA)下测量吞吐量是常见的操作,所以我们使用了1毫秒的99%延迟(p.99)。这确保99%的请求的最差响应时间为1毫秒。
测试以1:9的set:get比率(1个键/值写入,9个键/值读取)和32字节的有效负载运行了2分钟,这对于内存缓存来说很常见。我们最初使用适当数量的客户端和线程/客户端来加载一个Memcached-server实例,同时确保p.99的延迟不超过1毫秒。Memcached中的管道特性(Pipelining)允许客户端将多个请求打包到一个请求包中,这可以减少包处理开销。这个特性可以显著减少客户端和Memcached-server之间的交互次数,从而提高响应时间。
接下来,我们依次增加memtier_benchmark线程的数量、每个线程的客户端和管道深度,直到这些组合违反了p.99延迟SLA。在1毫秒p.99SLA的条件下最大吞吐量被用作主要性能指标,见表1。
在Azure 虚拟机上对Memcached进行基准测试时,使用了以下配置和设置。
Standard D16ps v5 (Ampere Altra) | Standard D16as v5 (AMD Milan) | Standard D16s v5 (Intel Ice Lake) | |
---|---|---|---|
OS | 5.13.0-1021-azure | 5.13.0-1021-azure | 5.13.0-1021-azure |
Kernel | 5.13.0-1021-azure | 5.13.0-1021-azure | 5.13.0-1021-azure |
vCPUs | 16 | 16 | 16 |
Memory | 64GB | 64GB | 64GB |
glibc version | 2.31 | 2.31 | 2.31 |
Memcached version | 1.6.9 | 1.6.9 | 1.6.9 |
Memcached config | 4 instances each with 4 memcached threads | 4 instances each with 4 memcached threads | 4 instances each with 4 memcached threads |
Memtier version | 1.3.0 | 1.3.0 | 1.3.0 |
Memtier config | " --memtier_protocol=memcache_binary --memtier_data_size=32 --memtier_ratio='1:9' --memtier_key_pattern='R:R' --memcached_num_threads=16 --memtier_clients="$c" --memtier_threads="$t" --memtier_pipeline="$p" " | " --memtier_protocol=memcache_binary --memtier_data_size=32 --memtier_ratio='1:9' --memtier_key_pattern='R:R' --memcached_num_threads=16 --memtier_clients="$c" --memtier_threads="$t" --memtier_pipeline="$p" " | " --memtier_protocol=memcache_binary --memtier_data_size=32 --memtier_ratio='1:9' --memtier_key_pattern='R:R' --memcached_num_threads=16 --memtier_clients="$c" --memtier_threads="$t" --memtier_pipeline="$p" " |
Clients | D32psv5 | D32sv5 | D32sv5 |
Client config | t=8, c=2, p=50 | t=24, c=2, p=25 | t=16, c=5, p=25 |
Hourly cost (on-demand) | 0.616 | 0.688 | 0.768 |
Memcached是最早的快速开源内存键值存储之一,目前仍在大型生产部署中大规模使用。在云原生应用程序(如Memcached)上,基于Ampere Altra的Dpsv5 虚拟机轻松地超越了传统的x86产品——高达28%的性能和43%的性价比优势。对于云架构师来说,选择基于Ampere altra的Azure Dpsv5 虚拟机可以获得更好的性能和性价比,同时减少碳足迹。
有关使用基于Ampere Altra 处理器的Azure虚拟机的更多信息,请访问Azure博客。
此处包含的所有数据和信息仅供参考,Ampere 保留更改它的权利,恕不另行通知。本文档可能包含技术错误、遗漏和印刷错误,Ampere 没有义务更新或更正此信息。 Ampere 不作任何形式的陈述或保证,包括但不限于对不侵权、适销性或适用于特定目的的明示或暗示保证,并且不承担任何形式的责任。所有信息均“按原样”提供。本文件不是 Ampere 的要约或具有约束力的承诺。使用此处设想的产品需要随后的谈判和最终协议的执行,或者受 Ampere 的商品销售条款和条件的约束。
与 Ampere 测试中使用的不同的系统配置、组件、软件版本和测试环境可能会导致与 Ampere 获得的测量结果不同。
性价比是在2022年9月使用微软的虚拟机定价计算的。有关详细信息,请参阅单个测试。
©2022 Ampere Computing 版权所有。Ampere、Ampere Computing、Altra和“A”标志均为Ampere Computing的注册商标或商标。Arm是Arm有限公司(或其子公司)的注册商标。本出版物中使用的所有其他产品名称仅用于识别目的,可能是其各自公司的商标。
Ampere Computing®/ 4655 Great America Parkway, Suite 601 / Santa Clara, CA 95054 / amperecomputing.com