ESXI only 4.7GB RAM available for VMs from 8GB of RAM. why so little?

4

1

I have an ESXI 6.0 with 8GB Ram. For some reason I can only use 4.7GB for VMs. I tried using esxtop but didnt see anything using lots of RAM. Below are screenshots from vsphere. Can anyone help me to understand where is Memory going? As you can see below there is total 8104 MB RAM available to ESXI but somehow I only have 4.7GB ram to use for VMs. When I turn off all VMs, esxi is using 1.4GB which is OK, but I still have only 4.7GB to use for VMs. Where is rest of RAM going and how can I get more RAM to be used by VMs?

Summary

Physical Memory

Available Memory

Consumed Memory

Iuri G.

Posted 2015-11-04T18:53:35.940

Reputation: 43

Answers

2

From VMware KB article The ESXi Summary tab and Resource Allocation tab do not show the same values for memory and CPU

The ESXi or Cluster Resource Allocation tab displays three values:

  • Total Capacity – Amount of resource that is guaranteed to be available to the resource pool (ESXi host).
  • Reserved Capacity – Total amount of resources that have been used for the reservation requirements of all descendants of the resource pool. This includes both child resource pools and virtual machines.
  • Available Capacity – Total amount or resources available for reservation of a child virtual machine.

The values in the Resource Allocation tab are the resources, with the system resource pools already subtracted.

Your values are :

Total Capacity: 4708 MB = amount guaranteed to always be available
Reserved Capacity: 2698 MB = amount used now
Available Capacity: 2010 MB = amount still available

The VMware vSphere 6.0 Documentation says in the section Create a Resource Pool :

Reservation

Specify a guaranteed CPU or memory allocation for this resource pool. Defaults to 0.

A nonzero reservation is subtracted from the unreserved resources of the parent (host or resource pool). The resources are considered reserved, regardless of whether virtual machines are associated with the resource pool.

Expandable Reservation

When the check box is selected (default), expandable reservations are considered during admission control.

If you power on a virtual machine in this resource pool, and the combined reservations of the virtual machines are larger than the reservation of the resource pool, the resource pool can use resources from its parent or ancestors.

It is important to note that resource pools are created by default as expandable on need.

The article Managed Object - ResourcePool describes the root resource pool, which takes up the entire computer and is the ancestor of any other pool:

A resource pool is configured with a set of CPU (in MHz) and memory (in MB) resources. These resources are specified in absolute terms with a resource reservation and a resource limit, along with a shares setting. The shares are used during resource contention, to ensure graceful degradation.

For the root resource pool, the values of the reservation and the limit are set by the system and are not configurable. The reservation and limit are set to the same value, indicating the total amount of resources the system has available to run virtual machines. This is computed as the aggregated CPU and memory resources provided by the set of current available hosts in the parent compute resource minus the overhead of the virtualization layer.

The 5.1 manual for Listing and Registering Virtual Machines says this :

The default datacenter is ha-datacenter and the default resource pool is Resources.

According to your first screenshot, Resources is defined as having the CPU capacity of 2 x 2.194 GHZ and the memory capacity of 8103.84 MB. ESXi is therefore aware of your configuration and has taken up the entire memory.

Although you have not created any resource pool, a default resource pool was created for you with the Reserved value of 4708 MB, which is the amount that is subtracted immediately from the host memory.

Since in your case you haven't exceeded the minimum of 4708 MB, ESXi did not do any additional allocation from the root pool. This will be done when needed.

harrymc

Posted 2015-11-04T18:53:35.940

Reputation: 306 093

I think you are reading the docs wrong. 2698 (used) + 2010 (available) is exactly 4708 (Total capacity for VMs). So 4708+2010 is just wrong. I do agree that 4.7GB is what Vmware guarantees as total memory available for VMs. Question is how do I make that bigger, since 3.7GB for 8GB system with 2 VMs sounds little excessive and wrong. – Iuri G. – 2015-11-07T20:47:59.723

only place i can find Expandable Reservation is in resource pools and I dont have any resource pools configured. we are talking about vanilla ESXI 6.0 install. I tried installing esxi 5.5 in VM with 8GB and i had 5.5GB available... I wonder if there are services that i can turn off to dedicate more ram to Vms since i dont use vcenter or any "enterprise" features – Iuri G. – 2015-11-07T22:22:37.223

I understand that ESXI is reserving 4.7GB for VMs, my question is that how do I make that reservation higher? I tried ESXI 5.5 and it reserved 5.2GB. So how do I modify default resource pool? I only can create new one with has the limit of 4.7GB - Reserved Amount as total available amount – Iuri G. – 2015-11-09T20:57:05.427

I have incorporated all my comments above into my answer. I think I have shown that ESXi knows about your memory and will use it all, so no action is required. – harrymc – 2015-11-11T10:45:21.300

I reserved 4.5GB for 1VM. so I created new VM with 1GB RAM. If I understand your comments correctly, I should have been able to start it and it should have used extra RAM that was not reserved by default resource pool. VM did not start. Moreover machine was using 6GB out of 8GB, so there was 2GB for that VM to use... It doesnt look like I can use more than 4.7GB for vms. Can I modify default resource pool reservations? – Iuri G. – 2015-11-11T15:11:40.220

Weird. Questions: (1) Have you deleted the additional resource pool that you have created? (2) Can you list all resource pools? (3) Do you have PowerCLI?

– harrymc – 2015-11-11T15:33:32.600

Yes I deleted it. I dont have manually created resource pools. I have PowerCLI. I have SSH access to ESXI. I have vSphere. I dont have vCenter. I dont know how list resource pools without vCenter. – Iuri G. – 2015-11-11T16:14:21.003

I have never used PowerCLI Cmdlets, but it looks like one can do quite a lot with them. You should also examine the logs.

– harrymc – 2015-11-11T16:57:52.933

Remark: From the fact that you don't have vCenter, I deduce that you are running the free version of ESXi 6.0. There are many reports that memory limits were being sharply reduced (example) with each newer version of free ESXi. This might explain your problem and why your experience contradicts that of users of the paid version, as well as why the memory limit is lower with each successive ESXi version. Try the very latest release 6.0, and if that doesn't work, use a prior version; or a non-VMware product

– harrymc – 2015-11-12T08:27:47.303

1

The Resource allocation tab describes the minimum guaranteed resources the host will be able to provide in case of a heavy-load scenario. It doesn't mean it cannot provide the whole amount of RAM, this only represents the minimum of it if you're reaching a treshold of extreme resource consumption.

In our case, we have hosts that have 262115.5 MB of RAM and our minimum guaranteed amount of RAM in a heavy-load scenario is 251577 MB. The bigger the RAM, the bigger the minimum of guaranteed resources.

If you want an official source for that, there's a VMware document explaining it for vSphere 4.0 but same applies for current versions.

nKn

Posted 2015-11-04T18:53:35.940

Reputation: 4 960