Is My Computer Good Enough to Run a Minecraft Server?

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:

RamPlayer Slots*World Size*Plugin/Mods*
1GBUp to 5Up to 5GB0
2GBUp to 10Up to 8GBUp to 10
3GBUp to 15Up to 10GBUp to 25
4GBUp to 25Up to 15GBUp to 40
5GBUp to 30Up to 20GBUp to 45
6GBUp to 40Up to 30GBUp to 50
8GBUp to 90Up to 60GB50+
10GB150+Up to 100GB50+
15GB150+150+ GB50+
Apex Minecraft Hosting plans

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:

I highly recommend checking out this tutorial on optimizing your server’s internet speed requirements as well.


Thanks for reading! Hopefully this article helped.

Visualizing Anime Preferences by Region – Anime Heatmap Project

MyAnimeList, or MAL for short, provides detailed information for anime and also allows users to create an individualized list of all the anime they have watched. Various parts of this list are customizable, including the ability to give shows a score from 1 to 10.

MyAnimeList page for Fullmetal Alchemist: Brotherhood

While browsing around MAL I noticed something interesting that is present on some user’s profiles – Everyone has the ability to list their geographical location. Moreover, you can search for users by location. This got me wondering if I could collect data from users in a region that I specify.

MyAnimeList user search

Yup! If I enter “USA” I am given a list of users which have that listed as their location. And there are a lot. On the user search page up to 24 users are displayed at a time. As far as I know there is no way to do such a search and show all users at once, so if I want to gather data on everyone in a search I will need to scan through every page. Luckily for me, the URL of these searches is pretty easy to manipulate.

https://myanimelist.net/users.php?cat=user&q=&loc=USA&agelow=0&agehigh=0&g=&show=24

Here is the URL for page 2 of a user search with the region “USA” specified. Each page contains 24 user listings, so page 2 has the extension “&show=24”, which means “show listings 24 through 48.” Page 3 would have the extension “&show=48” and so on.

To download all of these pages I used a Chrome extension called Simple Mass Downloader. In the Download List tab I set a pattern URL that looks like this:

https://myanimelist.net/users.php?cat=user&q=&loc=USA&agelow=0&agehigh=0&g=&show=[0:24000:24]

Basically that extra bit at the end specifies that we should download all of the pages between 0 and 24000, skipping by 24. So we download pages 0, 24, 48, 72, 96, all the way to 24000. In the event that there aren’t that many pages/users, the download just returns a “Failed – No file” message. Doing this with the region USA specified gave me 726 pages (That’s over 17,000 users!) in under a minute.

Now that I have those search result pages, I need to extract the usernames. I wrote a program in C# to read the html files and find the usernames. I noticed that usernames are listed in profile image links as such:

<div class="picSurround"><a href="/profile/jbax1899"><img class="lazyload" data-src="https://cdn.myanimelist.net/images/userimages/4206707.jpg?t=1602991200" border="0" width="48"></a></div>

So to pull a username I can look for the beginning part of that line and copy what comes right after right up until the closing double quotation marks. Here’s the code I wrote to do just that:

string[] filePaths = /*FILE DIRECTORY HERE*/
string searchFor = "\"picSurround\"><a href=\"/profile/";
foreach (string filePath in filePaths)
{
	StreamReader file = new StreamReader(filePath);
	string line;
	while ((line = file.ReadLine()) != null)
	{
		int index = line.IndexOf(searchFor);    //find where the username should be
		if (index != -1)
		{
			string username = "";
			for (int i = index + (searchFor.Length + 1); i < line.Length; i++)   //record username, up until the first double quotation mark
			{
				if (line[i] != '\"')
					username += line[i];
				else
					break;
			}
		}
	}
}

This will build a list of usernames out of the html search pages I provided.

Now I want to pull anime scores from the lists of these users. I found jikan.net, a C# wrapper, to be a perfect fit for this project. Jikan.net offers functions like “GetUserAnimeList” and “SearchAnime” to quickly and easily access the MAL database.

I created a WinForms application for ease of use. Now I can easily view the usernames collected, specify an anime to search for in user’s lists, watch it run, and view the results. You can download it here to use yourself.

One restriction I had to deal with is the rate limit of MAL’s API. I could get away with 1 query per second most of the time, but it was more safe to limit myself to 1 query per two seconds. When pulling up anime lists for hundreds of users, this all ends up taking quite a while. For the sake of time I decided to record up to 20 scores per region before stopping and moving on to the next.

Now that I have the anime scores I can create some interesting visualizations. This map was created with the US heat (choropleth) map from amCharts. An interactive version is available here.

There wasn’t too much variance in the data – All scores were between 7.5 and 9, and the average was about 8.3. There doesn’t seem to be a particular pattern either. Perhaps the anime I chose in this example was a bad pick as it is one of the most loved in the entire medium, so the scores would always be decent on average. Even if the visualization isn’t very enlightening, I think it is an interesting proof of concept for what can be done with data gathered from MyAnimeList.