Minecraft服务端性能测试:CPU红蓝对决

这段时间持续性地听说一些关于intel和AMD处理器在Minecraft服务端性能方面的流言,我决定做一回流言终结者,用实际测试搞清楚情况,同时以此指导我自己下一台服务器的配置。必须提前声明:本次测试是基于我自己的条件,服务于我自己的需求。
一、测试环境
红方为 Ryzen 5 5600X(定频4.6GHz);蓝方为 Core i5-12500(无温度/功耗墙)。
测试双方使用不同的内存条,但内存参数均如图1,基本保持一致。

测试使用同一块固态硬盘,操作系统为 Proxmox VE 7.4-16,Java 版本为 17.0.7,服务端为 1.15.2 fabric 端,安装的模组如图2,除 -Xms8G -Xmx8G 外无其他启动参数。

下面回答一些可能的问题。
①为什么是 12500 和 5600X ?
答:我只有这两个门当户对的CPU,它们都是六核十二线程,也能在大致相近的水平上分别代表大二缓的“intel模式”和大三缓的“AMD模式”。
②为什么是DDR4内存?内存参数有什么讲究?
答:我目前没有使用DDR5内存的打算,尤其是在服务器上。内存参数放得很宽,主要由于红方使用的内存条年代久远,无法再收紧了。
③这是什么操作系统?
答:PVE是一个着重于虚拟化的服务器系统,使用它是因为后续要进行虚拟化相关测试,但本次测试还未涉足虚拟化。在这里,你把它当成Debian GNU/Linux就行了。
④为什么是Java17?为什么是1.15.2?为什么装这些模组?
答:服务于我自己的需求。
二、测试项目
1. 侦测器音符盒

2. 漏斗

3. 村民
以村民代表实体,在房间边缘用藤蔓防止计划外人口损失。

4. TNT
用命令方块循环填充雪块、生成TNT爆炸、清除物品实体。

5. 活塞

三、测试流程
启动计算机。
启动Minecraft服务端。每次启动均使用完全相同的存档,而不是上次测试结束后的存档。
tick warp 12000
player Steve spawn at -855.5 15.0 -839.5 #侦测器音符盒
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 1000.0 256.0 1016.0 #漏斗
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 1000.0 256.0 -1000.0 #村民
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve -1009.5 249.0 993.5 #TNT
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
tp Steve 1999.5 4.0 18.5 #活塞
tick warp 12000 #记录输出的mspt
tick warp 12000 #记录输出的mspt
停止Minecraft服务端。
关闭计算机。
上述流程重复了四次。按时间顺序,第一、三次是蓝方测试,第二、四次是红方测试。这种测试方式的目的是排除更换平台导致的偶然因素,同时获取可以相互验证的测试结果。
四、测试结果
测试得到的数据如图8。

除活塞测试外,前四项测试的结果基本可以相互验证,排除了偶然因素。活塞测试的结果比较诡异,但我还是放出数据,由读者自行判断。下面只处理前四项的数据。

将所有数据除以蓝方平均值得到相对值。

五、总结
图9和图10已经很直观了。
关于活塞测试为什么出现这种异常,我没有什么头猪,后续可能会放弃这一项目。
侦测器音符盒、漏斗、TNT三项中,蓝方相对于红方的优势与理论性能优势基本相符,但在TNT测试中被红方扳回一局,某些流言中蓝方大幅碾压红方的情况并没有出现。
累死了,这点东西我是怎么写了一晚上的。