VMware Communities
ELMOALSO
Contributor
Contributor

Multiple Smaller VMs or One Larger VM for performance

Is there a general guideline for:

You have 20 apps running concurrently. They are all related. Sometimes (every few seconds) there is significant communication between them. You have a single Dell 740, Silver CPU and a slim 32GB memory an a single 1 TB disk.

Is it better to run all the apps on a single large VM or spread the load over multiple smaller VMs. Your resources (the host) remain constant so are you losing if you spread the apps over multiple VMs? You have the same apps work load and you have added the overhead of additional VMs and communications if you split the workload.

 

I'm new to VMware but about 8 years experience with VirtualBox

Labels (2)
0 Kudos
2 Replies
wila
Immortal
Immortal

Hi,

Obviously additional VMs are going to add overhead.
As you say "those applications communicate with each other", for example communicating via the (virtual) network won't be as fast as communicating on localhost.

If splitting up makes sense depends on workload (for example is it slow in one VM already?) and your goals.

On the one hand, multiple VMs means additional overhead on maintenance.
On the other hand, being able to keep things separated also means that it decouples the dependencies.
Eg. messing up a database VM means that you can replace the database VM with a backup and not worry about the rest of the stack, or take a snapshot of that ONE VM so you can roll back only that one (again great with databases when you are testing).

Also note that if your required workload has things like "testing different database backend servers" that it is a great example for when to split up things. If everything is in one VM, each of those database backends will always use resources, even when you are not using them. If each database server is running in their own VM, then they only use resources when you spin up the VM. eg. have an Oracle VM, a MySQL VM, a postgreSQL VM, an MSSQL one etc...

FWIW, I'm the "keep all things in their own VM" guy and happy with the results, it works very well for me. I can spin up what I need and it all works very well and is pretty flexible.

But I also know people who are big fans of the "all in one" approach.

another edit: If you use the "multiple VMs" approach then be frugal when assigning resources. For example I rarely assign more than 2vCPU's or 4GB of RAM to a VM.

--
Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
0 Kudos
ELMOALSO
Contributor
Contributor

Thank you for the quick response Wila. This particular case is using Workstation Pro to manage VM(s) to run the automation system in a small pharma production facility. As your reply suggests, the real answer is "It depends"

I didn't write a lot of detail in the post. I originally did add details that would give a better picture to facilitate the most accurate description of the conditions, however the Website froze on my side and....z-z-z-z-zip, there it went..

This is one of those systems that runs within a "framework" so there are probably 40-50 apps and services running all   the   time. Current at rest (no human touch or manual interactions) CPU load is around 40% with some pretty regular (multiple occurrences per minute) spikes and drop offs. There is one Database Historian running, scanning the control system for around 250 measurements per second and writing to disk archiving those measurements. It is a proprietary database (OSI PI) and is incredibly efficient, but still...

Additionally there are thousands of pieces of data, most in sub second time frames traveling in all sorts of directions between the various applications. There is a small SQL database, but it is pretty static and is mostly a depository for settings, equipment parameters and descriptions. Sadly, this is a production system I am trying commission and is behind schedule. Little to no time available for good testing regimens. 

I am suspecting the current single VM is having a little intermittent trouble keeping up the pace. It is currently getting assigned 50% of the 32 GB host memory and I think maybe 5 cores of a 10 core CPU. A single 1TB 7.5K spinning drive is split 50/50 between host and VM. 

Does this sound like I would get any oomph by giving the VM more of the host resources? That feel like the direction I should go rather than add overhead with 1-4 additional VMs. I've considered moving to SSDs but I don't think there is much for the buck there.

Does anything in this additional information make you sway confidently in one direction or another. It's the client's machine so I don't have much pull in getting more horse power there. I prefer isolation as much as possible too. In this case I don't want to do that if it will cost me performance on an already borderline VM system.

I welcome your thoughts

0 Kudos