VMware Communities
OxkAMam
Contributor
Contributor

REQ: Add per-VM option to force guest/hosted OS VM to use Wired RAM/Memory instead of Active memory

I have 8GB RAM in my Macbook Pro and usually run Windows 8.1 in a VM all the time, and have assigned 4GB to each (sometimes I only assign 3GB to Guest).

I often have quite a few apps open in both host and guest, including Firefox with a lot of tabs. After a while switching between host and guest doing various things, I find the guest OS is relatively sluggish, most likely due to VM memory being swapped out to disk (I can hear a lot of disk access). The slowdown seems worse on the guest, but is also noticeable on the host sometimes.

According to the Fusion/Parallels comparison, on Wikipedia, Fusion uses active memory for hosted/guest OS's, while Parallels uses wired memory for hosted/guest OS's. What this means is that the memory assigned to a Fusion VM can be swapped out to disk if the host (ie. OS X) needs more RAM, but the memory assigned to a Parallels VM CANNOT be swapped out to disk when the host needs more RAM.

Parallels has an advantage in this respect, in that the guest VM will continue to run at a faster speed when the host is short of memory, whereas a Fusion VM will slowdown. The disadvantage of this is that the amount of RAM allocated to a VM is lost while that VM is running (and probably paused).

Given my use-case, I personally prefer Parallels choice of using wired memory for VM's, as it would kep my VM running faster.

I can see a need for both options, so can you add a per-VM option in Fusion to allow the user to choose whether the memory assigned to a VM is wired or active. Unless there is already a hidden option to do this ?

Tags (4)
Reply
0 Kudos
4 Replies
admin
Immortal
Immortal

Hi OxkAMam,

Welcome to community and thanks for using Fusion.

Because you only have 8G RAM of your host, so I recommend that you'd better not allocate too much memory to guest, otherwise it will affect your usage on your host.

You can assign more processor such as 2 processors on your guest. For 10.9 mavericks later, we take wired memory into consideration for memory enhancement, but we can not

change directly.

But you can using following command in terminal to free your memory:

sudo purge

Please let me know if you still have issues, thanks in adv.

Reply
0 Kudos
Mikero
Community Manager
Community Manager

Hi there 😃

I like the thinking of this idea.  I'll run it by our engineers and see if this makes sense from our implementation's perspective.

I can understand the use case, and I am personally a big fan of giving users more choices on how to tweak their VM's and Fusion preferences based on their needs.

I'll double check if there's a vmx flag that can do this as well.

One thing I'd like overall is a single document with every vmx flag we support in it with a quick description, but that's a whole other effort Smiley Wink

-
Michael Roy - Product Marketing Engineer: VCF
Reply
0 Kudos
OxkAMam
Contributor
Contributor

Nice to see two VMware employees have seen my suggestion Smiley Happy

LeoWang18 I have since reduced RAM usage of guest to 3072MB. You mention "For 10.9 mavericks later, we take wired memory into consideration for memory enhancement, but we can not change directly.", but what does this mean exactly ? Isn't it just a case of setting a flag when the memory is allocated saying that you either want wired memory or active memory ?

The sudo purge command isn't particularly helpful in my case, as any memory of the Guest that has been paged out, still has to be paged back in to RAM. If the guest memory used wired memory, then surely this memory would never be paged out of RAM, therefore keeping the guest running fast, even when host is using a lot of memory ? This is what I'm after.

As mentioned, I usually only have one VM running Windows 8.1x64, which gives me access to all my Windows apps (of which I usually have a few open, including Thunderbird + Firefox), and I'm often flicking back and forth between that and the host OS X for things like Xcode, Firefox again and other tools I often use for iOS development. With the guest using wired memory, I shouldn't get any disk thrashing when in Windows, due to its memory having been paged out due to OS X using it when memory gets tight.

Re. using 2 CPU's for guest, my Macbook Pro only has two hyper-threaded cores (ie. two real cores + two hyperthreaded ones). When I tested this before a while ago and assigned two cores to guest, it essentially assigned both real cores to the guest, instead of 1 real core and 1 hyper-threaded core. In my testing, I believe that a hyper-threaded core had about 15%-20% the power of a real core. I'm not sure if it's possible for Fusion to assign a real core + HT core when two vCPU's are assigned to guest, but that would be handy OR does a guest already get the use of 1 core + 1HT core when 1 vCPU is assigned ?

Reply
0 Kudos
OxkAMam
Contributor
Contributor

Mikero‌ Have you had any chance to check with the engineers if this is possible ?

It's just that I see Fusion 2015 TP has been released for testing, and would hope this option/feature could be included in Fusion 8 when it's released.

Reply
0 Kudos