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?
Just yesterday I found this video talking about this very topic: https://www.youtube.com/watch?v=MucGkPUMjNo
When I built my NAS I intentionally bought the latest gen cpu, but kept it in to the 65W series with a GPU chip onboard. It’s an AMD Ryzen 5 7600 6-Core @ 3800 MHz. My coral usb does frigate and the integrated graphics chip does jellyfin just fine. I started with ssds, but half of them burned out pretty quick, so I replaced them with spinning rust. But, as-is it can run for an hour on my desktop grade UPS before it shuts down. My proxmox cluster is old laptops that mount an NFS drive from my NAS. So, yes, I took power efficiency into account.
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.
Just as a reference, my NUC with 40+ containers, runs at around 3-4 W, not counting the 2,5" 5400 rpm HDD attached.
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.
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.
What’s the timeout on a TCP connect?
Could you not wake from suspend in that window? Maybe even a full hibernate?
The TCP connection time out on linux defaults to a bit over two minutes, although individual client programs can use different values, and I’m assuming Windows is similar. Honestly, I was thinking about the time to boot a server, but if you’re just suspending you’d almost certainly be ok, albiet with a slight power draw even when the machine is not in use. Hibernating might also be ok as long as your hardware gets through its POST quickly.
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.
You might be surprised how little power it’s sipping when sitting idle. Unnecessary disk accesses might be the biggest power use in those hours, but that’s more likely to cost you due to wear and tear and eventual replacement of the drive.
I recommend buying a Kill-a-watt and monitoring your power consumption on the server for a week or two. Then do some math to see how much it’s actually costing your energy bill. If it’s actually considerable, then try using tools like
powertopto see if you can determine what’s generating all the activity.Downsizing. If you don’t need to run or keep stuff, then you don’t need so many servers and storage. You may run stuff on cheap mini-pcs.
Sleep: In my experience sleep sucks, I’ve spent long hours planning around sleep in homelab, like: when do I restart, do updates, when do I upload backups. I have Pi and at some point I realised some actions on Pi need my sleeping NAS… so I dropped all the sleep and now it works 24/7.
I split my loads (gigity) between the power hungry NAS and a passively cooled low power Proxmox host.
For me, most 24/7 activities are low CPU - like Home Assistant, so it needs to be there, but it doesn’t need to do anything.
Other VMs are ansible, uptime kuma, smokeping, etc… the most they use is RAM
Then the (relatively) more power hungry NAS powers up 3 times a day to syncthing everything, maybe upload a backup, and if no-one’s using Immich, etc. then it’ll power back off again.
The only other thing I have yet to downsize is my pfSense box (still a low powered device, but has fans…) and a Raspberry Pi I use for my Zigbee network.
As someone else here mentioned, isknf powertop can significantly reduce consumption at idle, which helps.
In the world of servers, though, unless a device is only accessed once a day, it’s tough to get the HDD to spin down.
spinning-down hdd’s when they’re not in use
I’ve just been through this recently. I decided to have my 2 backup HDDs spin down when not in use (99% of the time). I ran into an issue though where I needed them to wake up for SMART tests (which SMART didn’t trigger). Tried a few things that didn’t work so just set them to spin all the time. There’s about a 1-2w difference when they’re spinning all the time. So it’s just not something worth worrying about IMO (In the UK with high energy costs that comes out to 2.5 pence per day roughly).
There’s about a 1-2w difference
Yeah, you got to pick your battles.
Spinning up and down hard drives repeatedly drastically reduces their lifespan though. Once a day or so, fine, but if you set a 30 minute idle time or something and it spins them down a dozen times per day, you are putting acceleration forces on the drive many more times than intended.
If you have to buy a new HDD twice as often because you spin it down, any financial or environmental savings is instantly negated and in the end it is much, much worse in both respects.
backup HDDs
They were spun down the majority of the time. I’m not an idiot.
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 PSU Power Supply Unit SATA Serial AT Attachment interface for mass storage
[Thread #204 for this comm, first seen 1st Apr 2026, 10:30] [FAQ] [Full list] [Contact] [Source code]
Added solar and a battery. I don’t worry too much about the power use as a result.
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.
Try testing TLP in battery mode even if you’re not using a laptop. You can configure all kinds of things to your liking with it.
I tried it out a few years ago and none of my server apps showed any noticeable decrease in performance with it running, but my power monitoring plug did show a reduction in power consumption. I ended up leaving it enabled all the time.





