The main thread: why more cores rarely help Minecraft

Performance & Lag Reviewed September 6, 2026 2 min read

Minecraft's world simulation runs on one thread. Twenty times a second, that one thread does everything: entities, blocks, redstone, players, and every plugin listening to any of it. When people say a server is «single-threaded», this is what they mean, and almost every performance question traces back to it.

What a tick is

The server aims to complete a full pass of the world twenty times a second — a tick every 50 milliseconds. If the work fits in 50 ms, TPS is 20 and everything feels normal. If it takes 80 ms, the server falls behind and TPS drops to about 12.

TPS below 20 does not mean the server is «doing less». It means it is doing the same work more slowly, so time in the game runs slower: crops grow slower, furnaces smelt slower, and everything feels heavy.

What this explains

QuestionAnswer
«Will more CPU cores help?»Only a little. Chunk generation and some I/O use other threads; the world tick does not.
«Will more RAM help?»Only if you are actually short. Memory does not make one thread faster.
«Why does one plugin ruin everything?»Because it runs inside the tick. Ten milliseconds of plugin work is a fifth of the budget.
«Why is CPU usage only 15%?»One saturated core out of eight is roughly 12%. The graph looks idle while the server is at its limit.
«Async» does not mean free

A plugin doing work off the main thread is being polite, but if it then needs a result back on the main thread, the tick still waits. Plugins that query a database synchronously inside an event are the classic case: the tick stops until the network round trip finishes.

This is why profiling beats upgrading

If one thread is the bottleneck, the fix is to give that thread less to do — not to buy a machine with more of what was never the constraint. A spark report showing where those 50 milliseconds go is worth more than any hardware decision.

What genuinely uses other threads

Chunk generation and loading, world saving, network packet handling, and anything a well-written plugin deliberately moves off. That is why generating a new area causes a spike but running a big world does not, and why a busy server can still have cores sitting idle.