Build Machine Specifications Advice

Article written by Branden T.

We sometimes get requests to recommend specs for not only development machines for Unreal, but also automated build nodes. The best answer to this question is the typical “it depends”. We’ll use AWS instances as a base for discussing what we currently ( as of 3/1/21 ) use, which might be more than your project needs. There are also some general guidelines that will help in most cases.

First, some general advice when choosing machines:

If possible, you’ll want to split your agents up into compilers and cookers at least, since both can have different specs that make them better at one task over the other.
Cookers will need more RAM and faster clock speeds (disk space and I/O speed doesn’t hurt either), while compilers will need a higher core count
Cooker memory needs will vary by project. For instance, some of our larger projects have needed as much as 128GB of RAM, whereas a smaller project wouldn’t need nearly as much.
Best idea for cookers is to profile your current memory usage locally for cooking, and that will help you figure out the best instance type to use.
Compilers are more straightforward, as more cores allow for more tasks to be executed at once, making that a very attractive attribute to optimize. Some compiling jobs can still use a lot of memory, so higher RAM will help with stability. The general advice is “Buy RAM until your build is stable, then invest in cores” if you’re limited in your budget.

Now more specifically:

For our compilers we’ve found the r5.8xlarge AWS instance is good for our needs in most cases. The r5 instance types gave us a great blend on the number of cores while still giving us enough memory for stability. Depending on the size of your project, the C5 instances could be a good fit as well, but there could be some virtual memory woes to look out for with them. That varies from project to project, so testing would help there.
For cooking we use the z1d.6xlarge instance. The z1d instances give us the fastest core clock speeds, good memory, and high I/O capable storage. C5 instances didn’t have enough memory for our needs, but they could work depending on your project. R5 instances didn’t have the clock speed we needed. Definitely profile locally and see!

The above guidelines apply generally, but again, test for yourself and profile different setups to make sure you’re meeting all of your needs.