I’ve recently had my birthday and as a gift decided to give myself a NUC. The intention here is that I could replace the old laptop running Jenkins and Grafana with something that’s a bit more silent and in a smaller form factor.

Note that I’m not affiliated with any of the hardware manufacturers in any way shape or form.

The planned change

The laptop I’ve been using for Jenkins has become rather critical for this blog and a few side projects I’ve got. This meant that I first needed to find a way to migrate everything to a new machine that would be coming. I’ve then focused on rewriting my infra to code with the help of Ansible®. Even though I’m not a super big fan of it I’ve managed to write everything as an Ansible playbook. I did, however, skip the Jenkins and moved towards Drone CI instead. With this complete, I needed to figure out what type of a machine I might want to go for.

The workloads I’m running are not super duper heavy and usually, my machine is not running any heavy computation 24/7. The heaviest tasks it would be getting is building a container when a build pops up. Therefore I need something that’s equipped with at least an i5 or equivalent as I want my builds to run in reasonable amounts of time. There needs to be at least 16GB of memory, as that will most likely get consumed as time goes as I tend to run more and more stuff on the machines I have at home. It’s just part of my hobby - come up with a service I might not even need, write it and put it up on the machine I’ve got. Bonus points go for being a small form factor as the laptop takes the valuable space which I could instead use for a board game or two. If possible, I’d like it to be silent, preferably passive cooled. This is due to the fact as I tend to schedule some of the busier scheduled jobs for the middle of the night, the time I’m least likely to have other jobs running. I also need an ssd. The storage size is not a huge factor as I’m not storing anything that’s large but the speed is of paramount importance. I do run quite a lot of javascript and that means tons of IO for small files. I’ve ran into performance issues on my Raspberry Pi 3 Jenkins instance with javascript jobs due to the limitations of the SD card performance. Jobs that would take seconds on a proper SSD can take minutes on a slow storage. I also did not want to spend a ton of it, if I could fit it in a 500 euro budget, I’d be golden. Take note that I do live in Europe and electronics are way more expensive here than the other side of the pond.

Therefore I ended up with the following requirements:

  • i5 or equivalent
  • 16GB of ram
  • Passive cooling
  • Small form factor
  • SSD
  • 500 Euros for it all

I did a bit of digging and a NUC seemed a perfect candidate for the form factor I was looking for. There seem to be a only a few passively cooled ones but once I found the MSI Cubi 3 Silent S I looked no further. It seemed to tick all the boxes, with support for an M.2 SSD as well.

The cost

So with the choice made, I started digging through both local stores, amazon and other online retailers that do ship to Lithuania. The prices varied by only a little, so I went with a local option. Here’s what components I went with and their price:

Component Model Price
M.2 SSD ADATA XPG SX6000 256GB 49.13€
NUC MSI Cubi 3 Silent S-008B i5-7200U 353.99€
RAM DDR4 SODIMM Corsair Vengeance 16GB (2x8GB) 2133MHz 96.86€

For a grand total of 499.98€.

The struggle

After waiting for nearly a week for my Cubi to arrive, I’ve started assembling it. The NUC is quality made. The aluminum looks top notch, there’s plenty of soft-padding inside for all the components as to avoid any rattles and weird noises. The NUC is pretty heavy - an indicator for plenty of cooling present. Assembling everything was a breeze, but then I hit an issue. The issue that I’ve struggled with for a while. The M.2 SSD was not detected by bios. I did some investigation on the internet, found that it’s a common issue and that the OS setup would usually find the SSD. This did not work for me however. I’ve tried Ubuntu, CentOS and Windows setups but none managed to detect the drive. I’ve no idea if it’s the cubi that’s faulty or the drive. I had to fallback to an old ssd I had on hand to install the CentOS on it. I’ve spent a good few hours playing with the BIOS, plugging and unplugging the drive but did not manage to get it to work. Since I don’t have any other device with an M.2 slot I’m unable to test the drive in isolation. I’ve given up on it already but if you do have pointers for what I should try - do leave a comment. Despite this - I can’t blame the Cubi - it does seem like a good product.

Once the OS was installed, I ran my prepared Ansible playbook to set up everything I need on it. This was rather painless despite me not being a fan. Hats off Ansible, you win this time.

The performance

Anyway - the Cubi has now found it’s proud home in our living room, behind the TV:

The MSI Cubi 3 Silent in its proud habitat.

I’m not going to run any actual performance benchmarks on it. Instead, I’ll do a laser-eyeball comparison between the cubi and my usual machine - a MacBook Pro. This one is a 2018 model with 2.2 GHz i7. I’ll compare the two running the same Drone job while a drone agent is present on the system. Keep in mind that the MacBook is a rather congested machine as I’m running a ton of stuff on it at all times. Albeit - it’s not something that’s doing a ton of heavy lifting but I’ll probably be browsing while it builds in the background. I know this won’t be an apples to apples comparison but I hope you’re fine with that. Oh and my DockerForMac is set at 6CPU’s. Here’s the result:

Machine Time taken
My MacBook 10min 45sec
My Cubi 10min 5sec

So the Cubi outdoes the MacBook. I really think if I were to leave the mac alone it would perform the build a tad quicker, but the Cubi seems to be doing well for the price.

As far as the temperatures go, the Cubi’s CPU sits at 41°C on idle. While chewing on something a bit heavier it goes to around 55°C(I used stress to test this). I did not run it for hours though, so numbers might not represent a true stress test.

The conclusion

I’m pretty happy with the way the Cubi performs. Since I’m not going to be pushing it 24/7 it seems to be appropriate for my use case. I’m sure there are alternatives that might be a tad cheaper but since I keep it in the living room the aesthetics are also a consideration. It’s a quality product that will hopefully last for a long time and be the host of many of my hobby projects.

Maybe I should have opted for something else rather than the Cubi? Any projects I should try to put on it?