Power consumption numbers for my 2018 home and work machines

April 9, 2018

It's been a while since my previous set of power consumption numbers for a desktop, which I made back in 2011 for my 2011 home (and office) machine. This time around, I have two slightly different machines and two sets of power numbers. My office machine is a Ryzen 1800X with a Radeon RX 550 graphics card; my home machine is an Intel i7-8700K using its integrated graphics.

Unless otherwise stated, all of the following power measurements are with X running, my normal desktop environment, and the screen unlocked. This turns out to matter with the Radeon RX 550. All figures are somewhat approximate.

Ryzen Intel
powered off 1-2 watts 0 watts
in the BIOS's fancy 'EZ-Mode' screen, where the BIOS displays various hardware monitoring graphics ~83 watts ~56 watts
idle in Linux with the screen blanked and my LCD(s) in power save mode 56 watts ~40 watts
idle in Linux with the screen unlocked 66 watts 40 watts
a single core busy with a simple CPU soaker 92 watts 67 watts
four real cores (not HyperThread/SMT pairs) busy with a simple CPU soaker 121 watts 103-104 watts
all cores busy with a simple CPU soaker 194 watts 139 watts
running mprime -t (it uses all cores) 200 watts 174 watts
running GpuTest's 'fur' test at 1024x800 126-136 watts 73 watts
mprime -t plus GpuTest 258 watts 185 watts
compiling Firefox's development tree from SSDs 165-185 watts 144-154 watts
playing a fairly dynamic 1920x1080 video full screen with mplayer (using VDPAU) 77 watts 45 watts

(Based on power draw, GpuTest's 'fur' test appears to be more GPU intensive than glmark2. The mprime numbers are for relatively early in its test run, because I only have so much patience.)

On the Ryzen machine, blanking the screen and getting the Radeon RX 550 to put the LCDs into DPMS power saving mode consistently saves about 10 watts while doing any of the CPU-focused things (one exception is compiling Firefox, where it saves more, perhaps because Firefox's build system normally sprays a ton of text over your terminal). With the Intel's integrated 'UDH' graphics there appears to be basically no power savings to be had there, at least in the current Fedora 27 environment. The Radeon RX 550 is driving two LCD panels and the Intel is only driving one, but I hope that that doesn't make a big difference.

(They're all 1920x1200 Dell U2412M LCDs.)

Regardless of exactly why, it's clear that the Ryzen based system uses substantially more power than the Intel one. The gap would be smaller if the Intel had a graphics card, but it seems likely that there would still be one (one source says one RX 550 card drew almost 7 watts at idle, although it's not clear if that's with the LCD panel in power saving mode). The power draw difference rises as the CPU usage goes up, too, which suggests that it's not just the GPU.

I have an earlier set of Ryzen power measurements from when I had to use the 'amdgpu.dpm=0' kernel command line parameter to prevent system hangs (sort of covered here). Based on the power usage in them, amdgpu.dpm=0 on my hardware appears to put the Radeon in its lowest power state and avoid the 10 watt power usage for just lighting up the display. Running GpuTest added about 10 watts of system power draw and presumably didn't perform anywhere near as well as it does now (I didn't save performance information).

These two machines have slightly different sets of disks, which may affect their relative power usage; the Ryzen has two SSDs and three HDs, while the Intel has two SSDs and two HDs, although they're 3TB full-height drives and thus perhaps more power hungry. Unlike last time, I've decided that HD power usage isn't interesting enough to measure and report, especially since my important data is on SSDs now.

Compared to my 2011 machine, I think that both the Ryzen and the Intel have improved, although things are more mixed for the Ryzen (partly due to the increased power demands of the graphics card). The Ryzen is almost even at idle or low load, while the Intel i7-8700K is clearly better (despite still being a 95W TDP Intel CPU). At higher load, such as an all-core CPU soaker, the Intel is a clear winner and the Ryzen sort of pulls ahead at comparable levels (eg four CPUs to four CPUs). At truly full power both probably draw more than my 2011 machine (I don't have figures for mprime or GpuTest for it), but they deliver far more performance for that.

(The Intel runs all 12 CPUs of the CPU soaker at 139 watts, compared to 154 watts for 4 CPUs in the i5-2500 in my old machine.)

PS: If there's additional power draw figures of interest, ask; I'll have the Kill-A-Watts on both machines for a bit longer.

Sidebar: A tale of CPU soakers and power draws

I didn't keep notes, so I don't know for sure what I ran as a CPU soaker in my 2011 measurements. But I can guess, because I'm lazy and I would have kept any special tools I wrote for this (and I can't find any sign of them). So I'm pretty sure that back in 2011, I soaked CPU by just using a do nothing while loop in my usual shell (ie, 'while (;) {;}'). With only four CPUs at most, it was feasible and reasonable to test multiple CPUs by just getting more xterm windows. Here in 2018, though, I would up writing a very simple CPU soaker in Go; the heart of it is an endless loop that increments an integer.

(I wrote a Go program for this because I wanted it to automatically use all of the CPUs available and also to easily control how many CPUs it used. Go offers convenient features for both.)

Somewhat to my surprise, it turns out that this integer Go CPU soaker has a clearly different power impact than my shell while loop. Not just that, my while loop has a different power impact in rc and in Bash. The numbers above are for the rc version, so here are the numbers for all three, on both platforms, for one CPU, four CPUs, and all CPUs.

  • Go eatcpu: on the Ryzen, 83 watts, 96 watts, and 130 watts; on the Intel, 60 watts, 78 watts, and 97 watts.
  • while in rc: on the Ryzen, 92 watts, 121 watts, and 194 watts; on the Intel, 67 watts, 103-104 watts, and ~139 watts.
  • while in Bash: on the Ryzen, ~91 watts, 117-118 watts, and 182-183 watts; on the Intel, 71-72 watts, 115-116 watts, and ~155 watts.

(Note that neither shell while loop does any system calls, including fork(); everything going on is happening within the main shell process.)

In a way this is not a surprise. The Go version must be a very tight loop that quite possibly executes entirely out of the CPU's cache of decoded micro-instructions. The rc and especially the Bash version likely involve much more machine code and thus require many more pieces of the CPU to be powered up and doing things. But the interesting bit of this is the relative power difference between Bash and rc on the Ryzen, where the while loop in Bash actually appears to draw less power. I have no explanation for this.

Comments on this page:

By Matt at 2019-12-07 16:15:05:

What are you using to measure power consumption?

By cks at 2019-12-08 02:30:07:

All of these power measurements are with a consumer plug in external power meter (a 'Kill A Watt', specifically). We've actually had the same power meter for years at this point, so my measurements across systems have been made with the same unit and so should be comparable (assuming that the unit hasn't gotten inaccurate as it has aged, although we don't use it much).

Written on 09 April 2018.
« The interesting question of whether Ubuntu 20.04 LTS will include Python 2
Our real problem with a removal of Python 2 is likely to be our users »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Apr 9 23:08:56 2018
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.