Technology

Attempting to Reduce Power Consumption and Improving Performance

By April 10, 2022No Comments
Finished picture of rack loaded with new SFF servers.

Introduction

My electric bill is expensive. I need to reduce it. I don’t enjoy every month seeing my home lab is the main cause for my high energy bill.

Image of home assistant's energy dashboard overwhelmingly showing home assistant to be the chief consumer of electric in my house
Energy usage for previous month… My rack is nearly half of all consumption

So, I wanted to reduce this usage a bit, without affecting performance.

Step 1. Adding more servers

Sounds counter-productive, right?

Well, currently, I have everything hosted on my ancient dell R720XD. Its not the most efficient thing in the world. The plan was to take my primary services and host them on a newer, more modern machine so that I can perhaps schedule my r720XD to shutdown at times.

Hardware

For hardware, I decided to pickup a pair of Dell SFF Machines.

7040 SFF – i5-6500 + 8G of ram – 100$

EBay Link

I plan on using this machine to host my Blue Iris instance. The i5 offers rudimentary hardware encoding, and 8G of ram is plenty.

I added a 8T WD Red HDD for bulk NVR footage, and a 500G WD Black for “new” footage.

I purposely chose the WD Black, because it is cheap. The NVMe tied to the new storage will be constantly written to, and will eventually burn out.

For the OS drive, I found new 128G NVMe drives for 15$ each. I used a 12$ adaptor to install it into one of the PCIe slots.

12$ NVMe Adaptor, with 14$ 128G NVMe installed.
7040 with 8TB WD Red installed. NVMe not yet installed

7060 SFF – i7-8700 + 16G – 400$

EBay Link

For my container host, I chose a more modern device with an i7-8700. This offers 6c and 12t, with a good clock speed. As well, the quick sync is quite effective. This will be very handy for plex transcoding.

The 7060 does offer a lot more features over the 7040, including a few extra ports.

For additional hardware, I installed…

  1. (Amazon) Samsung 980 evo – 99$
    1. This will host /var, where all of my containers and their associated data will be stored.
  2. (Amazon) KIOXIA 128G NVMe – 14$
    1. This will be the primary OS drive. This is the same NVMe I also used for the NVR box.
  3. (EBay) Mellanox ConnectX-3 Dual Port 40GBe – 50$
    1. Point to point between my TrueNAS server, and my container host. Hardly more expensive then running 10G….

Migrating my container setup.

I am going to skip over the boring details of migrating my containers, however, everything was stored in docker-compose files, and this essentially was just a matter of moving the compose files over, and copying data where needed, and then updating the DNS record to point my load balancer at the new IP.

I will note, for plex, nextcloud, and other storage-heavy containers, I leveraged NFS from within my docker-compose files to connect back to the primary NAS.

Power Savings – 15 watts

Power chart before/after migrating over container configurations.

While, 15 watts does not sound like a dramatic improvement in power consumption, Remember, this is the savings after ADDING another server. I did not shutdown any of my hardware. This is solely savings from migrating the loads from the r720XD over to the new 7060SFF.

Migrating my NVR

To migrate the NVR, I simply installed windows server on the new device, installed Blue Iris, and imported my old configuration. I then configured new footage to be stored on the 500G WD Black, and configured long-term storage on the 8T drive.

And, then, I shutdown the NVR VM which had been running on TrueNAS.

Power Savings = -10w

Well, we didn’t actually save energy here, but, rather, used 10 more watts. However, remember, the purpose here was to migrate loads away from my TrueNAS server.

Step 2. Removing additional hardware from the r720XD

Since, all of the containers and VMs at this point have been moved away from the r720XD, I wanted to remove one of the CPUs to save on energy.

The server had dual E5-2695v2 processors, and 128G of DDR-3 1333mhz RAM.

r720 XD with CPU 2 removed.

I removed CPU 2, and removed all of its ram, using it to fill any empty slots from CPU 1.

After doing so, I had only a small pile of hardware left over…. 32G of ram, and a processor.

Power Savings – 80w.

Based on initial data after removing the extra CPU, it appeared the power consumption had been reduced by over 80 watts.

Overall reduction – ~100w = 5$ per month.

Keep in mind, at this point, I can safely shutdown my R720XD, which will reduce the overall consumption DRAMATICALLY. This system was using an average of around 300-400w 24/7 when I started this project.

Now, it is using 200-250w average, which is nearly a reduction of half. Some of the energy savings were lost when I used the i5-6500 for my NVR box, however, it is still a net reduction.

iDrac power usage AFTER changes.

Total Monthly Savings = A few bucks, maybe.

Lets assume I shut the r720XD down at nighttime, and fire it back up at 7am for a total of 10 hours of downtime per day. I can do this, because all of the important containers and workloads were migrated to the new SFF machines.

This machine now uses ~220w average. ((220 * 24 hours * 30 days) / 1,000 watts ) * 0.08 (cents / kwh) = 13$ of energy per month.

It WAS using 30$ per month in energy. However, I think the majority of this load is/was coming from its NVR duties.

Unexpected performance gains.

Right before I deprovisioned the hardware in my r720XD, I had ran benchmarks against my spinning array over iScsi.

Benchmarks before removing the 2nd CPU.

However, I noticed a improvement of benchmark performance after removing the 2nd CPU.

Benchmarks after removing 2nd CPU.
Real world performance benchmark.

Performance shot up quite a bit…. in some scenarios, it was quite dramatic.

Comparing the performance of my NAS, versus a locally installed 970 evo….. the performance gap is getting closer.

While, the local drive can push out quite a few more IOPs, in terms of bandwidth, the remote storage isn’t doing bad at all. Regarding writes, the penalty is understandable since it is writing to a mirrored pool.

Summary

While, I actually failed to reduce power consumption by any meaningful amount, I did succeed in a few things.

I can do maintenance on my primary storage server without impacting critical services.

My NVR has dedicated hardware.

My container services are much faster with the i7 processor.

My iSCSI/SMB traffic is actually quite a bit faster.

I no longer have to hack up my TrueNAS to run docker containers.

Next Steps?

Well, I have actually been in the process of designing and installing a solar system for over a year now. It may come to be a thing soon, hopefully….

Leave a Reply

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 93 other subscribers

%d bloggers like this: