In vSphere 6.5 the smallest supported memory configuration for the vCenter Server Appliance has been raised from 8GB to 10GB. The smallest "Tiny" deployment size allows up to 10 ESXi Hosts and 100 Virtual Machines. Resources in Homelabs are limited and you might want to lower the memory consumption of the vCenter Servcer Appliance. This article explains how to lower the resource consumption to be able to lower the memory to about 6GB without noticable impacts.
Please note that the smallest supported vCSA size is 2 vCPU and 10GB Memory. Any further downsizing is not supported by VMware. Don't do this in production.
Some vCenter Server Appliance Basics
The vCenter Server Appliance (vCSA) comes with a neat dynamic memory allocation functionality, that automatically adjusts the memory configuration based on the configured total memory. The allocation can be viewed with the cloudvm-ram-size command. The following output is from a "tiny" vCenter with 10GB memory:
# cloudvm-ram-size -l vmcad = 224 vmafdd = 22 vmware-rbd-watchdog = 100 applmgmt = 200 vmware-vsan-health = 100 vmware-vsm = 160 vmware-sps = 478 vmware-stsd = 538 vmware-vpostgres = 699 vmware-psc-client = 288 vmware-eam = 168 vmware-sts-idmd = 328 vmware-mbcs = 128 vcha = 46 vmware-vmon = 5 vmware-statsmonitor = 10 vmware-perfcharts = 357 vsphere-client = 853 vmonapi = 15 vmware-cm = 228 vmware-rhttpproxy = 31 vmdird = 22 vmware-imagebuilder = 50 vmware-sca = 128 vmware-vpxd = 1024 vsphere-ui = 853 vmware-vapi-endpoint = 256 vmware-content-library = 473 vmdnsd = 20 vmware-cis-license = 192 vmware-updatemgr = 164 vmware-vpxd-svcs = 1045 OS = 775 vmware-netdumper = 20 TOTAL(MB) = 10000
After increasing or reducing the virtual machine memory, each service is adjusted automatically but they will never go below 10000MB. If you want to know how far each service can grow, take a look at the configuration file at /etc/vmware/service-layout.mfx.
Dispensable Services
Prior to actually lower the memory you should consider disabling services. Disabling services is always a tradeoff between functionality and resources requirements. The following services are not running by default and are already lowering the resource consumption by 294MB.
Service | MB | Service Name |
vmware-rbd-watchdog | 100 | VMware vSphere Auto Deploy Waiter |
vmware-mbcs | 128 | VMware Message Bus Configuration Service |
vcha | 46 | VMware vCenter High Availability |
vmware-netdumper | 20 | VMware vSphere ESXi Dump Collector |
Another few services can be disabled without major impact to the vCenter:
Service | MB | Service Name |
vmware-vsan-health | 100 | VMware VSAN Health Service |
vmware-perfcharts | 357 | VMware Performance Charts |
vmware-content-library | 473 | VMware Content Library Service |
vmware-updatemgr | 164 | VMware Update Manager |
vsphere-ui | 853 | VMware vSphere Client (HTML5) |
VMware vSAN Health Service
If vSAN is not in use in the infrastructure managed by the vCenter Server it is safe to disable the vSAN Health Service. Disabling the vSAN Health Service is also explained in VMware KB2145308.
VMware vSphere Profile-Driven Storage Service
This service is required when using Virtual SAN, Virtual Volumes or any other policy-driven Storage scenarios.
[Update: Stopping this service leads to problems when creating or migration Virtual Machines.]
- A general system error occurred: PBM error occurred during QueryAllAssociatedProfiles: Connection refused
- A general system error occurred: PBM error occurred during PreMigrateCheckCallback: No connection could be made because the target machine actively refused it.
VMware Performance Charts
In the vSphere Web Client you can view pre-rendered performance graphs for supported objects within Performance > Overview. Disabling this services removes this feature and an error message is displayed when you open the Performance Overview Tab. The graphs in the Advanced view are not affected, they still work.
VMware Content Library Service
Removes the Content Library functionality. After disabling this services you also see a warning for the vAPI Endpoint. However, I have not noticed any further problems.
VMware Update Manager
Since vSphere 6.5 the Update Manager is included in the vCenter Server Appliance, which is great. If you don't need it, you can disable the Service. Update Manager related tabs will remain in the Client but when you open it you see an error message.
VMware vSphere Client (HTML5)
The HTML5 based Webclient is a new feature in vSphere 6.5 and will probably replace the Flash-based client in future releases. If you don't want to use it, it is safe to disable.
Disable Services
To disable a service, open the vSphere Web Client and navigate to Administration > Deployment > System Configuration > Services. From here you can stop services and configure the Startup Type to manual which will prevent services from starting automatically.
Stop a running service
Disable service autostart
How far can I lower the vCSA Memory?
When you've disabled all services mentioned in this article you should be able to reduce the memory by about 2.2GB:
Service | MB | Service Name |
vmware-vsan-health | 100 | VMware VSAN Health Service |
vmware-perfcharts | 357 | VMware Performance Charts |
vmware-content-library | 473 | VMware Content Library Service |
vmware-updatemgr | 164 | VMware Update Manager |
vsphere-ui | 853 | VMware vSphere Client (HTML5) |
vmware-rbd-watchdog | 100 | VMware vSphere Auto Deploy Waiter |
vmware-mbcs | 128 | VMware Message Bus Configuration Service |
vcha | 46 | VMware vCenter High Availability |
vmware-netdumper | 20 | VMware vSphere ESXi Dump Collector |
TOTAL | 2241 |
How much you can actually lower your vCSA memory depends on your Homelab size and your performance requirements. I've downsized my vCenter managing 4 ESXi Hosts to 6GB and haven't noticed any issues. Sure you can lower it further, but at 5 GB I started to notice a performance impact.
Can I disable additional Services?
In this article, I've mentioned services that are kind of safe to disable. It might be possible to disable more services but I wouldn't recommend so. If you want to explore further, here is a list of all services with their memory allocation. Be careful when disabling services from starting with the appliance when you don't know the impact as this can prevent the vCenter from starting.
Service | MB | Service Name |
vmcad | 224 | VMware Certificate Service |
vmafdd | 22 | VMware Authentication Framework |
vmware-rbd-watchdog | 100 | VMware vSphere Auto Deploy Waiter |
applmgmt | 200 | VMware Appliance Management Service |
vmware-vsan-health | 100 | VMware VSAN Health Service |
vmware-vsm | 160 | VMware vService Manager |
vmware-sps | 478 | VMware vSphere Profile-Driven Storage Service |
vmware-stsd | 538 | VMware Security Token Service |
vmware-vpostgres | 699 | VMware Postgres |
vmware-psc-client | 288 | VMware Platform Services Controller Client |
vmware-eam | 168 | VMware ESX Agent Manager |
vmware-sts-idmd | 328 | VMware Identity Management Service |
vmware-mbcs | 128 | VMware Message Bus Configuration Service |
vcha | 46 | VMware vCenter High Availability |
vmware-vmon | 5 | VMware Service Lifecycle Manager |
vmware-statsmonitor | 10 | VMware Appliance Monitoring Service |
vmware-perfcharts | 357 | VMware Performance Charts |
vsphere-client | 853 | VMware vSphere Web Client |
vmonapi | 15 | VMware Service Lifecycle Manager API |
vmware-cm | 228 | VMware Component Manager |
vmware-rhttpproxy | 31 | VMware HTTP Reverse Proxy |
vmdird | 22 | VMware Directory Service |
vmware-imagebuilder | 50 | VMware Image Builder Manager |
vmware-sca | 128 | VMware Service Control Agent |
vmware-vpxd | 1024 | VMware vCenter Server |
vsphere-ui | 853 | VMware vSphere Client (HTML5) |
vmware-vapi-endpoint | 256 | VMware vAPI Endpoint |
vmware-content-library | 473 | VMware Content Library Service |
vmdnsd | 20 | VMware Domain Name Service |
vmware-cis-license | 192 | VMware License Service |
vmware-updatemgr | 164 | VMware Update Manager |
vmware-vpxd-svcs | 1045 | VMware vCenter-Services |
vmware-netdumper | 20 | VMware vSphere ESXi Dump Collector |
OS | 775 | Operating System |
You'll want to leave profile driven service running if you want to deploy new VMs or do vMotion else you get "PBM Error": KB2118551
Do you change the values in /etc/vmware/service-layout.mfx to 0 for the services you disable, or is it automatically zeroed?
No. You don't have to and should not edit this file. When a service is not running, it does not consume memory and even when it is running it does not automatically take all memory. The value is only the limit.
However, you can change it if you like with cloudvm-ram-size -C [size] [name]:
root@vc [ ~ ]# cloudvm-ram-size -l vmware-netdumper
vmware-netdumper = 20
root@vc [ ~ ]# cloudvm-ram-size -C 15 vmware-netdumper
root@vc [ ~ ]# cloudvm-ram-size -l vmware-netdumper
vmware-netdumper = 15
...but there is no need to change anything.
Thanks. I've disabled the same service as you.
Now I can start the vcsa vm with 8 GB instead of 10 GB memory. I'm surpised it works (maybe not a good idea). Not sure if it's because of disabling services. Anyway, I'm struggling with my 16 GB memory PC. My vcsa 6.5 is handling 2 ESXi hosts (both including 1 to 5 vms) and a Windows Server. I welcome any other tips on vmware consumption.
I can even start vcsa with 1 gb ram. Of course it won't work well. But it must have been a disabled service that checks the minimum memory required.
There is no service that checks minimum memory requirements. As explained in the article, I wouldn't go below 6GB. Of course, it works and the services will start, but at some point it will be to slow.
Are you planning to take a dive into vCenter 7's possible services to disable?
There has to be a way for us to limit the amount of ram used by the appliance itself it's Ridiculous to think that everyone would use 10gb or 12gb of ram. Especially those of us who are only in a home lab with 3 to 4 hosts tops. I mean 4 gb to 6 gb is sufficient in those cases. Really a very stupid move on VMware's part.
It's no wonder no-one wants vCSA in their home environment.
VMware vCenter Server is a complex enterprise product. Having it run in "semi-production" home environments is surely not the primary focus. Not even looking at the cost of a vCenter license. For homelabs, the smallest amount of hardware you can cat today supports up to 64GB which is enough to run a vCenter.
Out of curiosity, how did you come up with "4-6GB is sufficient"? Seems a little bit arbitrary to me. The tiny vCenter for up to 10 hosts requires 12GB. Of course, you can't just divide it by the number of hosts you have.