Managing a chess engine cluster with Runa
Chess engine cluster
Now that two children are living at the house I installed some electric heaters in the rooms that we are using before the winter but when the temperatures got cold I needed something for the main room that we are not using yet.
Instead of installing another two heaters there I decided to buy a couple of old Dell PowerEdge R710 servers and move them in a StarTech 18U rack with two Eaton UPS, a TP-Link TL-SG1024 switch, and my old Sun Fire V20z servers.
I bought two Intel Xeon X5650 processors (12 threads at 2.66 GHz) and replaced some failed RAM sticks in one of the server (that I got for free) to bring the total to 144GB of RAM.
With that much computing power, and new electrical system for the house that I started installing last summer, I was finally able to properly test new versions of my chess engine Little Wing.
Indeed for every change to the code I need to run tens of thousand of very short games against other chess engines to see if the change is positive or negative. That takes a lot of time, even on many threads.
At first I used SSH and Screen to run a script that would launch the games on the two servers but this got old pretty fast. I needed to automate the process.
Runa
So I started working on Runa, a Ruby on Rails app to run scripts on multiple servers and get the results from anywhere (web, email, integrations...).
The interface is quite simple but easy to use and just what I need for my chess engine. It might also be interesting for other people, we'll see. And instead of running on premise it could also easily run in the cloud and launch virtual machines to run the scripts.
I created a domain for the app at runa.sh and published the code on GitHub with a MIT licence.
BTW: the cluster is working very well to heat up the room in winter but I'll have to shut it down in summer. I can see a new habit forming of working on my chess engine every winter to help warming up the house.