Last Monday a new ARM based SBC mini computer arrived; the Odroid U3 (Community Edition). Some highlights:
- 1.7 GHz Quad-Core Cortex-A9 Samsung Exynos4412 processor
- 2 GByte RAM
- 3D Accelerator Mali-400 Quad Core 440 MHz
- 10/100 Mbps Ethernet
- Storage: MicroSD Card Slot, eMMC socket
- Power: 5V/2A
- 3 x High speed USB 2.0 Host ports
- PCB Size 83 x 48 mm
- XUbuntu or Android OS
And that’s not all – the rest of the details can be found here.
I ordered the following set, a week before they arrived:
- Odroid U3 Community Edition;
- 5V/2A power supply;
- 8GB eMMC module with Linux on it;
The total amount, including shipping, was $ 118.50 (~ EUR 85). I just couldn’t resist buying one to give it a try 😉 I read a comparison between a Raspberry Pi and the Odroid U3 and if the Odroid really outperforms the Raspberry that much, I’d be better off with an Odroid.
However, that (performance) is not the primary reason to ‘broaden my horizon’; the real reason is that I’ve had 3 SD card crashes since June last year with an average of 2 Raspberry’s running 24/7. That’s too much for me – I just can’t handle that. I have 4 RPi’s running now and this hardware overkill makes it very easy to just move some tasks to the remaining 3 RPi’s when 1 of them breaks down, but I don’t want that to happen… apparently the SD card is the weak point of the RPi concept (yes, all my RPi’s are up to date), so looking for alternatives was my primary reason for buying this Odroid U3.
While unpacking the Odroid shipment, the first 2 remarkable things were the PCB size (smaller then a RPi and also smaller then half a Cubietruck) and the huge heatsink – which is there for a reason, but more on that later. Normally, the first thing I do while preparing for the 1st boot is connecting a HDMI screen and a keyboard – but I totally forgot to buy a micro-HDMI adapter, so all my HDMI cables were useless. Oops… well, lets just boot the thing and hope that ssh is installed and working properly out of the box.. and it did. So I could use the Odroid headless right away, like I do with all my mini computers.
After doing the usual stuff like expanding the file system, disabling the graphical interface and so on (“sudo odroid-config“) I shut it down and hooked up my Power Monitor to get some information about the power usage. During boot, the power usage is around 3~4 W with peaks of 5 W but after that it settles down to a measly 1.9~2.0 W. That’s comparable to the power usage of the Cubietruck which uses 2.3 W (including an SSD).
As I mentioned earlier, I was very curious why the Odroid had such a big heatsink, so I tried to find a way to get some more information about CPU temperature, cause even while running idle I could feel that the heatsink was already a bit warmer then the ambient temperature. Not much, but noticeable. ‘cat /sys/devices/virtual/thermal/thermal_zone0/temp‘ gave me the information I needed: 51 degrees C, idle.
So, what’s going to happen when the Odroid gets really busy?? On the Odroid forum I found a way to stress the CPU to the max: ‘sudo openssl speed -multi 4‘ – that made the CPU usage go through the roof and the temperature as well – I saw the temperature reach 102 degrees Celsius!! And power usage went up to 7.5-8 W… oh my! Fortunately some thermal protection kicked in, because I saw the temperature and power usage dropping automatically and increasing, dropping, increasing.. some throttling mechanism must be doing that. While stressing the CPU to the max, the heatsink became unpleasantly warm – after 10 seconds or so I really wanted to remove my finger from the heatsink. Now I know why it’s there – for a very good reason 😉 Now I’m wondering, how much CPU power can be used constantly before throttling kicks in? Don’t know yet. I did see that while compiling Node.JS the temperature went up considerably as well (in the 70’s, with just one core busy? didn’t check that though)
Next thing I did was downloading, compiling and installing some additional software I’ll be playing with in the next couple of weeks: Node.JS with a lot of modules and nginx (Engine-X, for the static content, reverse proxy and stuff like that). And since I like comparing things (especially apples and oranges), I compared how Odroid/nginx compared to a (virtualized) W2k3/IIS6.
I changed the standard nginx.conf and added the following:
worker_processes 4; worker_cpu_affinity 1000 0100 0010 0001;
This will create 4 worker processes, each running on a dedicated core. I copied a 2KB html file to the Odroid and to the IIS server and used Openwebload to see what numbers both would produce (results after 20 seconds, IIS first):
URL: http://domoticaserver.hekkers.lan:80/smart.html Clients: 5 MaTps 20.68, Tps 24.85, Resp Time 0.229, Err 0%, Count 438 URL: http://odroid1.hekkers.lan:80/smart.html Clients: 5 MaTps 1136.02, Tps 1078.00, Resp Time 0.005, Err 0%, Count 23347
Eehh.. this can’t be true? Testing this while logged in on the IIS server gave these numbers:
URL: http://localhost:80/smart.html Clients: 5 MaTps 144.42, Tps 137.72, Resp Time 0.036, Err 0%, Count 2953
A lot better, but still about 7 times slower than Odroid… I’ll have to do some more testing to find out what’s causing this, because I don’t believe this… maybe I’m just running too much VM’s on a modest CPU (Intel Core i3 530) ?
Again the CPU temperature of the Odroid went up to 74 degrees Celsius (board in closed case, ambient temperature 24.8 degrees) during this test, with a system load of about 0.40 and power usage between 3 and 3.5 W.
Now, almost a week later, the Odroid is still running fine, running a test website based on Node.JS, Primus and AngularJS, without any throttling; I think I like the Odroid U3, but time will tell whether I really do …