So, exciting times at Codethink towers. This week we launched the Baserock Slab and it is a pretty awesome bit of kit. I have been working with the Baserock team for a good while now, on the various things that they get up to. I’ve seen a couple of public releases through and we already have our third release planned and in progress. We had some time and sent an engineer to GUADEC this year to talk about our attempts to get GNOME OS working on Baserock, that was an awesome place to get a fertile set of ideas from.
With all this going on, and our presence at various trade shows and conferences over the coming few weeks, I thought I’d take the time to tell you all a few truths about the Slab, before you accidentally read something full of marketing speak and badly researched lies.
First though, a short digression… The Baserock Slab is, importantly, NOT Baserock itself. Baserock is a software platform which Lars blogged about recently. In brief, it’s a set of tools and workflows which aims at making embedded systems development much less painful for those of us who have to do it in our day jobs.
Right, back to the shiny hardware. The Slab is our attempt at making a piece of kit which will make it nicer to deal with the fact that we’re deliberately making Baserock a native-compile-only system to avoid all the issues associated with maintaining cross-compilation patches for all and sundry. It is, in brief, eight independent ARM systems in one box.
The Slab consists of eight independent computation nodes and a management node, joined together with a high bandwidth switching fabric and a command and control system. Each node is a quad-core Marvell ARMADA XP chip, running at 1.33GHz, with 2GiB of ECC DDR3-1333 memory and a local mSATA SSD (30GB in current designs, although 120GB is readily available) along with a microcontroller providing control of its power along with access to its console and status LEDs. The management node has access to each of the eight microcontrollers and via software in its flash, it can control each of the eight nodes independently. All the nodes are joined together by a stonking Marvell switch chip which then provides connectivity to the outside world.
Highlights for me
For me, the Slab offers a number of super features which are sorely lacking in most of the ARM development systems we have here. We have combined (what I feel is) the holy trinity of compute power (quad core with 2GiB of RAM), storage/IO (local mSATA SSD attached at SATA2 speeds), and networking (a pair of SGMII links directly into a switch fabric). Currently our networking is not at 100% in that we “only” have 2x1Gbps to each node and 4x1Gbps out of the box. Eventually we’re hoping we can extend that to 2x2.5Gbps to each node and in addition to the 4x1Gbps out, 2x10Gbps too. Meaning that each Slab has up to 24Gbps of external bandwidth and up to 5Gbps between that and each node in the box.
Every other development board we have here suffers from one or more of the holy trinity being crippled. For example, we have dual-core ARMs with reasonable RAM but whose storage is USB attached and whose networking is 10/100 only. We have single-core ARMs with okay RAM, whose storage is SATA but whose networking is USB attached. All in all, it was only by partnering with another hardware house which produced nice kit that we could design and implement a bit of kit I now wish I could afford
Where I think the Slab would rock peoples’ worlds
Clearly, we built the Slab as a build engine for Baserock. However there’s loads of possible uses for the kit which others might be interested in. Given the density of nodes, local storage, and reasonable networking, a bunch of Slabs would probably do pretty well being a Hadoop cluster or simliar. Since each each node is fully independent, they could be a way to have eight dedicated servers in a single half-depth 1U system. Potentially good for then sub-letting to people who want ARM development systems.
The independent nature of the nodes also offers privilege separation opportunities all within the same box. Consolidation of secondarying services would also be plausible. The Slab could also be a plausible low-end HPC solution or a stateless data processing cluster. With independent control of each node, you can easily scale power consumption with demand.
With the console, power control, and yes, even JTAG to each compute node, the management node could be used to coordinate continuous integration testing of every part of an ARM system, including the u-boot bootloader. Pretty awesome I think.
Super-shiny, and super-useful, I am really proud of what we’ve achieved in bringing the Baserock Slab to the point it’s at, and everyone who is currently dealing with lashed up clusters of panda boards or similar should honestly take a step back and ask themselves if buying a single Slab wouldn’t make their lives way easier.