5 years ago, I wrote about the build of the server hosting sandeen.net, which ran using only 18W of power. After 5 years, it was time for an upgrade, and I’m pleased to say that I put together a much more capable system which now runs at only 10W! This system handles external email and webserving, as well as handling media serving, energy datalogging, and backup storage for household purposes. It’s the server which dished up this blog for you today.
If you run a server 24/7 at home, that always-on power consumption can really add up. If you have an old beast running at 250W, that’s using about 2MWh of power per year, and will cost you over $200/year in electricity at $0.10/kWh. A 10W build uses only 4% of that! Here’s how I put it together:
- Jetway NF9W quad-core Celeron N2930 motherboard [newegg]
- Crucial 8GB DDR3 SODIMM [amzn]
- 2x Samsung 850 PRO 256G SSDs [amzn]
- 2x Western Digital Red 3TB NAS HDDs [amzn]
- LIAN LI PC-Q11B case [amzn]
- 60w (12v/5A) AC-DC Power Adapter, efficiency level V
- CentOS 7
I chose this motherboard because it has 4 SATA ports; the pairs of drives are in MD RAID1 mirror configurations using XFS for all filesystems, and the large 3T media drives are spun down most of the time; the system does get over 10W when they’re spinning. And I have to say, the Samsung drives seem really nice; they are warranted for 150 terabytes written, or 10 years, whichever comes first.
I took most of the suggestions from the powertop tool, and I run this script at startup to put most devices into power-saving mode; this saves about 2W from the boot-up state. When boot-up power consumption is 12W, 2W is a significant fraction! ;)
#!/bin/bash # Set spindown time, see # https://sandeen.net/wordpress/computers/spinning-down-a-wd20ears/ hdparm -S 3 /dev/sdc hdparm -S 3 /dev/sdd # Idle these disks right now. hdparm -y /dev/sdc hdparm -y /dev/sdd x86_energy_perf_policy -v powersave # Stuff from powertop: echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy'; echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy'; echo '0' > '/proc/sys/kernel/nmi_watchdog'; # I'm not willing to mess with data integrity... # echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs'; # Put most pci devices into low power mode echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:13.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.1/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:01:00.0/power/control'; # realtek chip doesn't like being in low power, see # https://lkml.org/lkml/2016/2/24/88 # echo 'auto' > '/sys/bus/pci/devices/0000:02:00.0/power/control'; echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control';
The old server took the network down to 100mbps, but that just feels too pokey most days, so I left it at full gigabit speed.
I’ve been very happy with this setup; it runs quiet, cool, fast, and cheap, while using less power than an old-fashioned night-light. Jetway says the board will have a lifecycle through Q1 2019, so hopefully anyone reading this post well into the future can still pick one up if desired.