跳到正文

Incremental Player Save

作者:ExtraJuiceMan

Implements incremental player saving to smooth out MSPT spikes from saving player data to disk in PlayerManager.saveAllPlayerData()

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

Incremental Player Save

A mod to eliminate MSPT spikes caused by player data auto-save on Minecraft servers.

What It Does

Minecraft’s auto-save calls net.minecraft.server.PlayerManager.saveAllPlayerData() once per save interval, writing every online player’s data to disk in a single tick. On servers with many players or with a lot of player data, this can cause a large MSPT spike.

Incremental Player Save fixes this by spreading player saves across multiple ticks, saving a small batch of players per tick rather than all at once. This mod was inspired by Paper’s incremental player saving feature.

Who This Is For

Install this mod if you see any of the following:

  • Regular MSPT spikes every auto-save interval (default: every 6000 ticks / 5 minutes)
  • net.minecraft.server.PlayerManager.saveAllPlayerData appearing in Spark profiler results during spikes

This mod targets only player .dat file writes. It will not reduce spikes from chunk saving or other auto-save work.

Configuration

All options are in the mod’s config file in `config/incrementalplayersave.json`

| Option | Description | Default |
|—|—|—|
| ticksBetweenSaveAttempts | How often (in ticks) the mod checks which players are due for a save | 20 |
| ticksBetweenSavesPerPlayer | Minimum ticks between saves for any individual player | 6000 |
| maxPlayersSavedPerAttempt | Maximum number of players saved per attempt. Controls per-tick save cost | 3 |
| enableDebugLog | Log save actions to console | false |

Other Notes

  • Some optimization mods may include similar functionality. Use Spark to confirm whether saveAllPlayerData still appears in your profiles before installing. On my server with many optimization mods like Lithium, none of them alleviated the tick spike caused by PlayerManager.saveAllPlayerData().
  • net.minecraft.server.PlayerManager.saveAllPlayerData() is net.minecraft.server.players.PlayerList.saveAll() in Mojang Mappings.

常见问题

Incremental Player Save 支持哪些 Minecraft 版本?

Incremental Player Save 支持 Minecraft Java 版 1.21.11–26.2,共 3 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

Incremental Player Save 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分

ExtraJuiceMan 的其他作品

查看全部 →