2018-04-09
Power consumption numbers for my 2018 home and work machines
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.