-1

After some extensive searching I couldn't find the answer to my question. I'm sorry if this is obvious or not, but I just need to know. I have a server with verry low resources, 2gb of ram and 2 cores. I want to run a few webservices on it and want to do those in at least three linux VM's. Can I set my vm software up so that it shares the core depending on resource need of the guest os'es? My favourite vm software is VmWare, And I like to use that if that's possible.

blipman17
  • 101
  • 1
  • 4
  • Sharing resources among VMs, so that when one is idle others can use the resources, is kind of the whole point of VMs... but running VMs on such a seriously underpowered machine will be enough for a proof of concept prototype, unless the load is very light. – vonbrand Jan 29 '16 at 02:35

2 Answers2

1

Yes. VMWare shares the CPUs/cores by default.

When an ESXi host runs multiple virtual machines, it allocates to each virtual machine a share of the physical resources. With the default resource allocation settings, all virtual machines associated with the same host receive an equal share of CPU per virtual CPU. This means that a single-processor virtual machines is assigned only half of the resources of a dual-processor virtual machine.

http://pubs.vmware.com/vsphere-60/topic/com.vmware.vsphere.resmgmt.doc/GUID-DFFA3A31-9EDD-4FD6-B65C-86E18644373E.html

If your host has 2 cores, and your 3 guests each have one core, each guest will have 60% share of CPU - worst case. If 1 guest is busy, and the other two are idle, the busy guest will receive 100% of one CPU core. If all 3 guests are busy, then they will split the CPUs resources evenly.

  • I've seen that post, but I don't understand what an ESXi host is? that's a machine that has a specific kind of hardware acceleration? – blipman17 Jan 28 '16 at 22:29
  • ESXi is VMWare's, enterprise class, hypervisor. ESXi is simply the OS installed on server hardware to make it a VMWare Host. – Jordan Ogren Jan 28 '16 at 23:48
0

You can set each VM to have up to two cores in this case. The more cores the more wait time per processing task. You can certainly assign two cores to each VM but it wont help them.

As for memory, you don't want to oversubscribe it too much. My suggestion is to leave 20% for host and distribute the rest. You can monitor memory and change it so that you're giving each machine a maximum that it uses but you will QUICKLY start using the scratch/page file and burning up your disks. For webservers, you're probably safe with 256-512mb of memory each depending on distro and packages installed.

  • I'm going for ubuntu-server 14.04 and plan to use ngnix to route different website requests to different vm's. But there's probably one vm that's going to have a lot of ram and cpu usage. – blipman17 Jan 28 '16 at 22:07
  • You just have to be mindful, your performance is going to be crushed if you over-allocate AND the machines use all of it. You'll be very limited using only 2 cores and 2 GB of memory. – Daniel Schofield Jan 28 '16 at 22:13
  • i'll be running owncloud, gitlab, and rainloop on three separate vm's. on the main box I'll run a "normal" website which will redirect to there. – blipman17 Jan 28 '16 at 22:30