When comparing Minecraft server hosting plans, CPU allocation deserves as much attention as RAM. On a conventional Java server, a modded world's main simulation path must normally finish each tick within 50 milliseconds to sustain the target rate of 20 ticks per second (TPS). When average tick work exceeds that budget, the server falls behind. More RAM, faster storage or a better network route will not fix a CPU-bound tick.
That does not mean you should shop for the highest clock speed and stop thinking. CPU architecture, shared versus dedicated logical cores, behaviour under sustained load and the work performed by your mod list all matter.
What TPS and MSPT Actually Measure
On a conventional Java server, most game simulation work is coordinated through a tick loop. The spark documentation explains that a healthy server targets 20 TPS, which gives it an average budget of 50 milliseconds per tick. If average processing time rises beyond that budget, TPS begins to fall.
MSPT, or milliseconds per tick, measures how long the server takes to process ticks. TPS can remain at 20 while average MSPT stays at or below 50, although individual spikes can still cause visible stutter. As a practical guide:
- An average MSPT near 20 indicates substantial headroom.
- An average MSPT near 45 can still sustain 20 TPS, but leaves little room for chunk generation or other spikes.
- A sustained average MSPT near 80 equates to roughly 12.5 TPS, so mobs, hoppers, crop growth and redstone all run more slowly because many game processes are measured in ticks rather than seconds.
That is why low TPS feels wrong to players rather than merely looking bad on a graph. Furnaces smelt more slowly, crops take longer to grow and mob actions are delayed. The world does not drop frames; its simulation falls behind real time.
Common server-side causes include hoppers repeatedly checking inventories, large redstone systems triggering block updates, heavy mob populations running AI and a randomTickSpeed game rule set above the Java Edition default of 3. Modded servers add their own block entities, scripts and scheduled tasks to that workload.
There is also a watchdog limit. In current Paper server.properties documentation, max-tick-time defaults to 60,000 milliseconds. If one tick reaches that limit, the watchdog treats the server as unresponsive and shuts it down. This is a crash safeguard, not a performance target.
Why Fast Per-Core Performance Still Matters
Traditional Minecraft server platforms are not purely single-threaded. Chunk work, input and output, networking, garbage collection and asynchronous plugin tasks can use other threads. However, the main server thread remains the limiting path for much of the world simulation on conventional Paper, Fabric and Forge-style servers.
The main simulation path contains dependent work. Entity behaviour, block states, machines and redstone may depend on earlier work in the same tick, so the server cannot divide every operation among many cores without changing the required order.
A modded server can use several cores, but fast per-core performance usually sets the practical ceiling for the main tick path. Alternative server architectures can distribute work differently, so compare hardware against the platform and modpack you will actually run.
Additional cores help with background work, proxies, multiple server instances and genuinely asynchronous tasks. Once those jobs have enough capacity, adding more slow cores usually helps tick health less than improving per-core performance.
Why Workload Matters More Than Mod Count
“Modded server” covers an enormous range of workloads. Two servers with the same number of mods can behave very differently, so treat mod count as a rough inventory figure rather than a reliable capacity metric. What matters is what those mods do during each tick.
Tech and automation mods can be among the heaviest workloads because machines, pipes and item transport may tick constantly. A large automated base can dominate a performance profile.
World-generation and dimension mods tend to hit hardest during exploration and first-time chunk generation. A new world with a large world-generation stack can behave very differently after commonly visited regions have already been generated.
Mob and AI mods can add entity types, pathfinding complexity and spawn pressure. Their cost depends on entity count, AI behaviour and how much of the world is actively simulated.
Scripting and datapack layers can also run inside the tick. Efficient scripts may add little overhead, while poorly designed or overly frequent tasks can add noticeable processing time and are difficult to identify without profiling.
Claims, protection and permission plugins may hook block placement, breaking and movement events. The cost of each event can be small, but event volume matters.
Live-map tools may render lazily, on a schedule or aggressively. Their settings determine whether they create occasional background work or sustained load.
Scheduled tasks, including autosaves and plugin housekeeping, cause periodic MSPT spikes rather than a higher baseline. If lag arrives in regular bursts, look here first.
Proxies such as Velocity or BungeeCord sit in front of backend servers and do not perform a world's tick simulation. They still add a network hop and require CPU and memory headroom of their own.
None of these workloads is inherently bad. The point is that “my server lags” is not a diagnosis, and a statement such as “we have 200 mods” does not identify the bottleneck.
Player Concurrency as a Multiplier
There is no dependable formula that maps player count directly to CPU requirements. Players multiply the existing workload, often unevenly, so fixed per-player rules should be treated as rough planning estimates.
Each connected player keeps an area of the world active. With the current default simulation-distance of 10 chunks in each direction, players can bring large regions of entities and block entities into the simulation. Twenty players concentrated in one town can cost less than five players exploring in different directions because explorers generate new chunks and create separate active regions.
Behaviour often matters more than headcount. Concentrated players share loaded chunks; scattered players multiply active regions. Large automated bases continue to consume tick time whenever their chunks remain loaded, whether by nearby players or chunk-loading mechanics. A world reset or modpack launch can also produce a burst of new chunk generation unlike normal steady-state load.
view-distance and simulation-distance are common tuning levers, and lowering them reduces the amount of world data sent or simulated. entity-broadcast-range-percentage, which defaults to 100 in current Paper documentation, controls how close entities must be before the server sends them to clients. Reducing it can lower network traffic and some server work, but players may notice the shorter range, so these settings are trade-offs rather than free gains.
CPU Versus RAM
More RAM does not repair a slow tick. If MSPT is 90 because a tech base is running thousands of machine updates, doubling memory changes nothing. The constraint is instructions per tick, not space to hold objects.
The relationship runs one way: insufficient RAM can cause CPU-visible problems, but surplus RAM cannot solve CPU-bound ones.
Too little memory increases garbage-collection pressure. Stop-the-world collection pauses halt the tick loop and can resemble CPU-related lag until you inspect the profile and garbage-collection data. Oversizing the heap is not a guaranteed fix either; it can waste capacity and may worsen pause behaviour depending on the Java version, collector and JVM configuration.
Allocate enough memory for the modpack and realistic peak load, leave operating-system headroom, use JVM settings appropriate to the server version, and then measure both tick time and garbage collection.
CPU Versus Storage
Fast NVMe storage matters for server startup, initial world loading, chunk saves, region-file writes and backups. Autosaves and backup jobs create periodic storage activity. Current Paper documentation lists deflate as the default region-file-compression setting, with other options that trade CPU use, write speed, compatibility and disk space differently.
Storage does not execute entity AI, redstone logic or machine updates. If a profile shows most tick time in those tasks, a storage upgrade is unlikely to reduce the underlying compute cost.
Slow storage can cause slow starts, delayed world loading, stutter during saves and long backup windows. It is less likely to explain a consistently high MSPT baseline when no one is exploring. Diagnose the observed pattern before choosing an upgrade.
CPU Versus Network
Latency and tick rate are separate problems players describe with the same word.
Low ping cannot repair low TPS. If average MSPT is 100, everyone experiences slow simulation regardless of proximity to the data centre. A fast CPU cannot repair poor routing or packet loss either. A server holding 20 TPS can still feel bad to a player whose traffic takes a poor route, usually through delayed responses or rubber-banding rather than a world that runs in slow motion.
The distinction changes what you should fix:
- Everyone lags at once regardless of location: tick problem. Profile the server.
- Some players lag and others are fine: network or routing. Check ping and loss by region.
- Movement rubber-bands but furnaces and crops run at normal speed: network. The simulation is fine.
- Everything in the world runs slowly and consistently: tick. The network is fine.
Current Paper documentation lists network-compression-threshold at 256 bytes and use-native-transport as enabled by default, with the latter providing a performance benefit on Linux. These settings can influence networking overhead, but they do not replace choosing a sensible location for the player base.
Quick Diagnosis Table
| Symptom | Most likely constraint | What actually helps |
|---|---|---|
| High MSPT with few players online | CPU single-thread throughput or a heavy mod | Profile the workload; optimise it or move to a faster core |
| MSPT spikes at regular intervals | Scheduled tasks, autosave or garbage-collection pauses | Check task timing, heap allocation and JVM settings |
| Long startup and slow world loads | Storage throughput | Use faster NVMe storage and review region compression |
| Rubber-banding for some players only | Network routing or packet loss | Check the route or choose a more suitable server location |
| Everything runs in slow motion | Low tick rate | Reduce tick workload or improve per-core CPU performance |
| Lag only during exploration | Chunk-generation load | Pregenerate the world and review world-generation mods |
Diagnose Before You Upgrade
Measure, profile, identify and then change. Skipping directly to an upgrade is how operators pay for a larger plan that performs much the same.
Start with measured tick data. On a server with spark, /spark tps reports TPS and MSPT. Operators on current Java Edition releases can also use the F3 + 2 server TPS debug chart when permissions allow, while some hosting panels provide their own tick graphs. For custom monitoring, enable-jmx-monitoring exposes averageTickTime and tickTimes, but JMX also requires the appropriate JVM configuration.
Profile while the problem is happening. PaperMC's profiling documentation explicitly says the issue must be active for profiling to be effective. Paper has bundled spark since version 1.21 and recommends it over Timings. Running /spark profiler start --timeout 600 produces a report link after ten minutes. Timings v2 remains available but has been unmaintained for years and has been disabled by default since Paper 1.21.
Use the report to see where processing time is being spent. That is the difference between “the server lags” and “a particular mod's block-entity update accounts for a large share of tick time.” Only the second observation points towards a specific change or developer report.
Test repeatably. Change one thing, reproduce the same load and measure again. Use the same modpack, player count and activity. Without a repeatable load, you are comparing Tuesday afternoon with Friday night and calling the difference an improvement.
Often the answer is configuration rather than hardware: an aggressive map renderer, an overloaded mob farm, a frequent scheduled task or a randomTickSpeed value raised for testing and never restored. When the profile shows the main server thread saturated by legitimate work, moving to faster per-core performance becomes an evidence-based upgrade.
Which CPU Specifications Matter When Buying Hosting?
Once you know you are CPU-bound, specifications matter more than plan names.
- CPU model, named explicitly. Terms such as “high performance” and “latest generation” are not specifications. CPUs with similar clock speeds can perform differently because architecture, cache and sustained boost behaviour also matter.
- Shared versus dedicated logical cores. Shared allocation can create variable performance when neighbouring tenants are busy. Dedicated allocation generally provides more predictable access to CPU time, although the exact result still depends on the processor and the host's implementation.
- Sustained performance, not only burst speed. Modded servers can remain busy for hours. Ask how CPU resources are allocated, whether sustained limits apply and how the plan behaves under continuous load.
- Location relative to your players. CPU speed cannot correct a poor network route. Choose a region close to the player base and use the host's latency test before ordering.
- Storage type and capacity. Look for NVMe storage for world data, with enough capacity for backups and growth. Modded worlds can become large faster than expected.
- Backup system. Look for incremental, off-site backups that you can browse and restore without waiting for support. Test the restoration process before you need it.
- Migration support. Moving a modded world and its configuration files onto new hardware cleanly is real work. Ask whether the host provides migration assistance, what it costs and how long it takes.
Hosts vary in how clearly they publish these details. At the time of checking, Bloom Host lists CPU families by plan tier and distinguishes shared from dedicated logical-core allocations. Its location information also shows that hardware varies by region. Confirm the selected location, current processor options and allocation type before ordering. The same rule applies to any provider: published, location-specific specifications make a CPU decision more reliable than a generic plan name.
The Practical Takeaway
Modded Minecraft performance comes down to one practical question: can the server complete its main simulation work within the 50-millisecond average tick budget under real load? RAM, storage and networking still matter, but they address different constraints.
Work in order. Measure TPS and MSPT to establish a baseline. Profile with spark while the problem is active. Identify the mod, method or scheduled task consuming tick time. Fix configuration or workload problems first. If the server remains CPU-bound, choose faster per-core performance using published specifications and a location suitable for your players.
This process avoids blind upgrades and gives you an evidence-based answer when players ask the question that matters most: “Why is the server slow?”


Leave a Reply