This is a question an Infrastructure Manager asked!
Here is my answer…
Before going further my answer is just AN answer as there is no maths rule to determine final result in all cases.
As many said it depends on the type of applications that will be running on the host.
But you need a kind of generic computation rule (so you can start from there and adjust):
VMware suggested a ratio of 3 vCPU per CPU so we can assume you can run up to 24 vms regarding your CPU specs. For RAM are your 1Go VM gonna be reservation? if yes the rule is simple you cannot reserve more than 32 then it means 32VM.
The final result is min(24,32) = 24 vms.
If no reservation is made on RAM (depending on the design of your global architecture) you can virtually start as many servers you like but be careful as the all infrastructure vms will be competing and the application performances will be bad if you reach a certain limit of VMs.
What i suggest: is to benchmark your applications a set a minimum value of RAM you need to guarantee (do not make a full reservation as this is an anti-virtualization resource sharing pattern). After that you need to define applications priorities and allocate VMware Shares values to them in case of resources competition.
Re-adjusting the above rule will lead you beyond 24vms.
There were few interesting answers parts that devs or/and ops (or devops event this is a not a profile but a philosophy) need to know when sizing up their apps:
- NEVER over subscribe memory
- Over allocating memory and i/o , not wise in production, you will almost always run out of memory or I/O before you do CPU
- more vCPU doesn’t always make a VM faster
Feel free to comment and share with all what you think!