ive been reading all the literature on resource management but unfortuntaly can't really get my head around a rather grassroots question.
"Should i disable large pages with the Mem.AllocGuestLargePage setting?"
My workload is 90% JBOSS Application Servers running x64 JBOSS/Java on windows 2008r2 guests
in this environment each guest has 4GB memory but the workload on each machine is extremely similar, the sort of situation where you'd expect massive savings in memory caused by TPS. infact ESXTOP shows 3800+ figures for COWH on these guests.
Now i know 2008R2 Server supports large pages, but i'm pretty sure JBOSS for Winodws doesn't (and even if it did, its not currently enabled). So, am i right in thinking that since my application is not making use of large pages, i will not suffer any performance drop by changing that setting? and even if i did it would be negligable? Or does the fact that the guest OS is 2008R2 mean that this is taken care of at the OS level and that the application's memory settings are irrelevant?
The hosts are Dell R815s, 128gb, 4x proc 12core AMD jobs, and even at peak theyre only hitting 20% CPU whereas i'm getting host memory usage warnings in vCenter at 90%+ memory usage (Shared Common=95mb!)
Also if i recall correctly DMA virtualizationis actually disabled in the R815 bios, as there appears to be a bug where it randomly won't boost if enabled, even to the installer! i read about this on google and when trying to enable it on the host experienced the same problem as others so it's now switched off. Im not even sure what this is for and if its at all related, but figured it was worth mentioning.
Any help most appreciated, and if it's any concelation i did try and read up on this with some searches etc. first before asking
because it means that transparent page sharing will not kick in as everything's backed into 2MB pages not 4K pages.
also if i set Mem.AllocGuestLargePage at the host level to 0 can i set monitor_control.disable_mmu_largepages = FALSE at the guest level to just enable it for one guest?
the reason i ask is that there is a SQL2008R2 server on the same hosts, and that does support and benefit from large pages.
TPS doesn't work on large pages, thats correct. However, at the point that the system becomes memory constrained, ESX will break up those large pages into small pages and then start sharing them. So even in the case of leaving it on, ESX does the right thing...
yes i understand that, but i also see no benefit on leaving on the large page function if it will not get used, it seems that this adds resuorce management overhead (from a sysadmin point of view) for no benefit.
I like many others would prefer to see TPS work from the get-go and not only when contention occurs. it makes capacity planning a whole lot simpler
Thanks for that link, i am now more educated!
The thng I hadn't appreciated was that the memory was being slpit into large pages at the vmkernel level so guest OS/Application support for large pages is sort of irrelevant as it will benefit regardless!
anyway before reading this i tried disabling it anyway, i changed the setting in the host advanced tab then rebooted about 15 of the JBOSS servers (all 2vCPU 4GB Machines w/ 3GB HeapSize)
after 24+hours my common memory rose from 90ish MB to 260ish MB... not a particuarly dramatic saving!
looks like my assumption that JBOSS being ripe for TPS was incorrect!
anyway co-incidentally today we discussed the possibility of enabling large page support on the JBOSS and SQL instances (aparently it is supported in jboss afterall!) so i switched the setting back at the host level.
i'm having problems getting SQL to enable large pages as it doesnt seem to be accepting my -T834 flag (it's R2 Std and has -T845 set and working) but thats another discussion entirely!