亚马逊AWS官方博客
使用 Graviton 4 构建 UE5 Dedicated Server 获得极致性价比
Unreal Engine 和 Graviton 介绍
Epic Games 是业界领先的互动娱乐公司和 3D 引擎技术提供商。 虚幻引擎(Unreal Engine,简称 UE)是先进的开源实时 3D 创作工具之一,为包括《堡垒之夜 Fortnite》在内的一些大型游戏提供动力,也被各行各业的创作者所使用。
Amazon Web Services Graviton 是 Amazon 子公司 Annapurna Labs 设计的一系列 ARM64 架构的 CPU。与 X86-64 的 CPU 相比,Graviton 的 CPU 能耗更低、CPU 时钟频率更稳定,同时避免了 SMT 切换的开销。2018 年 Amazon Web Services 发布了第一款 Graviton 实例 A1,这是第一款主流云厂商大规模部署的 ARM 实例。在之后的 2020 年和 2022 年,Amazon Web Services 陆续发布了 Graviton 2 和 Graviton 3 的实例 6g 和 7g,性价比逐步提升(相较于 6 系的 X86 实例分别提升 40% 和 65%)。
而在今年发布的最新的 Graviton 4 实例,则是迄今为止 Amazon Web Services 为各种 workload 设计的最强大并且最高效节能的 CPU。Graviton 4 的实例 R8g 相较于 Graviton 3 的实例 R7g 有大约 30% 的性能提升。早在 2023 年 re:Invent 上,R8g 实例刚刚 preview 的时候,就有超过 100 家客户将他们的 workload 部署在 R8g 上进行测试,并且获得了显著的性能提升,其中就包括 Epic Games。
Epic Games 早在 2021 年就在他们的游戏《堡垒之夜》中大规模使用 Graviton 的案例,在他们的测试中显示,即使是延迟要求最高的那一类游戏,Graviton 3 的实例 C7g 也非常适合,并且还有显著的性价比提升。而在最新的 Graviton 4 实例的测试中,他们发现性能相较于 Graviton 3 更强。目前 Epic Games 已使用了上万个 Graviton 的芯片来承载他们的游戏业务,Graviton 给 Epic Games 带来的价值不仅限于《堡垒之夜》这一款游戏,还包含了所有用 Unreal Engine 构建 Dedicated Server 的游戏。
本文将通过使用 Lyra Starter Game 压测 UE5 Dedicated Server 在不同实例的上的性能表现,来介绍使用 Graviton 4 在 UE5 Dedicated Server(简称 DS) 应用场景下带来的性价比优势。
测试结论
Graviton 4 的实例在 UE Dedicated Server 应用场景下:
- 相较于 Graviton 3 有约 25+% 的性价比提升(均使用优化参数编译)
- 相较于Intel Sapphire Rapids 和 AMD Genoa 有 30%~35% 的性价比提升
- 使用 Graviton 针对 C/C++ 的优化参数来编译 Dedicated Server 对性能提升约 10%~25%
测试方法
此次压测使用 Lyra Starter Game 项目,通过增加 AI Bot 和 GameClient 的方式来增加 Dedicated Server(简称 DS) 的负载,通过对比不同机型以及不同参数编译出的 DS 在 server full 的情况下的 CPU 使用率和 帧率(FPS) 来对比性能。
在 Dedicated Server 运行时,除了通常会关注的服务器 CPU、内存、IO 和网络等指标外,还会关注游戏内的帧率(FPS),帧率的大小反应了游戏内玩家的体验,帧率越小体验越差。此次测试也将 FPS 作为性能指标综合进行评估。
测试指标
- DS CPU 使用率(聚合 15min 的 CPU 平均使用率)
- Server full 的对局中玩家稳定的 FPS 的数值(由于不同场景中 FPS 的数值有所不同,尽可能选择相同场景的稳定 FPS)
测试环境准备
服务端
- UE5 Dedicated Server 打包设置 50 Bots
- UE5 打包编译 4 种 Dedicated Server 进行对比:
- LinuxServer:X86 机型的 Linux Server
- LinuxArm64Server:默认参数编译的 ARM 机型的 Linux Server
- LinuxArm64Server-neoverse-v1:使用 Graviton 3 优化参数编译的 ARM 机型的 Linux Server
- LinuxArm64Server-neoverse-v2:使用 Graviton 4 优化参数编译的 ARM 机型的 Linux Server
- 总共 4 种机型进行测试:
- r7i.2xlarge:第四代 Intel Xeon Scalable 处理器 Sapphire Rapids,8 核 64G
- r7a.2xlarge:第四代 AMD EPYC 处理器 Genoa,8 核 64G
- r7g.2xlarge:Graviton 3 处理器,8 核 64G
- r8g.2xlarge:Graviton 4 处理器,8 核 64G
- 其中 r7g 和 r8g 的机型分别使用默认参数和优化参数编译的 DS 进行对比
- 一共 6 台 DS 进行测试:r7i, r7a, r7g-default, r7g-opt, r8g-default, r8g-opt
- 在服务端的 6 台机器上配置 CloudWatch Agent,用以统计每台机器上每个 CPU 核心的使用率
客户端
- Bot 客户端:打包 Lyra Starter Game 的 LinuxClient,服务器启动后用 headless 的方式(-nullRHI 参数)连接服务端
- 体验客户端:打包 Lyra Starter Game 的 WindowsClient(Development),用于在 DS 高负载时在服务器进行体验,并查看 FPS
- 对于每个 DS 各启动 20 个 xlarge 承载 Bot 客户端来连接服务器,共 120 台 c7i.xlarge LinuxClient
测试过程
启动服务端
由于 Dedicated Server 运行在单个 CPU 核上,本次测试使用 taskset
命令将 Dedicated Server 进程绑定在特定的核上运行,方便监控统计并且避免不同 CPU 核心的上下文切换。
分别在六台机器上运行 Dedicated Server 并将服务端日志写入到本地文件 server.log
,命令大致如下:
- taskset -c 6:指定进程运行在 CPU6 上
LinuxArm64Server
是 UE5 打包的默认参数的 ARM 机型 LinuxServer,不同的机器上运行不同的 LinuxServer
服务端成功启动后,会默认监听 7777 UDP 端口,可以通过在外部机器上运行以下命令测试端口是否可达
启动体验客户端
先将体验客户端连接到 DS,避免 Bot 客户端占满所有资源导致体验客户端无法登录。
用类似以下命令启动体验客户端并连接 DS
WindowsClient 就是 UE 打包的 Development Windows Client
在游戏中按下 `
键打开 console,输入 stat fps
将帧率打印在客户端右上方,类似如下
启动 Bot 客户端
通过 python boto3 ssm.sent_command 对 120 台客户端执行命令,核心逻辑如下
- 不同的 bot 访问不同的 server_ip(每个 server 分配 20 个 bot client)
LinuxClient-Developer
是 UE 打包的 LinuxClient- 在 Ubuntu 的机器上用 ubuntu 用户运行 LinuxClient(LinuxClient 有一些依赖无法用 root 运行)
Bot 客户端连到 DS 后会对 DS 增加很高的负载,同时可以看到服务端打印出 server full
,类似如下
此时压测已开始,用体验客户端在游戏内进行测试,并且记录 FPS。
测试数据统计
r7i.2x | r7a.2x | r7g.2x default | r7g.2x opt | r8g.2x default | r8g.2x opt | |
CPU Usage | 78.92% | 74.30% | 97.34% | 90.36% | 76.01% | 75.50% |
FPS | 31.8 | 32.68 | 30.2 | 35.2 | 35.23 | 37.2 |
Performance score (Idle cpu + FPS) |
52.88 | 58.38 | 32.86 | 44.84 | 59.22 | 61.7 |
On-Demand Hourly Cost | 0.5292 | 0.6086 | 0.4284 | 0.4284 | 0.47128 | 0.47128 |
Performance price score | 99.92 | 95.93 | 76.7 | 104.67 | 125.66 | 130.92 |
可以看到 Graviton 4 的实例配合编译优化,可以获得更高的性价比。
在对局最激烈的过程中,聚合 15min CPU 的平均值如下
总结
Epic Games 和 Amazon Web Services 的合作,在 UE 引擎上支持 ARM 架构的编译,帮助广大 UE 的开发者可以很方便地享受到 Graviton 实例带来的性价比。而使用 Amazon Web Services 最新发布的 Graviton 4 实例,让 UE Dedicated Server 运行的性价比进一步提升。
本文介绍了通过 Lyra Starter Game UE5 Dedicated Server 在不同机型上压测的性能表现,展示了 Graviton 4 实例在 UE Dedicated Server 应用下的极致性价比,欢迎更多的 UE 开发者测试 Amazon Web Services Graviton 4 实例并感受它带来的性价比提升。