Increase Usable RAM In Your Home Lab Without Buying More Memory

Increase usable ram in your home lab

If you are like me you are doing double takes when it comes to RAM prices. It seems like over the past few weeks it has crept up on me as to how much things have spiked. Hindsight is always 20/20 they say. But, if I had it to do over, I would go back and buy up a few kits back in the summer when things were semi-reasonable at least in line with what we had been paying. However, we can’t change not having stockpiled RAM. I thought I would put together a post to see the best ways to increase usable RAM in your home lab without buying more memory which is something most of us are thinking about.

1. Start by auditing your RAM usage

Before you know where you could possibly cut corners with your RAM usage, one of the first things you can do is see where your memory is actually going. Most home labs, including mine, evolve over time and many VMs or containers may have been created months or years earlier. These may still be running even though they don’t serve a purpose any longer.

Auditing ram usage for vms in proxmox
Auditing ram usage for vms in proxmox

Other VMs or containers in the environment may have been configured with far more RAM than they are actually using. In Proxmox, you can look at the summary view for each node to give you a quick look at RAM allocated vs the actual usage. The QEMU guest agent can also tell you exactly what each VM actually needs. LXC containers show in real-time memory consumption.

VMware and XCP-ng have performance charts that allow you to find VMs that are using less memory than you have allocated. If you are running the full VMware Aria suite, VMware Aria Operations allows you to see “oversized” VMs that are overprovisioned from what they are actually using.

With Docker, you can run docker stats to see memory consumption and spot containers that are maybe running away with memory. You can also use this in your docker compose code to set hard limits on memory usage:

resources:
  limits:
    memory: 4G

So, by the time you get done with your audit, the goal is fairly simple. You want to find the top memory consumers and see which ones are wasting the most RAM in your environment. Often, you can free up a huge amount of wasted resources.

2. Right size your virtual machines

Going along with this idea, this is really a common problem, not only in the home lab, but also production environments. We as administrators of course want to often throw hardware at performance requirements or if issues have been experienced. This makes us “gun shy” to trying to be as efficient as possible with configured resources.

Also, something I have experienced, is that the faster the storage has become, like using NVMe drives in the home lab, the leaner you can reaslistically run your virtual machines. This is due to the fact that NVMe drives handle VMs paging out to disk much better than old “spinning rust” disks did.

Samsung pro 990 gen 4 nvme drive
Samsung pro 990 gen 4 nvme drive

In 2025, you will often find that Linux servers can comfortably run with 1 to 2 GB of RAM unless they host some kind of large databases or applications. Many self-hosted services like FreshRSS, Nginx Proxy Manager, Vaultwarden, Gitea, and other apps run fine with even less.

Windows Server operating systems are typically more hungry for system memory due to the GUI that most run, but roles like domain controllers or small file servers may not need as much memory as you might thing. You may even be able to get away with 4 GB of RAM. I have found that 4 is probably the lowest you can go though, and you may run into paging and other RAM pressure issues with modern Windows versions at around 4 GB of memory.

So, with this information, go through and compare provisioned memory to actual memory used. Reduce your VMs and containers to the lowest stable value and you will likely find that you will reclaim quite a bit of RAM.

3. Migrate apps to containers (Docker and LXC/OCI)

I think one of the absolute best things you can do in 2025 is move services out of oversized VMs or VMs in general and over to containers. Docker and OCI based containers can really cut the amount of memory used as you don’t need the full guest OS inside each instance. A container only runs what it needs to make the application function.

Migrating workloads to docker saves ram
Migrating workloads to docker saves ram

Moving your apps such as Unifi Network Application, FreshRSS, Portainer, Nginx Proxy Manager, Pi-Hole, Home Assistant, or other media stack tools can possibly reclaim tons of memory.

Also, with the new version of Proxmox VE 9.1 supporting OCI containers natively, you can now run Docker images without the need to keep separate Docker VMs. Instead, the new functionality uses an LXC container behind the scenes to provision the OCI container image you download from the registry you want to use.

So, long story short, we may find we need less and less Docker hosts in the form of VMs that may have quite a bit of memory provisioned for our containers.

4. Go from small VMs to LXCs

In the same vein, if an app you are running doesn’t really work as a Docker container, you might find that you can go from a small virtual machine to an LXC container. LXC containers are much more akin to a full operating system than an application container like Docker.

Lxc containers
Lxc containers

These containers use the Proxmox host kernel so they only require a very small footprint to run and these run lightweight services very well. What are some services that might work well in LXC containers? You might consider running things like syslog servers, Git servers, development tools, and other agent-based apps or VMs that you may have that are just running scripts or other kinds of scheduled tasks.

If you cannot containerize an app but want to reduce overhead, LXC containers are a strong middle ground. They provide isolation without the extra memory of running a separate kernel per instance. LXCs work very well for lightweight services, syslog servers, Git servers, development tooling, and many agent based applications.

LXCs are a first class capability in Proxmox as you can natively spin up an LXC container in PVE. These containers generally only require a few hundred megabytes of RAM instead of 1 GB or more, and that is with moderate usage.

5. Reduce your memory reservations

Another thing that can sap a lot of system memory is setting up reservations for a virtual machine. I know in VMware vSphere, admins were bad about setting up reservations for VMs that may not have really needed the memory that was reserved. When you do this, it tells the ESXi host that it cannot use this reserved memory.

Memory reservation in vmware vsphere
Memory reservation in vmware vsphere

Proxmox doesn’t have the same mechanism for reserving memory that ESXi does. It does have the minimum RAM setting, but generally speaking KVM in Proxmox doesn’t allow you to overcommit memory for VMs in the way that ESXi does. So, this is even more important in Proxmox to review what you have allocated for your VMs and LXC containers.

However, reviewing this no matter the hypervisor is ideal since it is always best to only configure the amount of memory that is actually needed.

6. Audit the background services that are running

Another really good idea is to audit the background services you have running. Background service sprawl can easily creep in with various app installs. Also, we might tend to accumulate old monitoring agents, backup daemons, DNS resolvers, etc. By removing unneeded services, this helps RAM usage instantly. Windows Server is notorious for having this problem.

7. Reduce your database memory footprint

If you are running databases like MySQL, PostgreSQL, MongoDB, and Elasticsearch these can consume gigabytes each of memory. The problem is using the defaults with these databases often means they assume they are operating in a much larger environment than a home lab. Home labs usually have low to medium numbers of requests so you may not need the default memory configurations.

Mysql
Mysql

You can look at lowering things like innodb_buffer_pool_size in MySQL or shared_buffers and work_mem in PostgreSQL. This can save a ton of unnecessarily used memory.

8. Use swap

Swap is not really a replacement for RAM but it can definitely help you stabilize your home lab during spikes if you are running lean on RAM. Linux swap files allow your memory to overflow without immediately shutting down a service. ZRAM also helps you increase the capacity of RAM you have available by compressing inactive pages. This is a popular option in both Proxmox and IncusOS.

We will see below how you can cheat your system memory with a few tricks up the sleeve using fast storage and SWAP space.

9. Use a more efficient operating system

There are definitely operating systems that are better than others for efficiency. We all know this, Linux is typically more efficient than Windows Server. Sometimes you can’t get away from Windows as an app may require it, or you are running Active Directory and other Microsoft apps. However, go Linux when you can.

Even then, with Linux, some distros are known to be efficient. Great low RAM choices for Linux OS’es include Debian minimal, Ubuntu Server minimal, Alpine Linux, Rocky Linux minimal, IncusOS, and lightweight Arch options like CachyOS that I reviewed recently.

Cachyos
Cachyos

Choosing the right base OS can have a huge impact on memory consumption. Some distributions are built with performance and minimalism in mind.

10. Stop running GUIs unless these are absolutely needed

Graphical interfaces are great and make things easy, but these also consume more memory than a command line or terminal environment. Most tasks can be done remotely on headless servers and this type of setup is much more efficient. Removing GUIs from Linux servers or choosing Windows Server Core instead of loading it with a GUI is a quick win to reduce your memory footprint.

11. Shut down resources you are not using

This is an obvious one, but shutting down resources that are just running for no reason can reclaim tons of RAM. You may have VMs or container hosts, LXC containers, etc, that may be part of leftover stacks or apps that you no longer use. Power these down to reclaim the RAM they are using. A safe way I always test myself to see if it is an app or service that I actually need is I leave something powered off a month. If I never needed it during that month time period, I generally feel safe to get rid of those resources.

12. Use NVMe memory tiering with VMware ESXi

This is one of the coolest features I think that we have seen from the VMware side of things over the past couple of years and that is NVMe memory tiering. This essentially lets you double, triple, or quadruple your system memory by tiering memory across not only your DRAM, but also using an NVMe drive. I tested this also with Intel Optane and it performed beautifully.

It is not traditional swapping. Instead, it is a dedicated memory tier with significantly lower latency than disk backed swap and far more intelligent caching.

With memory tiering enabled, idle pages get pushed into the NVMe tier while hot pages stay in your RAM. This keeps performance high during normal operation but at the same time, makes room for more VMs and more workloads than the host could normally support.

Configuring nvme memory tiering
Configuring nvme memory tiering

I think NVMe memory tiering could become a whole lot more popular going into 2026 with the shortage of RAM and exorbitant prices. NVMe storage is still relatively cheap, even though those prices will probably go up as well.

For home lab environments that are running VMware ESXi this will be a great feature that you can use to essentially multiply your RAM available for testing out workloads in the environment. Check out my full blog post write up on NVMe memory tiering here:

14. Use Intel Optane for Proxmox Swap storage

Another experiment I played around with not too long ago was using Intel Optane storage as Proxmox swap space. I was inspired to try this out due to the NVMe memory tiering capabilities in VMware ESXi. I ahve to say that I was pleasantly surprised at the results and responsiveness of the virtual machines that I spun up that were physically beyond what the amount of physical RAM I had available to my Proxmox system.

Running the mkswap command
Running the mkswap command

So, if you are having to hold off on purchasing more system memory for your Proxmox mini PC, you might check this out and try it out in your environment. While I used Intel Optane, you could use NVMe storage for this purpose if you don’t have access to any Optane storage. Optane is getting harder to find, but is still out there.

Check out my full blog post on this experiment here:

I also did a video on this one:

Wrapping up

Hopefully RAM prices will eventually fall again after this mad rush levels out with AI datacenters, but in the meantime, we will have to batton down the hatches and run our home labs much more efficiently unless you want to pay the exhorbitant prices we see right now. Realistically, I think all of us could probably reclaim 50% of our memory use if we just do some good thorough audits and implement some of the hacks and memory pressure relieving techniques I have detailed here. What about you? Have you decided to buy memory at current prices?

About The Author

Brandon Lee

Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments