Idle PC power consumption

After measuring ~62W at idle for the Ryzen 6 1600 desktop system, it was time to figure out which component is responsible and how the power consumption could be reduced. In order to compare the system to some other, the whole system consists of:
  • CPU: AMD Ryzen 6 1600
  • Board: Gigabyte GA-AB350M-Gaming 3 with BIOS version F4
  • PSU: 400 Watt Seasonic Platinum Fanless SS-400FL2
  • RAM: HX426C16FR2/8 (8GB HyperX)
  • Graphic: Asus Radeon R7 370 Strix Gaming, 2GB
  • Drives:
    • Samsung SSD 850 EVO 500GB
    • WDC WD40EZRX (4TB Desktop hard disk)
    • FUJITSU MHV2100BH PL (100GB Notebook hard disk)
    • HL-DT-ST BD-RE (Blu-ray drive)
  • Many USB devices
  • PS/2 keyboard
  • Fan: Only for CPU, slow 800RPM
  • OS: Linux Debian Stretch with a 4.13.2 kernel
Measurements were done with a Olympia EKM 2000 and a Voltcraft SBC-500. While the first one displays the consumption continuously and therefore is good for quickly watching changes, it has a limited resolution of around 2W. Moreover it starts to do false readings if the load is low and non resistive. So it is not used for some of the measurements. The second device is intended for standby measurement and every new measurement takes a second and requires pressing a button. To get a more accurate result, three measurements have been made with the SBC-500 device, and the average value has been calculated. The three measurement points are given in the brackets.

Power consumption after login

EKM 2000: 60W
SBC-500: 63.2W (62.9W, 63.1W, 63.6W)
So both devices measure a similar, but not equal value.

Enabling second monitor

EKM 2000: 82W
SBC-500: 98.2W (96.8W, 89.2W, 99.6W)
The used graphic card can not clock down, once more than one monitor is enabled. So consumption is high even when both screens show just the same static 2D clone image. This is a major drawback of this graphic card and is hopefully fixed in a newer generation. The huge differences between the two measurement devices might need another explanation.

Spinning down the 3.5" hard disk

EKM 2000: 58W
SBC-500: 61.4W (61.8W, 60.9W, 61.4W)
This is once again measured with only one monitor. The saving is around 2W on both devices.

PCIe power link management

cat /sys/module/pcie_aspm/parameters/policy
gives the result
default performance powersave [powersupersave]
so power saving is already enabled. Setting the value to default or performance, increases the consumption to:
EKM 2000: 62W
SBC-500: 66.8W (66.5W, 66.6W, 67.2W)
Regardless of which device delivers the right values, the power saving method in the kernel already works for us as it saves at least 4W. Measuring will continue with powersupersave

Enable SATA power link management

By default, SATA power link management is disabled. Enabling can be easily done with powertop. New readings:
EKM 2000: 56W
SBC-500: 59.6W (59.3W, 59.9W, 59.6W)
So enabling this by default would help saving about 1.5W to 2W.

Reduce wakeup calls

powertop displays the number of CPU wakeups per second. After login, this value was at 1000...1200 wakeups/s. Closing all applications who are most responsible for the wakeup leaves us with a desktop with just ~57 wakeups/s. New power reading:
EKM 2000: 48W
SBC-500: 50.2W (50.1W, 50.9W, 49.7W)
Making sure no application wakes up the CPU obviously is important, even when the wakeups are short and don't consume significant CPU time. Savings: 8W - 9.5W.

Remove USB and LAN

Just leaving the PS/2 keyboard, gives:
EKM 2000: 44W
SBC-500: 47.6W (49.8W, 46W, 47W)
So the USB powered switch, USB Hub, Mice, AVR Programmer, Headset, USB RC-5 Remote, Speakers and Ethernet link take about ~2.6W - ~4W.

Disconnecting both hard disks and the Blu-ray drive

Leaving just the SSD:
SBC-500: 45.6W (45.4W, 46.8W, 44.6W)
The EKM 2000 started to give false readings and therefore was not used further. So all three drives together consume ~2W at idle.

Removing the graphic card

Adding LAN connection again, and login over ssh:
SBC-500: 20.3W (20.3W, 20.3W, 20.3W)
The wakeups have reduced once more and are now at 11 - 30/s. So obviously the graphic card had a main part in the overall power consumption of about 25W even when idle and just one screen connected!

Getting down to the minimum

What's left? Enable all power saving options with powertop, remove the keyboard and logout from ssh.
SBC-500: 20.2W (20.1W, 20.6W, 20W)
So maybe this saves some power, but it falls within the error range of the measurement.

The power cord

There is still something left - there is a red light in the extension power cord used. It measures:
SBC-500: 0.34W (0.35W, 0.34W, 0.34W)
Subtracting this from the 20.2W, the Ryzen runs with less than 20W idle!

Conclusion

Total idle power ~63.2W
Graphic card (one monitor) ~25.3W
CPU, Motherboard, Fan, SSD, PSU ~19.9W
CPU wakeups ~9.4W
Hard disks, Blu-ray ~3.8W
USB devices ~2.6W
SATA Links ~1.8W
Lighting switch in power cord ~0.34W
In order to reach a lower idle power, it is important to select a proper graphic card. Using 45W in idle for a dual monitor setup displaying a static 2D image is too much! Second, reduce the CPU wakeup calls and make sure PCIe power link management is enabled. Spinning down hard drives, enabling SATA power link management and remove unused USB devices helps saving too. The other power saving settings in powertop seem to save very little and therefore are not required on a desktop PC.