<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hypervisor.fr &#187; large pages</title>
	<atom:link href="http://www.hypervisor.fr/?feed=rss2&#038;tag=large-pages" rel="self" type="application/rss+xml" />
	<link>http://www.hypervisor.fr</link>
	<description>French Bare-Metal weblog</description>
	<lastBuildDate>Wed, 26 Jun 2024 22:42:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LPoD on VDI</title>
		<link>http://www.hypervisor.fr/?p=5456</link>
		<comments>http://www.hypervisor.fr/?p=5456#comments</comments>
		<pubDate>Thu, 02 Apr 2015 14:32:22 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[deduplication]]></category>
		<category><![CDATA[large pages]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[TPS]]></category>
		<category><![CDATA[Transparent Page Sharing]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5456</guid>
		<description><![CDATA[Nous avons eu l&#8217;opportunité de déployer notre fameuse sauce &#8220;Large Page on Demand&#8220; sur un environnement VDI de 5 stretched cluster de 32 nodes (soit 160 lames HP BL460c Gen8 bi E5 2680 v2 &#8211; 256Go) pour un total de 5000 VM Windows 7. Voici le summary d&#8217;un des cluster :

Sans autre tuning que le [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Nous avons eu l&#8217;opportunité de déployer <a href="http://www.hypervisor.fr/?p=5265">notre fameuse sauce &#8220;<strong>Large Page on Demand</strong>&#8220;</a> sur un environnement VDI de 5 <a href="http://www.hypervisor.fr/?p=4940" target="_blank">stretched cluster</a> de 32 nodes (soit 160 lames HP BL460c Gen8 bi E5 2680 v2 &#8211; 256Go) pour un total de <strong>5000 VM Windows 7</strong>. Voici le summary d&#8217;un des cluster :</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/cluster_sample.png" alt="" width="343" height="352" /></p>
<p style="text-align: justify;">Sans autre tuning que le paramètre <a href="http://pubs.vmware.com/vsphere-60/topic/com.vmware.vsphere.resmgmt.doc/GUID-D98E6EC9-3730-4BC0-A9FC-93B9079E1AEE.html" target="_blank">LPageAlwaysTryForNPT</a>, TPS nous a permis de récupérer <strong>plus de 50% de RAM soit + de 12.5To sans impact sur le ressenti utilisateur</strong> (cliquez sur les graphs pour avoir le détail des compteurs) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_a000_week.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_a000_small.png" alt="" width="395" height="172" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_b000_week.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_b000_small.png" alt="" width="395" height="172" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_c000_week.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_c000_small.png" alt="" width="395" height="172" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_d000_week.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_d000_small.png" alt="" width="395" height="172" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_e000_week.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_e000_small.png" alt="" width="395" height="172" /></a></p>
<p>Merci qui ? <img src='http://www.hypervisor.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5456</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Large Pages on Demand</title>
		<link>http://www.hypervisor.fr/?p=5265</link>
		<comments>http://www.hypervisor.fr/?p=5265#comments</comments>
		<pubDate>Wed, 03 Sep 2014 12:08:59 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[large pages]]></category>
		<category><![CDATA[MMU]]></category>
		<category><![CDATA[NUMA]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[TPS]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5265</guid>
		<description><![CDATA[Comme nous vous l&#8217;avions promis, voici un retour d’expérience sur l&#8217;implémentation du paramètre LPageAlwaysTryForNPT à &#8220;0&#8243; qui force ESX à n&#8217;allouer une Large Page que lorsque le GuestOS d&#8217;une VM le lui demande explicitement et qui permet de bénéficier de TPS sans attendre que l&#8217;ESX n&#8217;ait à les &#8220;casser&#8221; en cas de contention.
In the cases [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.hypervisor.fr/?p=4401" target="_blank">Comme nous vous l&#8217;avions promis</a>, voici un retour d’expérience sur l&#8217;implémentation du paramètre <a href="http://pubs.vmware.com/vsphere-55/topic/com.vmware.vsphere.resmgmt.doc/GUID-D98E6EC9-3730-4BC0-A9FC-93B9079E1AEE.html" target="_blank">LPageAlwaysTryForNPT</a> à &#8220;0&#8243; qui force ESX à n&#8217;allouer une Large Page que lorsque le GuestOS d&#8217;une VM le lui demande explicitement et qui permet de bénéficier de TPS <a href="http://kb.vmware.com/kb/1021095" target="_blank">sans attendre que l&#8217;ESX n&#8217;ait à les &#8220;casser&#8221; en cas de contention</a>.</p>
<blockquote><p>In the cases where host memory is overcommitted, ESX may have to swap out pages. Since ESX will not swap out large pages, during host swapping, a large page will be broken into small pages.</p></blockquote>
<p style="text-align: justify;">Afin d&#8217;avoir une meilleure visibilité sur ce qui change au moment où nous avons activé le paramètre et lancé une vague de vmotion au sein du cluster pour l&#8217;appliquer, nous avons utilisé les mêmes compteurs que <a href="http://www.hypervisor.fr/?p=4841" target="_blank">le &#8220;dashboard&#8221; Guest Memory</a> (aka <a href="http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.ResourcePool.Summary.QuickStats.html" target="_blank">ResourcePoolQuickStats</a>) pour en faire un rrd sous cacti (avec les même couleurs) :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_utilization.png" alt="" width="418" height="321" /></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/LPoD/LPoD_quickstats.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_quickstats.png" alt="" width="476" height="246" /></a></p>
<p style="text-align: justify;"><strong>Un gain immédiat de 20% de RAM sans consommation CPU supplémentaire</strong> ni augmentation manifeste de latence (dans notre cas) :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_cpu.png" alt="" width="395" height="172" /></p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/LPoD/LPoD_RAM.png" alt="" width="395" height="172" /></p>
<p style="text-align: justify;">Et pour ceux qui se posent la question, dans ce cluster cumulant 1.5To de RAM attribuée à des VM Windows 2008 R2 et RHEL 6 x64, seulement 40Go de Large Pages sont allouées en moyenne.</p>
<p style="text-align: justify;">Moralité, TPS c&#8217;est bon, mangez-en !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5265</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TPS is not dead !</title>
		<link>http://www.hypervisor.fr/?p=4401</link>
		<comments>http://www.hypervisor.fr/?p=4401#comments</comments>
		<pubDate>Mon, 03 Dec 2012 16:11:21 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[dedup]]></category>
		<category><![CDATA[large pages]]></category>
		<category><![CDATA[memory overcommit]]></category>
		<category><![CDATA[TLB]]></category>
		<category><![CDATA[TPS]]></category>
		<category><![CDATA[vMMU]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4401</guid>
		<description><![CDATA[Depuis l&#8217;introduction sur le marché x86 des serveurs capables de &#8220;hardware-assisted memory virtualization&#8221;, la question de Transparent Page Sharing (TPS) vs large pages (ou huges pages) revient souvent dans les discussions en rapport avec l&#8217;overcommit mémoire. En effet, nous avons souvent abordé le sujet, TPS ne supporte pas (pour des raisons évidentes) les large pages :
ESX will [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Depuis l&#8217;introduction sur le marché x86 des serveurs capables de &#8220;hardware-assisted memory virtualization&#8221;, la question de <strong>Transparent Page Sharing</strong> (TPS) vs <strong>large pages</strong> (ou <a href="http://en.wikipedia.org/wiki/Page_(computer_memory)" target="_blank">huges pages</a>) revient souvent dans les discussions en rapport avec l&#8217;overcommit mémoire. En effet, <a href="http://www.hypervisor.fr/?tag=tps" target="_blank">nous avons souvent abordé le sujet</a>, <a href="http://kb.vmware.com/kb/1021095" target="_blank">TPS ne supporte pas (pour des raisons évidentes) les large pages</a> :</p>
<blockquote><p><strong>ESX <strong>will not share</strong> large physical pages</strong> because:</p>
<p>The probability of finding two large pages that are identical is very low.<br />
The overhead of performing a bit-by-bit comparison for a 2MB page is much higher than for a 4KB page.</p></blockquote>
<p style="text-align: center;"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/tps_theory.png" alt="" width="218" height="180" /></p>
<p>Paradoxalement, <a href="http://books.google.fr/books?id=_Y2WiG6WfGkC&amp;lpg=PA194&amp;ots=I3XGm9JUB1&amp;pg=PA194#v=onepage&amp;q&amp;f=false" target="_blank">c&#8217;est dans l’excellent Windows Internals que nous avons trouvé l&#8217;explication la plus synthétique à propos des large pages</a> :</p>
<blockquote>
<p style="text-align: justify;">The primary advantage of large pages is speed of address translation for references to other data within the large page. This advantage exists because <strong>the first reference to any byte within a large page will cause the hardware’s translation look-aside buffer </strong>(TLB, described in a later section)<strong> to have in its cache the information necessary to translate references to any other byte within the large page.</strong> If small pages are used, more TLB entries are needed for the same range of virtual addresses, thus increasing recycling of entries as new virtual addresses require translation. This, in turn, means having to go back to the page table structures when references are made to virtual addresses outside the scope of a small page whose translation has been cached. The TLB is a very small cache, and thus large pages make better use of this limited resource.</p>
</blockquote>
<p style="text-align: justify;">On comprend donc aisément que sur des systèmes avec de plus en plus de RAM, les accès au TLB puissent être coûteux en CPU sans l&#8217;utilisation des large pages. Par contre, lorsqu&#8217;il n&#8217;y a plus de pages de 2Mo disponibles et parce que les large pages ne peuvent pas être swappées, ESX &#8220;casse&#8221; les large pages en small pages (dont le hash a déjà été computé) et TPS déduplique le tout :</p>
<blockquote>
<p style="text-align: justify;">Since ESX will not swap out large pages, during host swapping, a large page will be broken into small pages. ESX tries to share those small pages using the pre-generated hashes before they are swapped out.</p>
</blockquote>
<p style="text-align: justify;">Sur un système raisonnablement overcommité et sans tuning spécifique, <strong>l&#8217;ESX risque de ne pas &#8220;casser&#8221; et dedupliquer les pages suffisamment rapidement pour répondre à la demande de mémoire, ce qui peut engendrer une dégradation de performance </strong>(ballooning/zipping/swapping). A l&#8217;inverse, si le coût CPU est acceptable, <strong>le même système tuné pour ne faire que</strong> (ou presque que) <strong>des small pages n&#8217;aura pas cette problématique</strong>.</p>
<p style="text-align: justify;">Ci dessous, la comparaison des stats mémoire d&#8217;un cluster (composé de serveurs à base d&#8217;Intel Nehalem) sans tuning spécifique et des stats de ce même cluster après avoir forcé l&#8217;utilisation des small pages sur les vm (workload comparable) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_default.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_default.png" alt="" width="477" height="511" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_disable_mmu_largepages.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_disable_mmu_largepages.png" alt="" width="477" height="511" /></a></p>
<p style="text-align: justify;">La première chose qui frappe c&#8217;est le compteur &#8220;consumed&#8221; qui a diminué de moitié (le workload s&#8217;y prête bien dans ce cas puisqu&#8217;il s&#8217;agit d&#8217;une ferme de serveurs xenapp) grâce à TPS,  le compteur &#8220;shared&#8221; a en effet été multiplié par 10. Dans le cas présent, <strong>la consommation CPU a augmenté d&#8217;environ 15%</strong> lors du passage aux small pages.</p>
<p style="text-align: justify;">Voici la commande powershell qui a permis de désactiver les large pages sur les vm (vm reboot ou &#8220;<a href="http://www.hypervisor.fr/?p=3235" target="_blank">vmotion shake</a>&#8221; pour la prise en compte) :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType VirtualMachine|?{!$_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|?{!($_.Config.ExtraConfig|?{$_.Key -eq &quot;monitor_control.disable_mmu_largepages&quot;}|?{$_.value -match &quot;true|1&quot;})}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=(New-Object Vmware.Vim.OptionValue -Property @{Key=&quot;monitor_control.disable_mmu_largepages&quot;;Value=&quot;1&quot;})}))}</pre>
<p>Il est également possible d&#8217;obtenir un résultat similaire en forçant la VMM a utiliser le mode mmu software :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_SWMMU.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_SWMMU.png" alt="" width="471" height="505" /></a></p>
<p style="text-align: justify;">C&#8217;est quasiment identique mais la grande classe c&#8217;est qu&#8217;en powershell on peut forcer le mode cpu auto et le mode mmu software de la VMM (impossible en GUI) :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType virtualmachine|?{!$_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|?{!($_.Config.Flags.VirtualExecUsage -eq &quot;hvauto&quot; -and $_.Config.Flags.VirtualMmuUsage -eq &quot;off&quot;)}|%{($_.ReconfigVM_Task((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{flags=(New-Object VMware.Vim.VirtualMachineFlagInfo -property @{virtualExecUsage=&quot;hvauto&quot;;virtualMmuUsage=&quot;off&quot;})})))}</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/vmm_hidden.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/vmm_hidden.png" alt="" width="420" height="372" /></a></p>
<p style="text-align: justify;">C&#8217;est beau mais pas vraiment pratique à maintenir à cause des erreurs possibles via la GUI. De plus, nous avons eu l&#8217;opportunité précieuse d&#8217;échanger avec un Senior Staff Engineer de chez VMware qui nous a laissé entendre que ce n&#8217;était pas la meilleure option :</p>
<blockquote>
<p style="text-align: justify;">The sw-mmu [...] has slightly higher overheads (for the shadow pagetables and related data structures) and this will reduce the total available memory for backing guest pages.</p>
</blockquote>
<p style="text-align: justify;">Dans notre grande quête d&#8217;overcommit, notre contact chez VMware nous a parlé d&#8217;un paramètre assez génial qui permet de changer la politique d&#8217;allocation agressive de large pages de la mmu (en anglais c&#8217;est plus facile à comprendre) :</p>
<blockquote>
<p style="text-align: justify;">The heuristic, when enabled, basically says that whenever possible when backing any part of a 2MB-region of guest memory, try to do so with a large 2MB page. This may involve remapping existing small 4KB pages into that new 2MB page. But it basically tries to aggressively back everything large</p>
</blockquote>
<p style="text-align: justify;">Ce qui explique pourquoi, par défaut, TPS n&#8217;a presque pas d&#8217;effet (<a href="http://www.yellow-bricks.com/2011/01/10/how-cool-is-tps/" target="_blank">sauf pour les zero</a>) même pour les guest qui ne &#8220;demandent&#8221; pas de large pages. La raison est bien liée aux performances :</p>
<blockquote>
<p style="text-align: left;">When overcommitment isn&#8217;t an issue, large pages really do help TLB-performance with hw-mmu on most workloads.</p>
</blockquote>
<p style="text-align: justify;">A l&#8217;inverse, si on passe le paramètre à 0 (sched.mem.alwaysTryLPageAlloc pour une vm ou LPage.LPageAlwaysTryForNPT pour un host) la mmu n’allouera une large page qu&#8217;à la demande du guest. <a href="http://pubs.vmware.com/vsphere-51/topic/com.vmware.vsphere.resmgmt.doc/GUID-D98E6EC9-3730-4BC0-A9FC-93B9079E1AEE.html" target="_blank">L&#8217;explication est d&#8217;ailleurs disponible au fin fond du documentation center de VMware</a> :</p>
<blockquote>
<p style="text-align: justify;">Try to allocate large pages for nested page tables (called &#8216;RVI&#8217; by AMD or &#8216;EPT&#8217; by Intel). If you enable this option, all guest memory is backed with large pages in machines that use nested page tables. If NPT is not available, only some portion of guest memory is backed with large pages.</p>
</blockquote>
<p style="text-align: justify;">Vous aurez compris où nous voulons en venir : trouver <strong>un bon équilibre entre le bénéfice en matière de performance des large pages (presque incontestable lorsque c&#8217;est le guest qui en fait la demande) et le bénéfice de TPS en matière de consolidation mémoire</strong>. Exemple sur notre fameux cluster :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_alwaysTryLPageAlloc.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/CHASSIS_04_HWMMU_alwaysTryLPageAlloc.png" alt="" width="469" height="506" /></a></p>
<p style="text-align: justify;">Si vous êtes attentif vous aurez remarqué qu&#8217;il n&#8217;y a que très peu de différence de consolidation avec les résultats en mode small pages forcées, c&#8217;était une feinte pour ceux du fond qui ne suivent pas&#8230; Dans ce cas c&#8217;est parfaitement normal car aucun des guestOS présent dans cet exemple n&#8217;utilise de large pages (windows 2003 32bit). Si les vm avaient été, par exemple, des windows 2008 R2, le niveau de consommation se serait situé quelque part entre le &#8220;full&#8221; large pages et le &#8220;full&#8221; small pages en fonction des applications et du comportement de l&#8217;OS. Nous ne manquerons pas de compléter ce post avec un exemple impliquant des guestOS et des applications exploitant les large pages.</p>
<p>Voici la commande powershell qui a permis de désactiver sched.mem.alwaysTryLPageAlloc sur les vm (vm reboot ou &#8220;<a href="http://www.hypervisor.fr/?p=3235" target="_blank">vmotion shake</a>&#8221; pour la prise en compte) :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType VirtualMachine|?{!$_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|?{!($_.Config.ExtraConfig|?{$_.Key -eq &quot;sched.mem.alwaysTryLPageAlloc&quot;}|?{$_.value -match &quot;false|0&quot;})}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=(New-Object Vmware.Vim.OptionValue -Property @{Key=&quot;sched.mem.alwaysTryLPageAlloc&quot;;Value=&quot;0&quot;})}))}</pre>
<p style="text-align: left;">Pour afficher un tableau récapitulatif des infos qui nous intéressent :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType VirtualMachine|?{!$_.Config.Template -and $_.Runtime.ConnectionState -eq &quot;connected&quot;}|select @{n=&quot;VM&quot;;e={$_.Name}}, @{n=&quot;HV&quot;;e={$_.Config.Flags.VirtualExecUsage}}, @{n=&quot;HVMMU&quot;;e={$_.Config.Flags.VirtualMmuUsage}}, @{n=&quot;disable_mmu_largepages&quot;;e={($_.Config.ExtraConfig|?{$_.Key -eq &quot;monitor_control.disable_mmu_largepages&quot;}).value}}, @{n=&quot;alwaysTryLPageAlloc&quot;;e={($_.Config.ExtraConfig|?{$_.Key -eq &quot;sched.mem.alwaysTryLPageAlloc&quot;}).value}}, @{n=&quot;ESX&quot;;e={(Get-View -property Name $_.Runtime.Host).Name}}|sort hv,hvmmu,disable_mmu_largepages,alwaysTryLPageAlloc,ESX|ft -AutoSize</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/vmm_mem_adv.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/vmm_mem_adv.png" alt="" width="424" height="191" /></a></p>
<p style="text-align: left;"><span style="text-align: justify;">Pour information, depuis ESXi 5.0, il existe une commande très utile pour monitorer l&#8217;utilisation des large pages (memstats -r lpage-stats -v) :</span></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/tps_mmu_lpages/memstats_lpage.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/tps_mmu_lpages/memstats_lpage.png" alt="" width="414" height="337" /></a></p>
<p style="text-align: justify;">En cas de vmotion, les pages de la &#8220;future&#8221; vm sont allouées au format 4k et reconverties par la suite :</p>
<blockquote>
<p style="text-align: justify;">The vmkernel allocates the memory for a VM during precopy using small pages. These are then converted to large as the VM begins to run but it is based on guest accesses. esx5.0 and esx5.1 each improved on the ability to recover the large mappings.</p>
</blockquote>
<p style="text-align: justify;">Et parce que nous sommes de grands fan de l&#8217;overcommit mémoire, voici notre <a href="http://upload.wikimedia.org/wikipedia/commons/5/5f/Rue_Boutebrie.jpg" target="_blank">poudre de perlimpinpin</a> à ajouter dans vos recettes de scripts de déploiements si vous voulez overcommiter bien comme il faut (nous déclinons toute implosion de votre infra&#8230;) :</p>
<pre class="brush: bash; title: ; notranslate">
vim-cmd hostsvc/advopt/update VMkernel.Boot.sharePerNode bool false
vim-cmd hostsvc/advopt/update Mem.ShareRateMax long 32768
vim-cmd hostsvc/advopt/update Mem.ShareScanTime long 10
vim-cmd hostsvc/advopt/update Mem.ShareScanGHz long 32
vim-cmd hostsvc/advopt/update Mem.IdleTax long 95
#vim-cmd hostsvc/advopt/update Mem.AllocGuestLargePage long 0
#vim-cmd hostsvc/advopt/update Mem.AllocGuestRemoteLargePage long 0
#vim-cmd hostsvc/advopt/update LPage.LPageAlwaysTryForNPT long 0
vim-cmd hostsvc/advopt/update Mem.MemZipMaxPct long 25
#vsish -e set /sched/freeMemoryState/minFreePct 3
</pre>
<p style="text-align: justify;">Nous finirons par <a href="http://files.hypervisor.fr/doc/virtualization_for_dummies.pdf#page=27" target="_blank">une petite citation pour ceux qui ne jurent que par les large pages</a> (qui a dit Hyper-V ?!) :</p>
<blockquote>
<p style="text-align: justify;">The performance increase is somewhat <strong>dependant upon the type of workload</strong> the virtual machine is executing; memory-intensive applications see more performance improvement than applications that are not heavily dependent on memory access.</p>
</blockquote>
<p style="text-align: justify;">Un grand merci à <a href="http://www.linkedin.com/pub/alex-garthwaite/14/899/745" target="_blank"><strong>Alex Garthwaite</strong></a> pour son aide à la rédaction de ce post et à la compréhension des mécanismes de gestion de la mémoire d&#8217;ESX.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4401</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
