Benchmark Report
Main thread saturated · Redstone
One game thread is already over its tick budget under the benchmark's own load. Players and redstone will push it further.
- mspt_avg = 50.1 ms
- mspt_target = 35 ms
Weakest test: Mob AI, 19.03 TPS on average. The 15 other tests hold at least 19.64 TPS.
What matters
Read from the measurements, never estimatedMain thread saturated
One game thread is already over its tick budget under the benchmark's own load. Players and redstone will push it further.
Likely cause: single core
- mspt_avg = 50.1 ms
- mspt_target = 35 ms
Non-default server configuration
Compare with care against a server running default settings.
- simulation-distance 6 (default 10)
- spawn-limit.water-ambient 15 (default 20)
Main thread saturated
One game thread is already over its tick budget under the benchmark's own load. Players and redstone will push it further.
Likely cause: single core
- mspt_avg = 50 ms
- mspt_target = 35 ms
Test by test
Problems first — select a row for the full test- RedstoneSingle-Core Stress19.95StableCritical
- Network (NBT)Network19.95StableUnstable
- Block PhysicsSingle-Core Stress20.00StableUnstable
- Mob AIEntities19.03StableHealthy
- Lighting UpdateExploration19.64StableHealthy
- World SaveMechanics19.80StableHealthy
- ExplosionMechanics19.86StableHealthy
- Chunk LoadingExploration19.87StableHealthy
- HopperMechanics19.93StableHealthy
- Bone Meal GrowthMechanics19.94StableHealthy
- Chunk TickingExploration19.97StableHealthy
- Ticking Tile EntitiesMechanics19.97StableHealthy
- Disk PerformanceMemory & Storage20.00StableHealthy
- Memory PerformanceMemory & Storage20.00StableHealthy
- Multi-Core CPUCPU20.00StableHealthy
- Single-Core (tick-aligned)CPU20.00StableHealthy
Settings your measurements justify
Each setting below is triggered by a measurement from this report, and names the test to replay to find out whether it helped.
Stop firing an event on every hopper move
hopper.disable-move-event: trueMeasured : hopper.mspt.avg 50.2 ms (threshold 35.0 ms)
The hopper test spends more time per tick than the budget allows. Paper fires an inventory-move event for every transfer; turning it off removes that call for plugins that never listen.
Test to replay : hopper
Switch the redstone implementation
misc.redstone-implementation: ALTERNATE_CURRENTMeasured : redstone.mspt.avg 50.1 ms (threshold 35.0 ms)
Redstone costs more per tick than the budget allows. Paper ships an alternative wire implementation that computes the same result without the repeated updates of the vanilla one.
Test to replay : redstone
Shrink the monster activation range
world-settings.default.entity-activation-range.monsters: 24Measured : mobAI.mspt.avg 52.5 ms (threshold 35.0 ms)
Mob AI costs more per tick than the budget allows. The activation range decides how far from a player a monster keeps thinking; shrinking it puts distant ones to sleep without removing them.
Test to replay : mobAI
Cap the TNT processed per tick
world-settings.default.max-tnt-per-tick: 40Measured : explosion.mspt.avg 50.4 ms (threshold 35.0 ms)
Explosions cost more per tick than the budget allows. Capping how many primed entities are processed per tick spreads a large blast over several ticks instead of one long freeze.
Test to replay : explosion
Lower the monster spawn limit
spawn-limits.monsters: 50Currently : 70
Measured : mobAI.mspt.avg 52.5 ms (threshold 50.0 ms)
Mob AI is past the critical cost per tick, where shrinking the activation range is no longer enough. The spawn limit caps how many monsters exist per player at all, which is the only setting here that reduces the work rather than deferring it.
Test to replay : mobAI
Lower the simulation distance
simulation-distance: 4Currently : 6
Measured : chunkTicking.mspt.avg 50.1 ms (threshold 50.0 ms)
Chunk ticking is past the critical cost per tick. The simulation distance decides how many chunks tick around each player; lowering it a notch is the bluntest lever here and the one players notice, so it is offered only when the value in use is known.
Test to replay : chunkTicking
These settings trade a little gameplay fidelity for tick budget. Apply one at a time and replay the named test: the effect stays a hypothesis until you have measured it.
Briefing for a language model
Paste this into the assistant of your choice to have it rewritten in prose. It already carries every number, so the model has none left to invent.
{
"format": "voxelbench.tuning.v1",
"instruction": "Rewrite each recommendation below as plain prose for a server operator. Every number you are allowed to use is already in this document: the measured value, its threshold, and the proposed setting. Do not compute, estimate or predict any other number, and never state an expected gain. Keep every setting name and value exactly as written.",
"server": {
"type": "folia",
"minecraft": "1.21.0",
"java": "25.0.4"
},
"recommendations": [
{
"id": "paper.hopper-sans-evenement",
"family": "paper",
"measure": "hopper.mspt.avg",
"value": 50.2,
"unit": "ms",
"threshold": 35,
"control_test": "hopper",
"file": "config/paper-world-defaults.yml",
"setting": "hopper.disable-move-event",
"proposed_value": "true",
"current_value": null
},
{
"id": "paper.redstone-alternatif",
"family": "paper",
"measure": "redstone.mspt.avg",
"value": 50.1,
"unit": "ms",
"threshold": 35,
"control_test": "redstone",
"file": "config/paper-world-defaults.yml",
"setting": "misc.redstone-implementation",
"proposed_value": "ALTERNATE_CURRENT",
"current_value": null
},
{
"id": "spigot.portee-activation-monstres",
"family": "spigot",
"measure": "mobAI.mspt.avg",
"value": 52.5,
"unit": "ms",
"threshold": 35,
"control_test": "mobAI",
"file": "spigot.yml",
"setting": "world-settings.default.entity-activation-range.monsters",
"proposed_value": "24",
"current_value": null
},
{
"id": "spigot.tnt-par-tick",
"family": "spigot",
"measure": "explosion.mspt.avg",
"value": 50.4,
"unit": "ms",
"threshold": 35,
"control_test": "explosion",
"file": "spigot.yml",
"setting": "world-settings.default.max-tnt-per-tick",
"proposed_value": "40",
"current_value": null
},
{
"id": "bukkit.limite-monstres",
"family": "bukkit",
"measure": "mobAI.mspt.avg",
"value": 52.5,
"unit": "ms",
"threshold": 50,
"control_test": "mobAI",
"file": "bukkit.yml",
"setting": "spawn-limits.monsters",
"proposed_value": "50",
"current_value": "70"
},
{
"id": "serveur.distance-de-simulation",
"family": "serveur",
"measure": "chunkTicking.mspt.avg",
"value": 50.1,
"unit": "ms",
"threshold": 50,
"control_test": "chunkTicking",
"file": "server.properties",
"setting": "simulation-distance",
"proposed_value": "4",
"current_value": "6"
}
]
}Every measurement
Each test in full. Tests in trouble are open; the others fold to their summary line.
Single-Core Stress
RedstoneCritical19.95 TPS50.1 ms35.1s
Single-core stress via intensive redstone circuit updates.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 18 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.95 TPS
- Worst sustained MSPT
- 50.1 ms
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.0 %
Raw data (10 fields)
Block PhysicsUnstable20.00 TPS50.0 ms25.2s
Single-core stress via falling-block physics.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 14 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 20.00 TPS
- Worst sustained MSPT
- 50.6 ms
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.0 %
Raw data (16 fields)
Exploration
Chunk LoadingHealthy19.87 TPS50.3 ms7.4s
Chunk generation and loading speed across dispersed zones.
- low_samples: Only 7 samples collected
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 8
- Seconds measured
- 6 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.87 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 16.2 %
Raw data (5 fields)
Chunk TickingHealthy19.97 TPS50.1 ms34.3s
Server performance when ticking many loaded chunks with random tick updates.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 28 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.97 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.0 %
Raw data (10 fields)
Lighting UpdateHealthy19.64 TPS50.9 ms8.9s
Lighting recomputation throughput on block place / break.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 8
- Seconds measured
- 7 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.64 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.6 %
Raw data (5 fields)
Entities
Mob AIHealthy19.03 TPS52.5 ms30.3s
Complex mob AI behaviours (villagers, iron golems, hostile mobs).
- Unfiltered samples usedUsing unfiltered samples (filter rate: 100%)
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 23 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.04 TPS
- Worst sustained MSPT
- 252.3 ms
- Time degraded
- 4.3 %
- Seconds degraded
- 1 s
- Ticks over budget
- 2.5 %
Raw data (26 fields)
Mechanics
HopperHealthy19.93 TPS50.2 ms14.0s
Intensive hopper chain item transfers.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 8
- Seconds measured
- 12 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.93 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.0 %
Raw data (16 fields)
ExplosionHealthy19.86 TPS50.4 ms6.7s
Massive TNT explosions and block destruction.
- Heavy garbage collection3 collections, 73ms total
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 8
- Seconds measured
- 5 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.85 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 2.3 %
Raw data (61 fields)
Ticking Tile EntitiesHealthy19.97 TPS50.1 ms36.3s
Many ticking tile entities (furnaces, hoppers, etc.).
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 8
- Seconds measured
- 28 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.97 TPS
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.0 %
Raw data (7 fields)
World SaveHealthy19.80 TPS50.5 ms4.9s
World save speed and TPS impact during save operations.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 3 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.80 TPS
- Worst sustained MSPT
- 50.7 ms
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 1.0 %
Raw data (5 fields)
Bone Meal GrowthHealthy19.94 TPS50.1 ms23.4s
Rapid crop and tree growth via bone meal.
Percentiles and stability
The regions of the test's zones. Each figure is the worst region's.
- Regions measured
- 1
- Seconds measured
- 22 s
- Median TPS
- 20.00 TPS
- Effective TPS
- 19.94 TPS
- Worst sustained MSPT
- 56.2 ms
- Time degraded
- 0.0 %
- Seconds degraded
- 0 s
- Ticks over budget
- 0.6 %
Raw data (11 fields)
CPU
Single-Core (tick-aligned)Healthy20.00 TPS2.1 ms10.0s
Single-thread compute throughput measured on the main thread under the tick scheduler.
Percentiles and stability
Raw data (6 fields)
Multi-Core CPUHealthy20.00 TPS0.0 ms7.6s
Parallel computation throughput across worker threads.
Percentiles and stability
Raw data (7 fields)
Memory & Storage
Memory PerformanceHealthy20.00 TPS0.1 ms25.3s
RAM bandwidth and latency.
JVM measurements — do not reflect actual bare-metal performance.
Percentiles and stability
Raw data (7 fields)
Disk PerformanceHealthy20.00 TPS0.1 ms30.0s
Sequential and random 4K read/write performance.
JVM measurements — do not reflect actual bare-metal performance.
Percentiles and stability
Raw data (6 fields)
Network
Network (NBT)Unstable19.95 TPS16.0 ms20.0s
Serialisation throughput — proxy for the rate at which the server can ship world data to clients.
- Heavy garbage collection4 collections, 38ms total
- The run did not hold steadyTPS P1=14.81<15, TPS min=14.81 (74% of avg)
Percentiles and stability
Raw data (7 fields)
›Machine and serverAMD Ryzen 9 9950X3D 16-Core Processor · Folia · 1.21.0
Score Breakdown
Detailed sub-category scores