There was an interesting internal thread that I came across yesterday where someone was asking if VMware Fusion supported memory overcommitment like VMware Workstation? In VMware Workstation, memory overcommitment can be adjusted by going to Edit->Preferences->Memory which provides three different options as shown in the screenshot below. This setting specifies the percentage of memory that would be reserved from the physical host memory for each Virtual Machine.

vmware-fusion-memory-overcommit-0
These options map to the following % of host memory reservation:

Option % of Host Memory Reserved Per VM
Fit all virtual machine memory into reserved host RAM 100
Allow some virtual memory to be swapped 50
Allow most virtual memory to be swapped 25

Disclaimer: Be aware, that default safe guards have been put in place to ensure optimal VM performance. If you decide to change these settings and allow memory overcommitment, it can potentially degrade performance of both your VMs as well as host system. Make sure you understand the changes before applying them.

You can also specify a custom value by editing the VMware Workstation configuration file located in: C:\ProgramData\VMware\VMware Workstation\config.ini and modifying or adding the following property:

prefvmx.minVmMemPct = P

where P is the percentage of configured VM memory that should fit into the host memory. The smallest value that P can be is 1. Below is a screenshot of a 32GB VM running on a Macbook Air with latest version of Fusion (8.5.3) which only has 8GB of physical memory and the value that I had used for this demonstration is 1.

Going back to VMware Fusion, memory overcommitment is also possible but the option to configure it is not available in the VMware Fusion UI. You will need to add the above setting into the VMware Fusion configuration file located in /Library/Preferences/VMware\ Fusion/config which does not exist by default. You will need to restart Fusion/Workstation for the change to go into effect.

In addition to the change, if you do decide to overcommit your memory, it was also mentioned that you may also want to disable Hard Disk buffering for optimal performance. You can make this change in the Advanced Settings of the the VM as seen in the screenshot below.

vmware-fusion-memory-overcommit-1
You can also just add the following property to the Virtual Machine's VMX configuration file:

hard-disk.hostBuffer = "disabled"

Memory commitment can be a wonderful tool, especially for lab environments. If you combine this with SSD storage and if swapping does occur, the impact may be acceptable so that you can run a few more VMs. Thanks to Regis Duchesne & Jesse Pool for sharing this handy tidbit!

18 thoughts on “Quick Tip - How to enable memory overcommitment in VMware Fusion?

  1. I tried this in Fusion 7.1.1 and it doesn’t work, my VMs always get a fixed amount of memory. I tried minVmMemPct as per your post and two other parameters I found in VMware forums, all to no avail.

    $ cat ‘/Library/Preferences/VMware Fusion/config’
    prefvmx.minVmMemPct = 50
    prefvmx.useRecommendedLockedMemSize = FALSE
    vmmon.disableHostParameters = TRUE

    How could I troubleshoot this problem?

  2. I am using fusion 8.1.1. The config file is locked and unable to add in the parameter even though I give it read-write access.

  3. Are there any news on this topic? MacBook Pro with 16GB RAM did not change anything with the new config file. Should there be 32GB available in the menu for the VM’s after I define overcommitment value to 50 (prefvmx.minVmMemPct = 50)?!

  4. I’ll repost my message from 18 months ago, maybe this time I’m luckier:

    I tried this in Fusion 7.1.1 and it doesn’t work, my VMs always get a fixed amount of memory. I tried minVmMemPct as per your post and two other parameters I found in VMware forums, all to no avail.

    $ cat ‘/Library/Preferences/VMware Fusion/config’
    prefvmx.minVmMemPct = 50
    prefvmx.useRecommendedLockedMemSize = FALSE
    vmmon.disableHostParameters = TRUE

    How could I troubleshoot this problem?

    • David,

      How much memory does your physical system have? If you want to increase the amount of memory that all VMs can use, try adding the following:

      prefvmx.allVMMemoryLimit = # Desired amount of RAM in MB.

      You might also want to consider reducing prefvmx.minVmMemPct to smaller value. Note 1 is the smallest.

      As others have indicated this works fine on Fusion 7.x and I’ve also re-verified this works on latest Fusion which is 8.5.3 (As of updating this morning). I’ve even included an updated screenshot of running a 32GB VM on my Macbook Air which only has 8GB of physical memory (using prefvmx.minVmMemPct = 1)

  5. I have the same hw setup, MBA 8GB. This is what I found.

    prefvmx.minVmMemPct = P

    P phy max
    mem mem
    swap some 50 8192 7736
    swap most 25 8192 15280
    swap ? 1 8192 32000*

    * 32768 were above the limit (~32GB?) Fusion seems to watch for free space in the host (I have ~68GB).

    I can configure 7/15/32GB in a vm with P being 50/25/1 respectively, so don’t think P is a percentage.

    How can you read memory usage from host and vm on the cli?

    I checked the binaries at /Applications/VMware\ Fusion.app/Contents/Library/, but none of them seem to serve this purpose.

  6. All the spacing has been deleted when posting the comment. It should look like this.

    —————–P—phy—-max
    ———————-mem–mem
    swap some–50–8192—7736
    swap most—25–8192–15280
    swap ?———1–8192–32000*

  7. Hello William,

    Good post you have here.
    One question, how can I see if this config file is really adopted by Fusion. If I open the settings for my VM I still see the max amount of RAM is 16GB (this is my physical memory) when I enter 32GB I still get the message “Memory is overallocated for your Mac, and I’m not able to start my VM due to this memory over allocation.
    I saved the config file in: \Library\Preferences|VMware Fusion\
    I created the file with TextEdit which is saved as a Rich Text Document.

    My hardware is a MacBook Pro i7 with 16GB RAM.

    • To be complete, this is the content of my “config” file. I suppose the name of this file is indeed ?

      prefvmx.minVmMemPct = 25
      prefvmx.useRecommendedLockedMemSize = FALSE
      vmmon.disableHostParameters = TRUE
      prefvmx.allVMMemoryLimit = 65536

      Thanks.

      • Quit Fusion, open Terminal and write a plain text file

        sudo vi /Library/Preferences/VMware\ Fusion/config

        then add this line

        prefvmx.minVmMemPct = 1

        Next add 32768 in the memory size field of a VM’s preferences.

Thanks for the comment!