8x8采用Ampere处理器实现性能提升30%与成本优化

本文详细介绍了8x8视频会议服务在疫情期间面临性能瓶颈时,通过迁移至基于Ampere Altra处理器的ARM64架构,成功实现性能提升30%并降低成本的完整技术方案和实施过程。

8x8通过采用Ampere处理器节省成本并提升性能30%

挑战

2020年新冠疫情爆发期间,全球对8x8加密视频会议服务的需求呈指数级增长——在几周内从20台虚拟服务器激增至8000台。尽管8x8视频路由器的工作原理简单易懂,但实际上对CPU资源要求很高。

扩展系统意味着在云中部署更多服务器。8x8服务器在几小时内遭遇的网络性能瓶颈数量,相当于工程师们预期一整年需要处理的问题量。

8x8的Emil Ivov解释道:“通常当出现问题时,机器会不堪重负,CPU需求过高,无法及时从队列中取出到达的数据包进行处理。“这些问题导致延迟增加,用户能够明显感知,更紧迫的是云服务成本大幅上升。

解决方案

为了降低成本,8x8投资了Oracle云基础设施(OCI)。OCI为8x8提供了基于Ampere® Altra® CPU的、成本更低的Arm64 OCI实例。时间紧迫,8x8冒险开始为迁移到Arm64微架构重构Jitsi——他们曾担心这一过程会充满艰辛和事故。

Jitsi的大部分关键代码使用Java编写,需要JNI接口连接到本地机器码加密库和其他需要重新编译的库。

幸运的是,由于已有现成的Arm64库,将其所有Jitsi代码迁移到Arm64只需开发人员最少的工作量,所有工作都在一天内完成。此外,启动新虚拟机实例的自动化脚本需要为Arm64实例重新调整——这又花费了几天时间。

成果

迁移到基于Ampere的Arm64实例后,8x8实现了Jitsi达到或超过P95 1毫秒的目标。这意味着日常性能中数据包事务处理时间应少于1毫秒,P99为5毫秒。

从成本角度看,OCI的Arm64实例每个实例比之前使用的实例便宜高达30%。此外,基于Ampere的Arm64实例性能提升了高达30%——用Ivov的话说是"非常显著的改进”。与迁移前相比,每个Ampere实例在相同规模下能多处理20-30%的工作量。

Ivov表示:“采用Ampere实例没有任何犹豫。它们始终是我们首选的选项。”

开发者故事

在新冠疫情将在线通信工具需求推至前所未有的极端水平后,全球最大的开源电信项目之一将其服务迁移到OCI上基于Ampere的Arm64实例。这一决定带来了巨大回报。

2020年,当COVID-19大流行改变全球工作文化时,视频会议解决方案提供商8x8的加密视频通信服务经历了巨大的流量激增。

大流行开始前,8x8视频会议服务的视频路由器运行在20台虚拟服务器上。一周后,它们消耗了80个实例。六周后,这个数字增长到8000。随着全球经济受到核心冲击,8x8发现自己突然成为了全球电信骨干网。

过载剖析

尽管8x8视频路由器的工作简单易懂,但实际上对CPU要求很高。像电话交换板一样,服务器从一个套接字读取数据包,解密,重新加密,然后将加密的数据包复制到其他套接字进行转发。扩展系统意味着在云中部署更多服务器。这看起来是一个简单的可扩展性计划,至少在开始时是这样。

Jitsi创建者、8x8产品副总裁Emil Ivov表示:“每周,我们都需要将[托管Jitsi所需的]基础设施翻倍。当事物呈指数级增长时,速度之快令人疯狂。”

8x8服务器在几小时内遭遇的网络性能瓶颈数量,相当于工程师们预期一整年需要处理的问题量。Ivov将这种感觉比作发现自己置身于潜艇战斗电影中,所有深水炸弹同时袭来,舰桥上的所有阀门开始爆炸并喷水。

Ivov解释:“通常当出现问题时,机器会不堪重负,CPU需求过高,无法及时从队列中取出到达的数据包进行处理。”

“这些队列会变得越来越长。数据包离开队列、被处理、放入出站队列并发送需要时间。这个时间增加了,用户能够明显感知到这种增加。”

“这个时间表现为延迟[然后是]数据包丢失,因为当你开始发送太多数据包时,可能会使通往终端设备路径上的各种设备的队列不堪重负。你可能会看到糟糕的视频或音频中的噪音、中断。这不仅在指标图中非常明显,对用户也是如此。”

HAProxy负载均衡器会遇到线程委托死锁。然后,由于HAProxy依赖syslog生成日志而不是自己写入日志文件,日志系统会变得过载。

但技术挑战甚至不是最大的问题。“还有一个巨大的财务挑战。我们的账单增长了两个数量级,达到每月数百万。”

第99百分位的回报

8x8需要立即降低成本。首先,它投资了Oracle云基础设施(OCI)。接下来,其开发人员提出了优化方案,使工作负载能够消耗更少的OCI服务器实例。之后,Oracle联系8x8,告知正在推出由Ampere® Altra® CPU驱动的、成本更低的Arm64 OCI实例。

时间紧迫,8x8冒险开始为迁移到完全不同的微架构重构Jitsi——他们曾担心这一过程会充满艰辛和事故。Jitsi的大部分关键代码使用Java编写,需要JNI接口连接到本地机器码加密库和其他需要重新编译的库。然而,这些库本身已经有了Arm64版本。

8x8的Ivov指出:“这是一个支持得非常好的架构。每个有意义的项目都已经有Arm64的二进制文件,所以我们从未遇到过任何问题。”

低成本,轻松获胜

8x8的Emil Ivov承认,他和团队对从x86迁移到Ampere感到一些忧虑。Jitsi是否会遭受性能打击?缓解这些打击的成本是否会超过在低成本平台上运行所节省的费用?8x8是否会发现自己分裂为两半,通信平台托管在与CX平台完全不同的架构上?

Ivov评论道:“起初,我想,‘啊,天哪,谁知道那是什么异国情调的东西,‘以及有多少东西不能在这个Arm64基础架构上运行。我害怕会发生不可预见的事情。但支付更少的钱是去尝试事情的巨大动力。”

令他们惊讶的是,使用基于Ampere的OCI将Jitsi从x86迁移到Arm64的整个行程只用了两周时间。下一步是从暂存环境转移到生产环境,结果超出了所有人的预期。

Ivov说:“我们启动了它,便宜大约20%到30%的机器给我们带来了20%到30%更好的性能。“当被问及8x8将其他平台迁移到Ampere和OCI的计划时,Ivov宣称这是降低成本的最简单途径。“采用Ampere实例没有任何犹豫,“他说。“它们始终是我们首选的选项。”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计