I’ve just updated my lab to View 6.1 and came across a nice little gem. This is related to the recent out-of-the-box hardening of vSphere where Transparent Page Sharing is disabled between virtual machines. In case you missed it, I’ve written about it here.
If you see the screenshot below, you will see a new setting in the Advanced Storage group of settings called Transparent Page Sharing Scope. As you may guess, this allows us to configure some level of TPS between virtual desktops. As you can see from the screenshot, there are 4 scopes to choose from and I will explain what each one does. It’s pretty straightforward actually. What is important to note is that this is done at the individual pool level.
- Virtual Machine – Desktops in this pool will not participate in Inter-VM TPS; they will only experience savings within it’s own memory space.
- Desktop Pool – Desktops in this pool will participate in Inter-VM TPS with all desktops in the same pool.
- Pod – Desktops in this pool will participate in Inter-VM TPS with other desktops in pools belonging to the same View Pod, and also have this setting configured as Pod.
- Global – Desktops in this pool will participate in Inter-VM TPS with other desktops, that can belong to other View Pods, which also have this setting configured as Global.
If you are familiar with the introduction of sched.mem.pshare.salt, every virtual machine will have this in the vmxadvanced settings. All VMs with the same salt value (& in the same ESXi host of course) will be able to share memory pages where possible. So what View does behinds the scenes is to set a common salt value for the virtual desktops within the same scope.
There is one situation which is not addressed by this setting, that is in some environments where non-View virtual machines and View virtual machines co-exist on the same ESXi host. (Not my preferred situation, but I shall leave that to another blog post.) In such a case if TPS is desired to be allowed between all VMs, the approach is to change the advance ESXi setting Mem.ShareForceSalting in every desired host to “0” (numeric zero).
[update-20150322] if your environment was upgraded from an earlier version of View, the TPS scope for every pool will be set to Virtual Machine by default.