Technical Anshu
Tutorials Blog
Sizing Guide

Ubuntu VM Sizing on ESXi How Much CPU Memory and Storage to Give It

Give an Ubuntu VM too little and it crawls; give it too much and you starve the host and every other VM on it. Sizing advice online ranges from fantasy minimums to datacentre excess. This page gives starter numbers you can trust, then shows you how to measure and adjust like an administrator instead of guessing forever.

By Technical AnshuVMware ESXiCPU RAM storageMeasure before you grow
Watch the full video - Ubuntu virtualization on ESXi, the setup, configuration and troubleshooting, step by step

Sizing a virtual machine feels like it needs a formula. It mostly needs three honest facts: Ubuntu Server is genuinely light, Ubuntu Desktop is a full desktop and priced like one, and the host's physical RAM is a wall that no setting can move. Start from the numbers below, run the VM for a week, then grow only what the measurements indict. That method beats every 'perfect sizing' table on the internet.

Starter sizes that work (guidance, not gospel)
Ubuntu Server - light services2 vCPU / 2 to 4 GB RAM / 25 to 40 GB disk
Ubuntu Server - busy services2 to 4 vCPU / 4 to 8 GB RAM
Ubuntu Desktop2 to 4 vCPU / 4 to 8 GB RAM / 40 GB plus disk
Host reserveKeep real RAM and datastore space for ESXi itself
Example starter allocations - your real numbers come from measuring your own workload
1

Start Here - Numbers That Work

Ubuntu Server for services (files, web, monitoring, containers, a small database): 2 vCPU, 2 to 4 GB RAM, 25 to 40 GB disk. Ubuntu's own minimums are lower - it will install in less - but minimums describe survival, not a machine you enjoy administering. A genuinely idle server (DNS, a jump box) can live on 1 vCPU and 1 to 2 GB.

Ubuntu Desktop: 2 to 4 vCPU, 4 GB RAM as the floor and 8 GB if a browser with real tabs is involved, 40 GB disk and up. The graphical environment itself is a permanent background workload before you open a single application.

Disk honesty: a fresh Ubuntu Server sits well under 10 GB used. Give room for logs, updates and growth - but with thin provisioning, unused provisioned space costs nothing until written, so 40 GB provisioned on a 100 GB datastore is a plan, not a waste.

2

The Host Pays First

ESXi and its management services consume host memory before any VM starts - think in terms of a few GB on a typical install, more with large configurations. The arithmetic that keeps you safe:

  1. Total RAM you hand to running VMs should leave the host's own share untouched, with headroom for spikes
  2. A powered-off VM costs no RAM - labs can own more VMs than the host can run at once, as long as you are honest about which ones run together
  3. Datastore free space is a host resource too: keep a real margin (a working rule is to stay under roughly 80 percent committed) because snapshots and thin-disk growth eat from the same pool

When a host starts swapping or a datastore fills, every VM suffers at once. Sizing is how you protect the neighbours from each other.

3

vCPU - Slices, Not Cores

A vCPU is a scheduled slice of a physical core's time, not a private core. Consequences that surprise newcomers:

  1. One busy host runs many VMs fine because most VMs are idle most of the time - that sharing is virtualization's whole economy
  2. Adding vCPUs to a struggling VM can make it slower on a busy host: a wide VM must wait for many cores to be free at the same moment before it can run
  3. Most Ubuntu services are perfectly served by 2 vCPU. Grow to 4 when measurements (sustained CPU saturation inside the guest, with the host not already saturated) say so

Inside the guest, top and nproc tell you what it sees; on the host, the VM's performance tab tells you what it actually got. Trust the pair, not either alone.

4

Memory - the Hard Wall

CPU time can be sliced thin and shared gracefully; memory cannot. ESXi has emergency tricks when VMs collectively demand more RAM than exists - ballooning (asking guests to hand memory back) and, at the end of the line, host swapping to disk - and a VM whose memory is being swapped is a VM in pain, however cheerful its settings look.

So the discipline is simple:

  1. Budget host RAM like money: hypervisor first, then VMs, then a reserve you refuse to spend
  2. Leave memory reservations and limits at their defaults (none) unless you have a specific, written-down reason
  3. Inside Ubuntu, free -h separates real pressure from Linux simply using spare RAM as cache - a full "buff/cache" column is health, not hunger
  4. If a VM genuinely needs more, give it more while powered off, and take it from the budget honestly
5

Measure for a Week, Then Adjust Once

The professional loop: create the VM at the starter size, run its real workload for a week, then read three numbers - guest CPU saturation, guest memory pressure (free -h and swap usage), and the host's overall saturation. Grow the resource that is provably short, by one step, and keep a note of what you changed and why.

What this beats: creating every VM at the biggest size "to be safe" (which guarantees the host runs out and everything is slow together), and chasing every graph spike with a settings change. Virtual machines are adjustable by design - use that, and let evidence drive it.

Watch Ubuntu on ESXi in the Video

The full process on a live ESXi host - creating the virtual machine, installing Ubuntu and fixing the common problems, exactly as they appear on screen.

Watch Full Video
Frequently Asked Questions

Can I assign more RAM to my VMs than the host physically has?

ESXi will let you configure it and even power VMs on, using memory overcommit tricks - but when the running VMs actually need that memory at the same time, the host balloons and then swaps to disk, and performance falls off a cliff. Budget the RAM of simultaneously running VMs against the physical total minus the hypervisor's own share, and treat overcommit as a safety net, not a plan.

Is 1 vCPU enough for an Ubuntu Server VM?

For light duties - DNS, a VPN endpoint, a monitoring target, a practice box - yes, honestly it is. Services with real work (databases, file serving to several users, container stacks) earn 2 vCPU quickly, and measurement, not worry, should promote them. Giving a sleepy VM 8 vCPUs does not make it faster; on a busy host it can do the opposite.

My datastore shows full but the VM disks are thin. What filled it?

Thin disks grow silently as guests write data, and snapshots grow too - every day a snapshot lives, it stores another day of changes. Check the datastore for old snapshot files and forgotten VMs, confirm what each thin disk has actually consumed, and keep a standing free-space margin so growth never reaches the point where ESXi pauses VMs to protect itself.

This guide is based on the Technical Anshu video on Ubuntu virtualization on ESXi - stuck on a step? Ask in the video comments and you will get a reply.