Hardware is Hard
A guide to understanding and choosing hardware for Minecraft servers
The topic of server hardware appears quite frequently in /r/admincraft. Sadly, this is poorly misunderstood and is at times hard to research. This article serves to help guide you through choosing the hardware for your server be it a dedicated server or a system.
- What do I need?_
- How do I evaluate performance?
- What is the best?
- What should I avoid?
What do I need?
There is nothing particularly special about what constitutes a server, like every other computer they're constituted with the same basic set of parts:
A Central Processing Unit is essentially a rock that we tricked into thinking, this rock is what runs your server. One key thing to understand about these is that to the untrained eye none of its specifications matter but instead you need evaluate its performance based on the model E.G. R7-1700 or i7-8700k. Part of the reason for this is the concept of Instructions Per Cycle (IPC) which is the amount of work a CPU can do within a cycle. This is the reason why CPU clocks are not an accurate representation of performance for further reading see the megahertz myth .
The motherboard is what ties everything together, without it all you have is an expensive paper weight.
As fast as a CPU is, it has very limited storage capacity. RAM is used to store data that is not needed immediately.
Storage (Not memory)
Commonly an Solid State Drive (SSD) or Hard Disk Drive (HDD), this is what you store information on long term.
Power supply, it supplies power.
How do I evaluate performance?
Performance is a minefield of a tricky information to decrypt that takes experience to really understand however, its not as hard as you would think to understand.
At its core evaluating performance is making use of one key technique benchmarking . In layman's terms benchmarking is the act of measuring the performance of a given thing (either software or hardware) in a given scenario. Thankfully, you do not need to do this yourself since there are many publications out there that do this for you.
However, there are a lot of bad benchmarks out there so you need to consider the following rules:
- Real world benchmarks released by major publications are king.
- Benchmarking when done properly, is time consuming which is why we rely on people who have put in the work to gather a large suite of data reliability in order to draw conclusions.
- Self-selection bias invalidates all sites using user submitted data.
- Alternate title: Don't use Userbenchmark, Cpubenchmark, Cpuboss etc. Simply put, when users are free to submit any data they're free to manipulate any data they wish. This is not always malicious but it is always problematic.
- Youtube is not a good primary source of information.
- Personal integrity of youtubers is problematic at best, with everything from endorsing grey market reselling, to personal agendas influencing reviews and everything in between. Youtube is a cesspit of at best bad information.
- If a testing methodology is not presented then the information should be discarded.
- We try to be at least a little bit scientific here.
- Conclusions cannot be drawn from micro-benchmarks.
- Micro-benchmarks are where you test one very specific thing consequently, this is not representative of complex systems. You don't judge the road speed of a car based on its engine RPM, same thing applies here.
- No information is always better than bad information.
- Its fine to say "I don't know", once that has been established you can make better choices suited to what you wish to achieve.
What is the best?
At its core Minecraft's main logic loop is a single thread this is a fundamental issue that dictates how it runs. Consequently, Minecraft is primarily concerned with single core performance. You still need at least two cores however, the second is to offload things like Garbage Collection and non core logic threads (networking, io) to so they don't steal time from the main loop.
At the time of writing Minecraft will synchronously read/write to disk. This means that Minecraft pauses whilst it loads the world from the disk, as a result an SSD is highly recommended as their excellent random performance ensures that the parts of the world that need to be loaded can be found quickly.
RAM is considered by the uninformed as the most important factor for a servers performance and understandingly so as it is the one thing you can objectively measure accurately. However, RAM is very much an 'enough is enough' kind of thing and adding more will not improve things (unlike a faster CPU). I'll generally agree Aikar's recommendation of up to 10GB of RAM. 
- Single core performance is king but you still need at least 2 cores at all times.
- SSDs are strongly recommended.
- RAM is not as important as you think, 4GB might be fine, 10GB is great but 16GB probably won't help.
What should I avoid?
This section is dedicated to those people using cheap SBCs (Raspberry Pis) and old Xeon servers. They are simply terrible for Minecraft due to their mediocre at best single core performance. You really do get what you pay for.