Want to host a Minecraft server but are unsure of if your computer can handle it? The answer: It probably can!
Small Minecraft servers are fairly easy to run, especially if nothing else is running on that system. I’ve run MC servers on nothing more than a little $5.00 chip in the past. I’ve found that the biggest constraint is often your internet speed – Specifically your upload speed (Here’s a tutorial on getting a Minecraft server working with bad internet).
That said it is worth knowing just how much your computer can handle. Primarily, how many players can be on the server at once. This is hard to estimate because the behavior of players is very random. Some players might travel little, others might travel a lot and very fast. Some players may create entity farms which tend to consume a lot of processing power. Even with all of these variables we can use some tools to make an educated guess as to how many players your server can handle. Let’s get started!
Memory Use
One of the biggest factors we should consider when setting up a Minecraft server is the amount of memory, or RAM, that is in the system. Minecraft is very RAM-hungry, especially if you also have plugins or mods running on the server.
RAM usage scales fairly linearly with the amount of players online, the size of the world, and the amount of plugins or mods being used. This chart from Apex Minecraft Hosting is a good reference for most use cases:
Ram | Player Slots* | World Size* | Plugin/Mods* |
---|---|---|---|
1GB | Up to 5 | Up to 5GB | 0 |
2GB | Up to 10 | Up to 8GB | Up to 10 |
3GB | Up to 15 | Up to 10GB | Up to 25 |
4GB | Up to 25 | Up to 15GB | Up to 40 |
5GB | Up to 30 | Up to 20GB | Up to 45 |
6GB | Up to 40 | Up to 30GB | Up to 50 |
8GB | Up to 90 | Up to 60GB | 50+ |
10GB | 150+ | Up to 100GB | 50+ |
15GB | 150+ | 150+ GB | 50+ |
If you’re reading this article you likely have an older/weaker system with a small amount of memory. It will be very beneficial to add more memory for these purposes.
It is worth mentioning that not all RAM is made equal – Older DDR2 memory is much slower than newer DDR3 or DDR4. This is something you will probably not be able to change since your motherboard likely only supports one type.
Storage
The storage device(s) on your server can have a dramatic impact on game performance. These come in a few varieties:
- Mechanical Hard Drives (HDD)
- Solid-State Drives (SSD)
- SATA solid-state drives
- NVMe solid-state drives
Mechanical hard drives are the cheapest per gigabyte. They are also the slowest and most fragile as they rely on moving parts to operate.
Solid state drives have no moving parts and are by comparison much faster. NVMe SSDs are a relatively newer technology and are even faster. Both are more expensive than HDDs however.
I recommend running your Minecraft server on an SSD if possible. This will allow the machine to access data faster and provide a much smoother experience to players.
CPU Benchmarking
Benchmarking means to “evaluate or check (something) by comparison with a standard.” Here we will benchmark a computer to see how well the processor/CPU performs. Minecraft servers run exclusively on the CPU and perform better on CPUs with a fast core-clock (measured in GHz). They cannot typically take advantage of more than a couple cores. This is worth noting because traditional server-class CPUs like Intel Xeons are usually not preferred for this task as they have many cores but slower core-clocks.
For our testing I’ve chosen the benchmark integrated into 7-Zip as it can be used on both Windows and Linux. We will also use Stress, a Minecraft benchmarking plugin.
7-Zip
This benchmark will test the raw processing power of your computer. Close all other programs before running the test.
Windows
- Download 7-Zip for Windows
- Open the program GUI
- Go to Tools -> Benchmark
- Use the default dictionary size of 32MB.
- Run the test with 1, 2, and 4 cores. After each test record the total rating in MIPS.
Linux (Ubuntu)
- Install 7-Zip with this command:
sudo apt install p7zip-full
- Run this command, replacing <cores> with 1, 2, then 4. After each test record the total rating in MIPS.
7z b -mmt<cores>
You should end up with data like this:
1 core: 4580 MIPS, 2 core: 10283 MIPS, 4 core: 19493 MIPS
Stress Plugin
I’ve created a Minecraft server specifically for the purpose of benchmarking. The world is empty, which should make the results of the Stress plugin more consistent. Download here:
Now we can start the server and benchmark.
- Follow the directions in ___readme___.txt to set up the server
- Connect to the server in-game
- OP yourself with the console (op <player name>)
- Run /stress test=chunkgen and record
- Run /stress test=chunkload and record
- Run /stress test=entity and record
- Run /stress test=tps and record the entries under 10s
Your data should look something like this:
chunkgen: min 2.5, avg 18.4, max 173.9, stdev 29.4
chunkload: 2750.12ms
entity: min 0.5, avg 1.5, max 17.7, stdev 1.5
tps: min 0.3, avg 0.7. max 1.0, stdev 0.2
Comparing Data
Now that we have our benchmarking data, we can compare it to data I’ve collected from my own machines as well as data from the web.
My data:
AMD Ryzen 5 3600 6-Core Processor, 3600 Mhz, 6 Cores, 12 Logical Processors w/ 32GB RAM (Windows 10)
7zip:
1 core: 4580 MIPS
2 core: 10283 MIPS
4 core: 19493 MIPS
Stress:
chunkgen: min 2.5, avg 18.4, max 173.9, stdev 29.4
chunkload: 2750.12ms
entity: min 0.5, avg 1.5, max 17.7, stdev 1.5
tps: min 0.3, avg 0.7. max 1.0, stdev 0.2
MC Server Performance: Exceptional
AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx, 2100 Mhz, 4 Cores, 8 Logical Processors w/ 12GB RAM (Windows 10)
7zip:
1 core: 5086 MIPS
2 core: 11088 MIPS
4 core: 17906 MIPS
Stress:
chunkgen: min 3.3, avg 43.5, max 463.8, stdev 65.5
chunkload: 4686.09ms
entity: min 1.2, avg 4.8, max 73.7, stdev 7.6
tps: min 0.9, avg 1.2. max 1.7, stdev 0.2
MC Server Performance: Very Good
Other data:
7-Zip benchmark data from various CPUs
Optimization
Perhaps your machine can run a Minecraft server but you are worried that the experience won’t be very good. Not to worry! Here are some steps you can take to optimize the server:
- Switch to a faster DNS
- Configure Quality of Service (QoS) on your router for the server
- Keep the server and plugins updated
- Configure your server
- Add a performance plugin like ClearLagg
- Make sure you’ve allocated enough RAM to the server application
- Add these JVM startup flags
I highly recommend checking out this tutorial on optimizing your server’s internet speed requirements as well.
Thanks for reading! Hopefully this article helped.