I’m wondering what folks do to optimise the power efficiency of their Linux servers. I’ve never really got to the bottom of what is the best way to do this and with the current energy crisis its a pertinent topic.
I’m talking about home servers, so the availability requirements are not the same as in a corporate environment. There might be vast chunks of time during the day or night when they sit idle, and home users are more tolerant of a lag when accessing resources if it means lower energy bills.
Specifically I’ve been thinking about:
- allowing lower power states when idle
- spinning-down hdd’s when they’re not in use
- MAYBE letting machines sleep/hibernate
- setting schedules of times where you know demand will be low/zero and efficiency can be managed aggressively
- any other quick wins I’ve missed
It would be amazing if there was one tool or one guide that helps with all of that but thats never the case, is it 😅
Thoughts?
Newer hardware that has lower idle consumption mostly. I’ve found there’s not much to do on a typical setup as far as software optimization, as most OS’s are already set up for pretty low power usage while idle.
HDD sleep can work if you don’t have anything accessing the drives, but with all the stuff running on my server there’s basically always some kind of activity going on so they never sleep. Less HDDs is the answer for me, I just have 2 large drives in a ZFS mirror.
My HP box with an i5-7500 idles around 15-20W which is decently low, but I also have 2 PCs with i3-7100u mobile chips that idle at 1-2W with 32GB of RAM and an NVMe SSD, which is wild.
Avoiding enterprise gear is key, it’s extremely power hungry.
I got a power-efficient mainboard and PSU. I think that’ll be the lion’s share. And I don’t have any unnecessary stuff like a GPU or extra stuff connected.
I ran
powertopand adopted the recommendations to set the various buses, peripherals and devices into powersave mode. That does a few Watts here and there. CPU of course is also allowed to save power when idle.And then I made the harddisks spin down after 40min of not being used. Or something like that. So they’ll automatically spin down at night and when I’m not using them. As spinning hdds consume quite a lot of power if you have multiple of them and compare it to the 15-20W or so the rest of the computer uses. The operating system is on a SSD.
Added solar and a battery. I don’t worry too much about the power use as a result.
Letting go of older inefficient hardware is no 1.
Why run a 200w server when a 30w mini PC or 10w pi can run a dozen containers
The mini PCs draw up to 30W, mine runs at an 8W average
I have never measured my pi consumption but ilo says my DL380 Gen8 idles at between 120w to 180w
Mini PCs are even less usually, mine are around 2W idle which is less than my Pi! (i3-7100u CPUs)
Sadly this. I have a graveyard of nice server boards that I got cheap before realizing how power hungry they are.
For CPUs basically anything older than gen 6 intel is too power hungry (although be careful with Xeon and xeon derived cpus, that are sometimes older gens rebadged as gen 6).
This Jeff Geerling video from a couple of weeks back was an eye-opener.
Just because you might be able to find a cheap G5 Xserve server that runs at 200W when idle, doesn’t mean you should.
My video server runs from 6 pm to 1 am. No need to run always.
Do you have any idea what your hardware is actually pulling from the outlet? Maybe it’s not that bad after all?
Mine is pulling around 55W from the wall in its “normal” state. Meaning two 3.5" HDDs spun up, and a bunch of light services running. Which is squarely in “not great, not terrible” territory.
Apart from flipping the power saver switch on the mainboard I haven’t done anything to save power. I haven’t checked if that’s doing anything either. It’s a 3rd gen core i5 iirc, which isn’t great at idle power consumption, so maybe that switch is doing something…
I also haven’t had any luck with getting the drives to spin down reliably anyways, and afaik it’s better for them to just stay spinning so I haven’t bothered much to change that.
Logging power use by my server was one of the motivators to add homeassistant. That also showed me that specific containers use a (relative) ton of background power. Immich and authentik each raised power consumption by 2-3 watts, so I leave them down unless I have specific need.
Just as a reference, my NUC with 40+ containers, runs at around 3-4 W, not counting the 2,5" 5400 rpm HDD attached.
I had to start over anyways, so I choose SSD only. Pricier of course, but I don’t need a terrible lot of space anyways.
When I still had HDDs, they were usually used once a day for backups, and I spun them down after that.
Optimizing power profiles and C states makes a little difference, but planning with efficient hardware from the beginning is the most important thing. Don’t use your old gaming PC if you care for power efficiency.
Dell Thin Client type machine with a 2TB SSD of the essentials. Backs up once a week to my gaming desktop. Has enough horsepower for Homeassistant, Jellyfin, adblocking. Enough fast USB for two 2.5GBE. Upgraded to 16GB RAM before the crisis, but could make due with 8GB. Cheaper than a raspberry pi for only a few extra watts.
When building you own servers from consumer hardware this is a bit difficult, but getting a PSU that actually fits to the power use profile of the server seems to make a difference. Sadly it is hard to get small PSUs with sufficient SATA power connections.
I use powetop on laptops to recommend config optimizations, it could run on a server too.
hdparm can configure HDDs to powerdown, but I’ve never had any success using it on my router.
In theory I think You could use WoL and have your router wake a device before sending traffic but I haven’t seen any guides for doing this so maybe I’m missing something.
WoL works, but your server will take some time to come back online, but the router probably wont be able to buffer the traffic for that long, and a tcp connection would likely timeout before then anyway. You usually want to send the WoL magic packet, wait for the server to come back online, and only then start sending traffic.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters NUC Next Unit of Computing brand of Intel small computers NVMe Non-Volatile Memory Express interface for mass storage PSU Power Supply Unit SATA Serial AT Attachment interface for mass storage SSD Solid State Drive mass storage ZFS Solaris/Linux filesystem focusing on data integrity
[Thread #204 for this comm, first seen 1st Apr 2026, 10:30] [FAQ] [Full list] [Contact] [Source code]





