Managing Cores for VMs


So apparently thanks to my addiction to Tom’s videos I want to install all kinds of stuff on various VMs but I only have 8 cores and 12GB of RAM.

What’s your recommendation for juggling cores around. I can research how much resources a particular OS requires but how do I manage those cores when I use more than I have? Or is that all managed by the hyper-visor. I’m using XCP-ng btw.

In case it matters, here the VMs I’d like to have eventually:
Ubuntu for unifi controller/video
Win10 Sandbox for Torrents
WinServer for learning/testing
WinClient to go with WinServer
Ubuntu/Debian for learning
GNC3 if I can get it to work

Thanks all.


You will figure it out pretty quickly it all depends on use case ETC But ram is your biggest issue, you can never have enough of that.


The VMs cpus are virtual, so you can be over provisioned compared to physical cores. Based on your list of VMs, it sounds like a lot of the VMs will be idle a lot of the time, or you can just shut down the “learning” VMs when not in use. Just keep an eye on your over all server cpu use, and you’ll quickly learn what it can handle, and when you need to dial it back. But like Michael said, RAM will be the resource you’ll need to juggle the most.

1 Like

Can assign them all 8 cores if you want, as @Manipulate stated they can be over-provisioned. Ram will be an issue with the Windows VMs specifically, unifi controller + pfsense + linux learning VMs should be good, but Win10/Win Server will probably need ~4GB a piece and they’ll eat everything you give them.

Slightly off topic, but will save you on resources for 1 VM:

Instead of a Win10 sandbox for torrents, I’d recommend you checkout Atomic Toolkit. It’s a super simple installer/management script for torrent clients, auto downloaders, plex, etc. Runs on Ubuntu. I use it a bunch and it’s great. For torrent client I would recommend Deluge and you can control via web interface or (my favorite) through downloading the main client on your local machine and connecting it as a thin client to the server instance.


Yes memory always gets you I would map the utilization trends and adjust cpu/memory. I will and set a dynamic range for memory but first item would be increase memory capacity. You can also get CPU wait if overprovisioning too much.


Thanks alot! I was over-thinking it. Everything is working fine with barely any overhead. You were right about the RAM too, will have to find more on this old machine.

@Mike Thanks for the torrent info too. I’ll read up on them.


You’re running Ubuntu Server just for UniFi? I recommend using Debian; just install it with SSH support and the basic tools, then add Oracle Java 8 and UniFi. I have that and Pi-hole running in a VM on my Synology NAS. Debian with no GUI boots extremely quickly and uses very little resources.

1 Like