使用矮人要塞进行云服务器性能测试

矮人要塞是一款传奇游戏,可以详细模拟幻想世界,玩家(在其中一种模式下)可以构建和管理侏儒(矮人)的住所(堡垒)。 关于该游戏的文章已经足够了,所以我将不做详细介绍。 重要的是,由于游戏世界很大且模拟的细节很高,因此游戏对资源(处理器和内存/高速缓存)的要求非常高。 该游戏支持所有三个主要操作系统。

该游戏有一个DFHack项目,该项目从事游戏数据结构的逆向工程,并允许您使用C ++,Lua或Ruby创建插件和脚本。

我是该应用程序以及随附的服务器代码的作者,该服务器代码在iOS设备上完全实现了游戏的用户界面。 也就是说,用户放置了原始游戏,插件和应用程序,并且可以从具有所有便利设施的移动设备上远程玩游戏。

该服务器既可以在家中安装,也可以从其中一个云提供商处租用。 这项研究的想法诞生了:首先,找出哪种云服务更适合并首先推荐给用户;其次,使用不同于Web服务器和特殊实用程序的东西来实际比较服务器性能。 。

为了进行测试,使用了矮人要塞/ DFHack 0.43.03-r1版本。 我对Docker有一个公共映像,包括游戏本身和DFHack的最低版本(以及远程游戏的服务器代码本身,但在这种情况下不使用)。 用Lua编写了一个脚本来运行测试并将结果发送到Web服务器。 同样对于自动化,使用了以下脚本,该脚本在配置服务器时在用户数据中指定。 也就是说,您只需要创建一个服务器,等待结果到达并删除它即可。

#!/bin/bash fallocate -l 4G /swp ; chmod 600 /swp ; mkswap /swp ; swapon /swp ; echo '/swp none swap sw 0 0' >>/etc/fstab apt-get update apt-get install -fy docker.io apt install unzip wget https://github.com/mifki/dfremote-cloud-benchmark/raw/master/benchmark.lua wget http://mifki.com/a/t/gloveloved.zip unzip gloveloved.zip -d save/ docker run --name=df -dt -v $PWD/save:/df_linux/data/save -v $PWD/benchmark.lua:/df_linux/hack/scripts/benchmark.lua mifki/dfremote sleep 5 docker exec df /df_linux/dfhack-run benchmark server_name 

测试了以下提供商:Digital Ocean,Amazon Lightsail,Amazon EC2,Vultr,Linode,Google Compute Engine和Macbook Pro 2013年末2Ghz Core i7。

如果云服务支持一键式使用Docker创建服务器,则使用此功能,否则,请选择Ubuntu 16.04版本。 因此,只有Vultr不使用Ubuntu,而CentOS7。对于具有2GB以上内存的服务器,不使用交换文件。 对于小型的Google Compute Engine,选择了一个SSD驱动器。

选择最便宜的服务器选项,首先是因为它们对将要用于游戏的人更有趣,其次,因为Dwarf Fortress仍仅使用一个处理器内核进行仿真,并且(在指定版本中) 32位应用程序。

测验


玩矮人要塞的过程包括两个部分-世界的产生和初始故事,您可以在其中指定世界的大小和故事的长度(以及其他参数)以及游戏过程本身。 一致地,在不重新启动游戏的情况下,执行了以下测试:

  1. 产生一个历史非常悠久的小世界。
  2. 产生历史短的大世界。
  3. 游戏性。 使用“小组”(许多人轮流玩耍)之一的储蓄-戴手套的人(Anethadefíni,254)。 选择没有那么重要,只要有足够大的堡垒,并且在持续20天的测试期间,不会自动停止游戏的任何事情都不会发生。

最后一个测试是最重要的,首先,因为它是游戏本身,因此一切都会发生;其次,它受机会的影响要小于世界的一代(文明,定居点,景观,事件和事件,依此类推)。

结果


这是时间表。 执行时间分别以秒为单位,越少越好。 每月价格(美元)。

图片

可以立即看到第一个测试结果中的不自然分布,我不知道这到底与什么有关。 我相信,部分原因是缓存,部分原因是新创建的服务器的性能不佳。 因此,结果是按最重要的最后测试排序的。 第二个测试通常也与第三个测试的结果相关。

除了与性能优化的C4类型有关的EC2 c4.large服务器上的预期第一名之外,Amazon Lightsail证明是最快的,考虑到价格,这真是令人惊喜。 紧随其后的是来自Google的单处理器服务器和笔记本电脑的结果。 此外,我还期望从以前未知的Vultr Linode获得良好的成绩。 观众奖授予了数字海洋-速度较慢,但​​使用起来最简单,最快。 相当昂贵的EC2 m3.medium服务器出奇的慢,而最便宜的GCE服务器即使有SSD也确实很糟糕,我没有得到测试微型服务器的结果。

另外,必须说一下T2类型的EC2实例。 它们的特征是使用简单的服务器即可接收处理器信用(达到一定限制),这些信用在负载下消耗。 花费贷款后,服务器用完后服务器将满负荷运行-性能下降到20%。 一方面,它非常适合我们的目的-人们(尤其是来自移动设备的人们)不会整天连续玩游戏,另外,当人们在菜单上执行某项操作时,游戏中的模拟也会停止,等等,因此这是获得游戏的好选择高性能,花很少的钱。 另一方面,这是“伪”性能,因此在测试中未包括此类实例,以免混淆任何人。 从经验来看,只要有贷款,它们用尽的速度就非常快-非常慢。

仅此而已。

Source: https://habr.com/ru/post/zh-CN401485/


All Articles