Power consumption of desktops vs ARM SOC's such as Odroid-C2 or Rpi3

I bought an Odroid-C2 which will be delivered in a week or two. It’s a pretty impressive piece of hardware for the price:
http://www.hardkernel.com/main/products/prdt_info.php
It’s very similar to the recently released raspberry pi 3:

I also ordered a USB-controlled relay board with the hope to build an automatic sprinkler system with solenoid valves to water my plants!
http://www.ebay.com/sch/i.html?_nkw=usb+relay+board

I’ve never dealt with electronics so this is quite exciting. I was surprised at how cheap the components are. I also never guessed that 240 volts could be controlled by a little USB connection.
I’m going to try to setup my Odroid-C2 as a ubuntu home server that will control my garden irrigation system solenoid valve using the usb-relay, which can hopefully be controlled by my ramnode VPS using a web page accessed by my phone. Apparently java 8 runs on the odroid and there’s a few java libs to control the USB signals. It’s going to be a fun project.

Something that’s interesting is how little power these little ARM computers use compared to desktops.
I was weighing up buying an ARM system-on-a-chip (SOC) Odroid-C2 which costs about AUD150 with a memory card, versus an old ordinary headless desktop which costs AUD80 such as this HP DC5800:
http://ssbb102.australiancomputertraders.com.au/HP-DC7800-Desktop-p/rdes004.htm

I was about to buy the desktop rather than the ARM SOC because the desktop would be easier to use and space wasn’t a problem. But when I compared the power usage, the ARM computers are so much cheaper to run.
Apparently the HP DC5800 desktop above with Core 2 Duo E8400 uses 100W on idle and 140W on load, both without the monitor or graphics card:
https://www.complang.tuwien.ac.at/anton/computer-power-consumption.html

While the Odroid-C2 ARM computer uses 1.8W on idle and 4.4W on load. But I’m not sure if this is using it’s GPU or other components:
http://forum.odroid.com/viewtopic.php?f=139&t=18902#p125371

I calculated the power consumption for a 1 Watt device using my power cost in Australia at AUD0.22 per kWh:
Input: Cost of electricity in dollars per kilo Watt hour: 0.22 $/kWh
Input: Power required by device in Watts: 1W
The number of mega joules per kilo Watt hour: 3.6 MJ/kWh
Cost of electricity in dollars per mega Watt: 0.061111111 $/MJ
Power required by device in mega Watts per hour: 0.0036 MJ/h
Cost of electricity to power device in dollars per hour : 0.00022 $/h
Cost of electricity to power device in dollars per day: 0.00528 $/day
Cost of electricity to power device in dollars per year : 1.9272 $/year
I think I’ve done the calculations right since they’re similar to this:
https://www.raspberrypi.org/forums/viewtopic.php?t=18043&p=182118

Therefore the Odroid C2 running at full load will cost about $8/year (=4.4W1.93$/yr). While the HP DC5800 desktop would cost about $269/year (=140W1.93$/yr).

That’s quite a big difference. I had no idea that a desktop computer costs so much to run continuously as a home server, especially considering that this annual cost is more than 3 times the price of the machine itself.

I’d be interested to hear your thoughts about power consumption and the ARM computers such as the Odroid-C2 or Raspberry pi 3 8) :slight_smile:

Cheers,
Keith

Well, that is one of the ARM’s major USPs… by drastically cutting down on silicon (amongst other things) they also drastically reduce power draw. Not to mention they run at much lower clock speeds than desktops, typically.

Of course they pay for this by being a lot slower to do many operations. But much of the time they just whiz along happily.

I’ll be testing OpenJDK 8 on the Pi3 soon… be interesting to see what sort of performance I can get out of it.

Cas :slight_smile:

Oh thats great. i’d like to get an rpi3 too, but the price is very high at the moment on eBay.
Here’s an interesting benchmark comparing the performance of an rpi1 and 2 against some desktops by running Doom and quake. I wonder how fair this is considering that these games were optimised for desktop. I also wonder how the rpi3 or odroid ç2 compare

PS: the odroid c2 CPU is 2ghz quad core arm 8 so the processor speed is comparable to a desktop, unless I’m missing something

http://www.phoronix.com/scan.php?page=article&item=raspberry-pi3-odroid2&num=1

One advantage that the RaspberryPI now has over other boards is that it has a driver for running the full desktop OpenGL 2.0 on it (as opposed to just OpenGL ES), should make porting stuff to it much easier.

Also that it has a bigger community, better documentation and so on.

That’s interesting, I didn’t realise that difference.

[quote]Also that it has a bigger community, better documentation and so on.
[/quote]
Very true, and actually there’s a silly bug or deficiency in the odroid c2 Ubuntu drivers where videos are played using software rendering rather than the GPU, making them run very slow on Ubuntu, however on Android this doesn’t happen, they run in hardware. Hopefully this is fixed, but with the smaller community, maybe not.

I’ve used the original Pi but it was just a little too slow to run my games. The new Pi3 should be fine to go into a slim line arcade cabinet and the lack of HDD means it will survive better in a rugged environment than a PC. The lack of moving parts is also a big plus. Isn’t the Pi3 a bit excessive just to turn and off the sprinklers though?

It’s massively overpowered to just act as a switch but… £25. You just can’t really get behind how cheap that is… the mind boggles.

Cas :slight_smile:

I’ve also used Picaxe micro-controllers which look just like a small integrated circuit chip but are fully programmable. They use a language sort of similar to basic. These things are really cheap (from £1.50) and extremely low power. I’ve used them in art projects etc. There is also the Arduino boards that are proving very popular but I haven’t used them yet. Certainly lots of great hardware out there for those that want to tinker with computer DIY.

That’s interesting about the Picaxe, I’d never actually heard of it before or knew that these micro controllers were easily programmable. Looks like they can do quite complicated and funny things:
http://www.picaxe.com/Project-Gallery/Vehicle-Safe-Box/


But connecting to wifi sounds like a nightmare:

It’s true that the odroid-c2’s 2Ghz quad core CPU with 2GB RAM is overkill to turn on a sprinkler switch, but it was the only way my small brain could think of making it switchable remotely using a web browser on my mobile phone or a computer at work. I grow a few fruit trees like figs, mulberries, oranges and in the hot summer they will die if I leave them unwatered for a weekend while I’m away. I could buy an automatic electronic system for about $80 that is pre-programmed but it’s actually not much cheaper than the odroid-c2 SOC ($80), a USB controlled relay (<$20), and a solenoid valve (<$30).
The other thing is that water here is relatively expensive at $2.2/kL and it takes 1.5kL to irrigate the plants on a hot day. Using the remote-controlled odroid-c2 computer I can water when it’s needed, whereas a pre-programmed irrigation controller is more likely to over-water on days when it’s raining and unnecessary.
Also with these flexible SOC computers, it’s possible to hook up a weather station accessory, and maybe even a camera that uploads video or image stills to my server as a security record. But in reality I’ll probably never get around to doing these extra things.

[quote]Certainly lots of great hardware out there for those that want to tinker with computer DIY.
[/quote]
It’s an exciting new field with such cheap and powerful electronics.

I received my odroid c2 in the mail!
I ordered it with a fancy emmc storage chip which is supposed to run faster than an SD card. It came pre-installed with Ubuntu 16.04 based on Kernel 3.14LTS installed with the MATE desktop.
It booted up quickly, and I was able to plug it into my TV using the HDMI port, and my mouse also worked straight out of the box which was a pleasant surprise.
The wifi usb antena I bought from the same company didn’t work straight away unfortunately. It took a while to fix, and I’m not sure what fixed it exactly since I had to restart multiple times, plug in an ethernet cable, update ubuntu and the linux kernel and repeat before the wifi dongle would work. Even now it seems to drop out randomly, but I haven’t investigated fully. Perhaps I’m missing another driver.
I wish the linux installation was stock ubuntu with unity rather than MATE, it would have made it easier to google for solutions to my problems.
One annoying thing is that everytime I shut the computer down, the time is reset to when I first booted it up. I’m not sure if this has something to do with the ordoid c2 not having a real time clock (RTC), or if it’s a problem that I made when I updated the linux kernel or something else. It’s quite annoying since the youtube website won’t work in the Chromium browser, it complains that the https connection is corrupted. Fortunately the time updates itself using the internet after a minute or two and then everything is fine until the next time I boot up.

The system is faster than I expected and usable as a desktop, but I wouldn’t call it fast. There appears to be about a half second delay before seeing any window after opening an app. I’m not sure if this is because the GPU has no drivers installed yet, or if it’s because the 2Ghz processor is slow. Hopefully it’s a GPU issue, which is supposed to be fixed in April:
http://forum.odroid.com/viewtopic.php?f=135&t=18683
“Ubuntu/Linux Mali GPU driver works only on the fbdev at this moment. X11 Mali drivers will be available in March or April.”

The chromium browser works well, but the page loading is slow enough that I can see the css reflow the page as it loads jgo, for example. Unfortunately youtube videos on default HD 1080p settings are choppy with pauses every few seconds, but when I changed the youtube quality to 360p it ran fine. Apparently this slowness is due to the above issue of the VPU or GPU not having drivers yet.
Firefox 64bit bugs out and crashes though this is a known issue with the odroid c2, see the ‘side notes’ here:
http://forum.odroid.com/viewtopic.php?f=135&t=18683

Open JDK was pre-installed, so I tried running my old java2d apps. Unfortunately they immediately threw this error, but it was an easy fix by commenting out a line in a java properties file.

The little ordoid c2 ran my java2d-rendered lighting and pathing project (https://code.google.com/archive/p/straightedge/) in software quite well, painting the small 480x480 window at about 55fps using java 8 openjdk arm 64. I haven’t tested on oracle’s arm java version yet.
This compares to 250fps on my windows i7 laptop (hp dv6 7029tx) running oracle jdk 1.8.0.73. Using the java2d trace option (-Dsun.java2d.trace=log) I can see that the rendering is all done in software (java2d.loops) too so the results are somewhat comparable. I’ll have to try running it with oracle java on the odroid rather than openjdk.

Hi,
I have a ‘java.awt.HeadlessException’ problem with the Oracle ARM 64 JDK. The The OpenJDK version runs fine, no headless exceptions.
I installed Oracle JDK 8u73 “Linux ARM 64 Hard Float ABI” from their downloads page on to my odroid c2 and tried running my Java2D app that uses Swing/AWT and I got a HeadlessException.
Here’s the page where I downloaded the jdk:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

The odroid is a 64-bit ARM computer running Ubuntu, and I know it’s hard float since this directory exists: /lib/arm-linux-gnueabihf.
When I print System.getProperties() I see that java.awt.headless=true. Does anyone know how to fix this?
I notice that the 64-bit ARM jdk is only 74MB but the x64 version is 152MB. It made me think that the missing MB’s are the missing AWT and Swing files. But when I look in look at rt.jar it shows that the javax.swing classes exist ???

I found this related post that our very own @Cas has answered:
https://www.raspberrypi.org/forums/viewtopic.php?t=15014&p=155705
But it’s still a mystery to me how that person downloaded the headful jdk.
If I did download the headful version, then why does the jvm think it’s headless?

Of course my odroid computer is not headless, I’m looking at the desktop on my TV.

Thanks for any pointers :slight_smile:

I tried including the option -Djava.awt.headless=false on the command line when I run java and now I get an:

UnsatisfiedLinkError: Can't load library: /usr/java/jdk1.8.0_73/jre/lib/aarch64/libawt_xawt.so

Gahh, problem solved. Sorry for the multiple posts.
I needed to install the embedded headful version of the jdk which wasn’t listed on the regular Java SE downloads page. The embedded jdk is on its own special page for some reason, here:
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html

Interestingly, the oracle embedded jdk is slower than openjdk when running my little java2d pathfinding and lighting demo ???

java-8-openjdk-arm64 (8u73) runs at about 55fps.
ejdk1.8.0_73/linux_armv6_vfp_hflt (8u73) runs at about 35fps.

Here is a break down of how long the updating (pathfinding and lighting calcs which involve some Math.sin functions), rendering (using java2D) and sleep (System.sleep(1)) take with each jdk.
You can see that the update is much faster on openjdk (2.1ms per frame) compared with the oracle embedded jdk (8ms per frame). The rendering is faster too, but the sleep is the same.

usr/lib/jvm/java-8-openjdk-arm64/bin/java
CodeTimer loop.run : mean period = 17.0901ms (count = 293, time = 5007.4107ms)
    update    12.31%    2.1037ms (count = 293, time = 616.3806ms)
    render    80.09%    13.6876ms (count = 293, time = 4010.4525ms)
    sleep     7.6%      1.2989ms (count = 293, time = 380.5777ms)

/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt
CodeTimer loop.run : mean period = 27.2585ms (count = 184, time = 5015.5651ms)
    update    29.37%    8.0067ms (count = 184, time = 1473.2273ms)
    render    66.51%    18.1293ms (count = 184, time = 3335.7976ms)
    sleep     4.12%     1.1225ms (count = 184, time = 206.5402ms)

I wonder how the open jdk can be faster than oracle’s embedded version? Strange

Both running client VM?

Cas :slight_smile:

OpenJDK is running the server VM, and since it’s linux I don’t think there is a client version.
I also believe that there’s no special client or server version of the oracle embedded jdk either, but maybe I’m wrong.
EDIT: Oops, the oracle jdk says it’s an embedded client version. But I see no server version on the oracle download page.

Here are the System.getProperty() dumps for each.

OpenJDK:
java.runtime.name=Java™ SE Runtime Environment, sun.boot.library.path=/usr/java/jdk1.8.0_73/jre/lib/aarch64, java.vm.version=25.73-b02, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=:, java.vm.name=Java HotSpot™ 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=US, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine Specification, user.dir=/home/odroid/Desktop, java.runtime.version=1.8.0_73-b02, java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment, java.endorsed.dirs=/usr/java/jdk1.8.0_73/jre/lib/endorsed, os.arch=aarch64, java.io.tmpdir=/tmp, line.separator=
, java.vm.specification.vendor=Oracle Corporation, os.name=Linux, sun.jnu.encoding=UTF-8, java.library.path=/usr/java/packages/lib/aarch64:/lib:/usr/lib, java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.version=3.14.29-37, user.home=/home/odroid, sun.arch.abi=gnu, user.timezone=, java.awt.printerjob=sun.print.PSPrinterJob, file.encoding=UTF-8, java.specification.version=1.8, java.class.path=., user.name=odroid, java.vm.specification.version=1.8, sun.java.command=SysPropsPrinter, java.home=/usr/java/jdk1.8.0_73/jre, sun.arch.data.model=64, user.language=en, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.X11.XToolkit, java.vm.info=mixed mode, java.version=1.8.0_73, java.ext.dirs=/usr/java/jdk1.8.0_73/jre/lib/ext:/usr/java/packages/lib/ext, sun.boot.class.path=/usr/java/jdk1.8.0_73/jre/lib/resources.jar:/usr/java/jdk1.8.0_73/jre/lib/rt.jar:/usr/java/jdk1.8.0_73/jre/lib/sunrsasign.jar:/usr/java/jdk1.8.0_73/jre/lib/jsse.jar:/usr/java/jdk1.8.0_73/jre/lib/jce.jar:/usr/java/jdk1.8.0_73/jre/lib/charsets.jar:/usr/java/jdk1.8.0_73/jre/lib/jfr.jar:/usr/java/jdk1.8.0_73/jre/classes, java.awt.headless=true, java.vendor=Oracle Corporation, file.separator=/, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.cpu.isalist=

Oracle embedded JDK:
java.runtime.name=Java™ SE Embedded Runtime Environment, sun.boot.library.path=/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/arm, java.vm.version=25.73-b02, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=:, java.vm.name=Java HotSpot™ Embedded Client VM, file.encoding.pkg=sun.io, user.country=US, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine Specification, user.dir=/home/odroid/Desktop, java.runtime.version=1.8.0_73-b02, java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment, java.endorsed.dirs=/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/endorsed, os.arch=arm, java.io.tmpdir=/tmp, line.separator=
, java.vm.specification.vendor=Oracle Corporation, os.name=Linux, sun.jnu.encoding=UTF-8, java.library.path=/usr/java/packages/lib/arm:/lib:/usr/lib, java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot Client Compiler, os.version=3.14.29-37, user.home=/home/odroid, sun.arch.abi=gnueabihf, user.timezone=, java.awt.printerjob=sun.print.PSPrinterJob, file.encoding=UTF-8, java.specification.version=1.8, java.class.path=., user.name=odroid, java.vm.specification.version=1.8, sun.java.command=SysPropsPrinter, java.home=/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre, sun.arch.data.model=32, user.language=en, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.X11.XToolkit, java.vm.info=mixed mode, java.version=1.8.0_73, java.ext.dirs=/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/ext:/usr/java/packages/lib/ext, sun.boot.class.path=/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/resources.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/rt.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/sunrsasign.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/jsse.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/jce.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/charsets.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/lib/jfr.jar:/usr/java/ejdk1.8.0_73/linux_armv6_vfp_hflt/jre/classes, java.vendor=Oracle Corporation, file.separator=/, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.cpu.isalist=

Any news on your raspberry pi 3? 8)

Well, there you have it then. The server VM is considerably faster than the client VM normally though it takes a little while longer to warm up. Does OpenJDK expose the 2-tier compilation flags?

The RPi3… total disaster. Some genius decided to alter the pinouts on the GPIO pins without really any good reason to do so, so the RS485 hat I plugged into it just did… nothing at all. Spent all day sleuthing on Google trying to find out how to configure it the same as the Pi 2 but so far to no avail - it seems that they’ve quite drastically changed the NOOBS installation for the Pi 3 and it’s all so new nobody’s figured it all out yet. This is bearing in mind that the RS485 hat I bought was specifically advertised as compatible with the Pi 3.

In practise this means that everybody’s stuff - all those hardware hats - will just not work if you swap your Pi 2 out for a Pi 3, expecting it all to be just the same. This is just f**kwitted beyond words. I really do have no words to describe whoever thought this was a good idea.

So after wasting the entire of Friday on the Pi 3 I just plugged it all into the Pi 2 instead and after a reasonable amount of dicking around it just worked (top top: disable ttyAMA0 in config.txt and inittab getty stuff, and also increase UART clock speed to 16Mhz to get decent baud rates on the UART pins).

Cas :slight_smile:

That’s interesting how the server VM makes such a big difference.
Apparently tiered compilation is in OpenJDK:


I’ll try it tomorrow and report back any speed differences.

Sounds like a nightmare with the GPIO. Being a cutting-edge new computer I can imagine that you might be the first person running into these troubles.
Can you hook up the pins manually somehow? Perhaps light them up with LED’s or something to figure out how the layout has changed from the Rpi2 to the Rpi3.

I’ve wasted lots of time too. But most of my troubles are with linux and drivers. I have to reset my NetworkManager ubuntu app every 15 minutes to keep my usb wifi dongle working. I still haven’t found a solution for it, and the wifi dongle was purchased with the odroid-c2 along with the linux distro so you’d think they’d have made sure it was compatible.

In theory I should be able to reassign the pins back to what they were originally using something newfangled called an “overlay” but of course we’re getting into the black arts of Satan and hair-pulling territory that Linux people seem to enjoy so much, which explains why most of them are bald and insane.

Cas :slight_smile: