“新多线程系统”全面解析
戴森球计划制作组
编辑于 2025年09月30日 13:58
戴森球计划性能测试

🌌 新多线程系统设置指南

在本次更新中,我们全面重制了多线程系统,并且提供了各种选项供玩家自定义多线程系统的策略。这些选项可以通过【深度性能分析工具】(从性能测试(CPU)中,点击【深度分析】按钮进入)或者【游戏设置】中的多线程系统高级设置进行设置。

在测试阶段,有不少玩家对应该如何设置多线程系统感到困惑,下面我们将分享一些常用的设置方案

对于不想折腾的玩家,可以直接使用默认设置。但如果默认设置带来了一些卡顿问题,可以尝试使用以下的设置:

●主线程绑定策略:系统自动分配

●工作线程绑定策略:可使用任何核心

●线程帧绑定策略:混合等待

●线程阶段绑定策略:混合等待

这个设置非常通用,适用于大部分的情况。

接下来是一些比较深入的设置分享:

🎨普通架构:指CPU不存在大小核之分的架构。

 如果追求游戏性能,可以做如下设置:

●主线程绑定策略:绑定第一个物理核心(共享)

●工作线程绑定策略:轮询绑定每个处理器

●线程帧绑定策略:混合等待

●线程阶段绑定策略:混合等待

如果同时开启的应用较多,需要为其他应用保留算力,可以做如下设置:

●主线程绑定策略:绑定第一个物理核心(共享)或绑定第一个物理核心(独占)

●工作线程绑定策略:轮询绑定每个核心(除最后一个)

●线程帧绑定策略:混合等待

●线程阶段绑定策略:混合等待

🔡 混合架构:指CPU明确区分了性能核和能效核的架构。

如果追求游戏性能,可以做如下设置:

●主线程绑定策略:绑定第一个性能核心(共享)

●工作线程绑定策略:轮询绑定一个性能核或两个能效核

●线程帧绑定策略:混合等待

●线程阶段绑定策略:混合等待

如果同时开启的应用较多,需要为其他应用保留算力,可以做如下设置:

●主线程绑定策略:绑定第一个性能核心(共享)或绑定第一个性能核心(独占)

●工作线程绑定策略:轮询绑定每个核心(除最后一个)

●线程帧绑定策略:混合等待

●线程阶段绑定策略:混合等待

以上是一些通用的设置方案,不同的硬件情况可能会导致一定的性能波动,并不代表是最优设置。

当然,为了让硬核玩家更好地去调试,找到自己最适合的策略,我们还开发了自定义掩码功能,这项功能允许玩家针对单一线程的CPU绑定策略进行自定义设置。

这项功能可以通过多线程系统高级设置中进入,将线程绑定策略设置为“自定义线程绑定核心”后,就可以对每个线程的绑定策略进行修改。

如图所示:

工作线程掩码00指正在对工作线程00进行设置;[0] 11000000 0000是该线程的掩码,[0]是线程分组(通常来说只需要设置为0,除非线程数量大于64);后面的掩码指对每一个逻辑处理器的设置,1代表允许在该处理器上运行,0代表不允许在该处理器上运行。上面的设置指对于工作线程00,可以在第一和第二个逻辑处理器(即CPU0, CPU1)上运行,而无法在其他逻辑处理器上运行。

这项设置也可以在【深度性能分析工具】中,点击每一个线程进行设置。

对于想进一步了解每一个设置选项的玩家,我们在多线程系统高级设置中针对每个选项也做了说明。玩家可以参考说明进行调试。

🌌 技术介绍

在之前的开发和维护当中,我们感觉到现在的程序性能已逼近极限。如果将来实装载具系统,游戏中可能会多出上千个需要进行物理模拟的组件,超过我们原有的多线程系统的能力。

旧版多线程系统在设计上就存在一些硬伤:任务类型支持少、每阶段同步开销大,且强行拆分逻辑线程化收益低、维护成本高。贸然将某个逻辑转为多线程,性能上未必有足够大的提升,还会大大增加代码的维护难度。因此,最近我们对《戴森球计划》的多线程系统进行全面优化,为载具系统的后续开发铺路。以下为大家介绍这套全新系统的特性。

1. 可自定义的核心绑定:以前的多线程系统中,线程是由操作系统自动分配核心:这些近乎黑箱的机制让我们的程序几乎无法掌控多线程的内部分配逻辑,出现处理器核心利用不充分的情况。现在玩家可手动指定线程绑定核心,避免系统调度带来的性能浪费。

(多线程系统定制策略界面)

2. 动态分配任务:现在玩家可手动指定线程绑定核心,避免系统调度带来的性能浪费。先为每个线程大致均匀地分配任务,完成了任务线程会分担其他线程的任务,直到负载趋于均衡。

(即使有时有一个线程开始得缓慢,但基本所有的线程都同时结束了运算)

3. 更灵活的框架设计:不再限制“一次多线程阶段只能执行一种任务”,而是将逻辑拆分为多种任务并灵活组合,使得”一阶段,多任务”的成立。这样的设计能够配合多种方案使用,比如让多个任务并行处理。或是,以往只能放在主线程的逻辑,现在也能更灵活地“藏”在其它设施逻辑下运行。又或是,不便动态分配的任务可以与可动态分配的任务搭配执行,把原本空闲的 CPU 时间利用起来。

(流速监测器、喷涂机、物流站的传送带出口逻辑并行以后总计占用了不到0.1ms)

4. 多线程通信等待机制:在新系统中,我们使用了响应更快的自旋锁(约10ns)来链接任务,并且混合了自旋-阻塞两种模式。在代码执行时间极短的场景中使用自旋锁,在需要长时间占用CPU的场景中使用阻塞锁,尽可能减少任务的结束与开始间存在的响应延迟。

(新多线程等待时间 <左> 明显比旧多线程 <右> 更短)

5. 全新性能分析工具:由于完全重制了游戏的主干逻辑流程,不同种类的任务现在可以并行运算,为了适配新的逻辑结构,我们还提供了一个全新的性能分析工具。通过它,可以很清晰地看到新逻辑的运行方式与效率。

这个性能工具可以通过从性能测试(CPU)中,点击【深度分析】按钮进入。

上图就是性能分析工具的界面了,它可以帮助玩家了解游戏中每一帧的线程工作情况。横轴代表着游戏的运行时间,每一行则对应一个线程,线程上不同的颜色块代表不同的计算任务。鼠标悬浮上去可以看到这些任务的具体开销,包括任务起始结束的时间和任务执行的时长,方便玩家观察具体的逻辑运行效率。

以上节选自我们之前发布的关于这次多线程系统更新的开发日志,更多细节可以移步到这里查看:开发日志-新多线程框架​

在游戏圈里,我们永远不知道玩家会带来怎样的惊喜。在公开测试期间,我们就遇到了这样一位“大神”玩家——他竟然用线程撕裂者CPU来运行我们的多线程版本!

这位玩家不仅给我们带来了震撼,还带来了一份宝贵的反馈:我们的游戏似乎无法支持超过64个线程。于是我们立刻定位并修复了这个“幸福的烦恼”。

故事还没完!面对如此高端的硬件,我们制作组内部却犯了难:我们根本没有这样的“神级装备”来测试啊!于是,我们做了一个大胆的决定——厚着脸皮向这位玩家求助,希望能“借”他的顶级CPU跑一轮性能测试。

(在680W宇宙矩阵存档上的运行效率)

从截图来看,游戏在“线程撕裂者”上似乎与消费级CPU拉不开差距。经过一番追问,我们找到了答案:玩家的内存是DDR4-2666。看来,性能的瓶颈大概率是卡在内存上了!

那么,问题来了:接下来要如何优化?又该用什么平台来验证我们的优化成果呢?

就在我们一筹莫展之际,我们联系了AMD。令人惊喜的是,他们慷慨地伸出了援手,为我们寄来了一台性能怪兽——一台搭载了线程撕裂者PRO 9985WX的整机!

光看参数就让人热血沸腾:64个核心,128个线程,基准频率3.2 GHz,最高加速可达5.4 GHz,并且最多支持8条内存通道!这简直就是为我们量身定做的终极测试平台!

😿可惜受台风天气影响,这台性能猛兽还在快递途中。请大家和我们一起耐心等待开箱时刻!

待这台“神器”到位后,我们将会立刻投入工作,在这套怪兽级硬件上进行深度的专项优化与测试。如果你也是一位拥有线程撕裂者的玩家,请务必保持关注,我们为你准备的优化,马上就来!(当然,对于消费级的CPU表现也会有提升)

🌌 注意事项

问:遇到bug怎么办?

答:如果您遇到了 bug,请先确认游戏是否处于纯净状态(未使用Mod)。建议您尝试完全移除 Mod 并重启游戏后再次测试。如果确认是在纯净环境下发生的 bug,欢迎加入我们官方的BUG反馈群777178167,向管理员反馈问题,我们会及时的进行相关整理并修复。

问:旧存档能够和新多线程系统的版本无缝衔接吗?

答:旧存档可以直接进入新版本中进行游戏,不需要重开新档。但是为了预防不可知的情况,我们建议在更新之前及时备份存档。

默认存档路径(若未手动修改过path文件设置路径):

%USERPROFILE%\Documents\Dyson Sphere Program\Save\

问:原来的Mod还能使用吗?

答:本次更新完全重制了游戏的主干逻辑,有大面积代码改动,会造成大部分Mod与本体的冲突。如果之前使用过Mod,建议在更新前备份存档和Mod,更新的时候保证游戏文件是未修改过的,不然可能出现各种无法预料的错误。

问:性能提升主要提升了哪些方面?我该怎么感受?

答:主要在CPU的“游戏逻辑帧”部分有了较大的提升。在开发日志中我们也做了一个性能展示,逻辑帧提升较大。如果存档中存在较大的工厂或者战斗比较激烈,直观感受会更强。

问:如果我调整了多线程设置感觉更卡了怎么办?

答:首先尝试回复默认设置(包括逻辑帧和渲染帧比例调节)。除此之外还可以查看我们的设置指南。如果对性能有更高的追求,可以加入我们的官方qq群,与群友、管理进行讨论,找到最合适自己的设置方法。

问:为什么在更新后游玩游戏时,看到游戏中逻辑帧执行时间反而比更新前更长了?

答:对于本身运行已经非常流畅的存档(逻辑帧执行时间小于 5ms),新系统的显示数值可能会稍有增加。但只要维持在 5ms 左右,玩家在实际体验上是没有差别的。真正的提升主要体现在原本较卡顿的情况(逻辑帧小于60,执行时间大于8ms),新系统能带来明显的改善。