I’ve been working on adding support for the ARM architecture to Homefarm for a bit now. This week I decided to try to push through, and get that work done and tested.
Obviously you can’t test software designed to manage a farm of computers with just one machine, so I had to build myself a tiny ARM farm.
Building the cube
Here’s most of the raw materials:
Four Raspberry Pi 4 Model Bs (4GB version), 4 heatsink sets, and 3 16GB SD cards (I already had one spare). Oh, and one more thing…
A 120mm fan with its own wall-wart power supply and a hi/med/lo switch. This is the key to keeping the Pis cool while they crunch, as well as the actual structural keystone for the rest of my plan :)
I cut 120mm x 120mm sections of foam-core board and lashed one Pi to each with zipties. The Pi is more-or-less centered on the board horizontally, and is positioned to sit just under the fan vertically. This gives enough clearance for the Pi’s power cables at the bottom.
The zipties go in from the back, so that their… zippy block part… will act as a spacer to hold the Pi away from the board, letting air flow over both sides.
A side view, showing the positioning of the Pi.
This is two of the sides, with Pis attached, showing how they’ll be arranged around the fan. This whole thing is upside-down at this stage; when assembled the fan will be on top and will pull air upward past the Pis.
The last steps were to cut sections out of the bottom of each side for airflow and power cords (I should have done this first, but it worked out fine); and to duct tape all the sides together, arranged around the fan.
Et viola, a 120mm3 (AKA 1.73L) cube containing 16 A72 cores running at 1.5GHz.
Stats
Using a 120mm fan to cool RPis works. In fact, it might be a bit of an overkill. Here’s the receipts.
Uptime:
----------------------------------------------------------------------- nodepi01
20:51:58 up 1:10, 0 users, load average: 4.43, 4.62, 4.63
----------------------------------------------------------------------- nodepi02
20:51:58 up 1:10, 0 users, load average: 4.45, 4.37, 4.24
----------------------------------------------------------------------- nodepi03
20:51:59 up 1:10, 0 users, load average: 4.30, 4.52, 4.38
----------------------------------------------------------------------- nodepi04
20:52:00 up 1:10, 0 users, load average: 4.37, 4.46, 4.36
What they’re crunching:
================================================================================
nodepi01
================================================================================
World Community Grid User: someuser State: Active
Tasks: 4 Active: 4 Credit/RAC: 543/50
Workunit Stat Prog ETA Dline
------------------------------------------- ---- ------ ------- -------
1 OPN1_0004501_03273_1 Run 44.70% 11h21m 6d08h
2 OPN1_0004555_03384_0 Run 41.90% 11h56m 6d10h
3 OPN1_0004552_05879_0 Run 34.62% 13h26m 6d11h
4 OPN1_0004543_04058_0 Run 31.67% 14h02m 6d09h
================================================================================
nodepi02
================================================================================
World Community Grid User: someuser State: Active
Tasks: 4 Active: 4 Credit/RAC: 0/0
Workunit Stat Prog ETA Dline
------------------------------------------- ---- ------ ------- -------
1 OPN1_0004504_03659_0 Run 18.80% 16h41m 6d23h
2 OPN1_0004504_03855_0 Run 7.47% 19h01m 6d23h
3 OPN1_0004491_06436_0 Run 5.00% 19h32m 6d23h
4 OPN1_0004481_00076_0 Run 4.76% 19h35m 6d23h
================================================================================
nodepi03
================================================================================
World Community Grid User: someuser State: Active
Tasks: 4 Active: 4 Credit/RAC: 0/0
Workunit Stat Prog ETA Dline
------------------------------------------- ---- ------ ------- -------
1 OPN1_0004520_01168_0 Run 9.34% 18h38m 6d23h
2 OPN1_0004491_02763_0 Run 8.63% 18h47m 6d23h
3 OPN1_0004520_01150_0 Run 8.63% 18h47m 6d23h
4 OPN1_0004481_00472_0 Run 5.25% 19h29m 6d23h
================================================================================
nodepi04
================================================================================
World Community Grid User: someuser State: Active
Tasks: 4 Active: 4 Credit/RAC: 0/0
Workunit Stat Prog ETA Dline
------------------------------------------- ---- ------ ------- -------
1 OPN1_0004520_00966_0 Run 26.90% 15h01m 6d23h
2 OPN1_0004534_00978_0 Run 14.47% 17h35m 6d23h
3 OPN1_0004481_04968_0 Run 9.61% 18h35m 6d23h
4 OPN1_0004481_04962_0 Run 7.39% 19h02m 6d23h
[NB: These ETAs, being the initial batch of WUs, were well off from actual completion times. For all 4 Pis the maximum actual completion time was 10h20min, and the avg across 30+ WUs was 9.5h.]
CPU clocks (in Hz):
----------------------------------------------------------------------- nodepi01
frequency(48)=1500398464
----------------------------------------------------------------------- nodepi02
frequency(48)=1500398464
----------------------------------------------------------------------- nodepi03
frequency(48)=1500398464
----------------------------------------------------------------------- nodepi04
frequency(48)=1500345728
And temps:
----------------------------------------------------------------------- nodepi01
temp=47.0'C
----------------------------------------------------------------------- nodepi02
temp=45.0'C
----------------------------------------------------------------------- nodepi03
temp=46.0'C
----------------------------------------------------------------------- nodepi04
temp=47.0'C
ARM is coming to Homefarm
The cool thing is that, from Homefarm’s point of view, there’s nothing special about these machines.
Over the past week I updated the code for local repository management; node installs and setup; a lot of Homefarm’s informational scripting; and the management of OS packages, BOINC settings, and BOINC projects.
Now that I write it out like that I realize that this has touched almost every piece of Homefarm.
These Raspberry Pis were installed via the Homefarm tooling, and now they’re being managed by it. I think they’ve largely done their job of shaking out the bugs from all of this week’s work. Now they’re doing work for World Community Grid.
My farm is now heterogenous, and I take care of all of it with Homefarm. I’m gonna do a lot of testing over the next week, and if all goes well, I’ll be releasing Homefarm 2.8.0, which will include support for ARM machines.