In 2014 I watched new single-board-computers enter the market. I am very fond of the Raspberry Pi project and I am using RPi for quite some time now as you can see from my previous posts on my website. Now I am curious about the differences. I am currently looking for a base station for my home automation project. I wouldn't call this a server since this term is in most cases used for different hardware. In this context reliability, cost of operation running 24/7, ease of use are the most important factors for me. I am going to write a series of blog posts on benchmarks of the different models in this context.
The BeagleBone Black is a $45 ARM Cortex-A8 community-supported development platform. With 4GB of eMMC flash on-board, processor speed increase to 1GHz, and improved power consumption in comparison to earlier beaglebone boards - the BBB has much to offer. BBB has 512MB DDR3 ram. Unboxing the board and the enclosure both make a perfected impression on me. Assembly of the enclosure is very easy since the board is mounted using 4 little screws. The rock solid enclosure has openings that allow access to buttons and GPIO pins.
During the last two weeks I got convinced by the excellent quality of the BBB board and enclosure. I am particularity fond of the Beaglebone since it is open hardware (in the sense of open source hardware!).
After an initial little hiccup during installation of Debian Linux I decided to use Archlinux from now on.
I followed this perfect set of instructions for installation:
http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black
These instructions are organized into two sections:
- creating a micro sd card and booting the BBB from it
- installing Archlinux onto eMMC
After that you have to sync and update:
$ pacman -Syyu $ pacman-db-upgrade
An optional step is to configure a suitable hostname for your new BBB based docker machine. I choose "kujira02" for that.
$ hostnamectl set-hostname kujira02
And now the installation of the docker package itself:
$ pacman -S docker systemd
Enable docker to run as a service:
$ systemctl enable docker.service
Done! Now we will reboot the BBB and check if everything worked as expected:
$ shutdown -r now
Check that the docker service is running:
$ ifconfig ... docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.42.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::5484:7aff:fefe:9799 prefixlen 64 scopeid 0x20<link> ether 56:84:7a:fe:97:99 txqueuelen 0 (Ethernet) RX packets 282177 bytes 14504931 (13.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 637920 bytes 931009075 (887.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ...
I am now able to use arm specific docker containers (as a convention they are usually prefixed with "armhf-"). In this example I start my "armhf-bench" container from docker hub and use it.
$ docker run -t -i finklabs/armhf-bench 105.2116s 3.1723Mb/sec 216.119 MiB/s
That's it. Here my benchmark results for the Beaglebone Black:
Board | Beaglebone Black |
---|---|
CPU (lower is better) | 105.2 sec |
FileIO | 3.17 MB/sec |
Memory | 216.1 MiB/sec |
Wattage | 2.12 Watt |
If you are interested in this work let me know.
Parts used:
Resources
- http://www.oshwa.org/
- http://beagleboard.org/
- http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black
- IBM Docker benchmarking research paper
Have fun!
Mark