欢迎光临散文网 会员登陆 & 注册

Minecraft服务端性能测试:容器与虚拟化(host)

2023-07-27 14:34 作者:橫眉冷對千夫指  | 我要投稿
本文是容器与虚拟化(kvm64)的续集。

一、测试环境

测试分为四组:宿主机、LXC容器、虚拟机(12线程)、虚拟机(6线程)。虚拟机的CPU类型改为host,其他方面与容器与虚拟化(kvm64)相同。

二、测试项目

1.    侦测器音符盒

增加了有效层数。

图1 侦测器音符盒信号链测试

2.    漏斗

图2 漏斗测试

3.    村民

以村民代表实体。尝试降低村民走动带来的mspt波动。

图3 村民测试

4.    TNT

用命令方块循环填充玻璃、生成TNT爆炸。方块从雪块改成玻璃,原因是玻璃被炸不掉落物品,也不产生光照更新。

图4 TNT测试

5.    活塞

完全重构了活塞测试。

图5 活塞测试

五项测试中,仅有活塞测试包含了光照更新。后面我们也会看到,服务端仅在活塞测试中有明显的多线程调用。

三、测试流程

启动计算机。

启动容器或虚拟机(如果是容器或虚拟机测试)。

启动Minecraft服务端。每次启动均使用完全相同的存档,而不是上次测试结束后的存档。

tick warp 12000
player Steve spawn at -864 32 -864 #侦测器音符盒
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 1000 256 1016 #漏斗
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 1000 24 -1000 #村民
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve -1000 256 1000 #TNT
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 2000 7 0 #活塞
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt

停止Minecraft服务端。

关闭容器或虚拟机(如果是容器或虚拟机测试)。

关闭计算机。

上述流程在每组中重复了16次,共64次。

接下来看看这种流程中的CPU占用。图6由上至下分别是宿主机、LXC容器、虚拟机(12线程)、虚拟机(6线程)的CPU占用情况。明显可见,前四项测试均为12线程处理器典型的单线程占用,而活塞测试调用了更多的线程,合理推断这些额外的线程被用于计算光照更新。此外,宿主机与容器在活塞测试中的占用更低(20%-25%),虚拟机(6线程)占用略高(~30%),虚拟机(12线程)占用最高(~35%)。

图6 CPU占用情况

四、测试结果

测试得到的数据如下。

图7 测试数据

做可视化处理。

图8 mspt(绝对值)最大值、均值和最小值,越小越好

将各项测试的数据除以宿主机的平均值得到相对值。

图9 相对值

做可视化处理。

图10 mspt(相对值)最大值、均值和最小值,越小越好

五、总结

五项测试中LXC容器均有不同的性能衰减。侦测器音符盒、漏斗、TNT测试中虚拟机与宿主机性能几乎完全相同,村民测试中虚拟机性能表现甚至优于宿主机,但在活塞测试中虚拟机有约10%的性能衰减,6线程虚拟机表现比12线程虚拟机更好,但差距不大。

至于为什么在活塞测试中虚拟机占用更高、表现更差呢?我暂时没有什么头猪。



Minecraft服务端性能测试:容器与虚拟化(host)的评论 (共 条)

分享到微博请遵守国家法律