<?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; overcommit</title>
	<atom:link href="http://www.hypervisor.fr/?feed=rss2&#038;tag=overcommit" 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>VSAN SwapThickProvisionDisabled OneLiner</title>
		<link>http://www.hypervisor.fr/?p=5766</link>
		<comments>http://www.hypervisor.fr/?p=5766#comments</comments>
		<pubDate>Tue, 23 Aug 2016 16:30:30 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VSAN]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[PowerCLI]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5766</guid>
		<description><![CDATA[Alors que nous en rêvions depuis 10 ans pour VMFS, VMware a introduit dans VSAN 6.2 la possibilité de &#8220;thin provisioner&#8221; la swap des VM :
In Virtual SAN 6.2, we introduced an advanced host setting called SwapThickProvisionDisabled, when enabled, removes the space reservation for .vswp files.
Une preuve de plus, s&#8217;il en fallait, que la bataille [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Alors que nous en rêvions depuis 10 ans pour VMFS, <a href="https://blogs.vmware.com/virtualblocks/2016/02/24/vsan62-powercli-sparse-vswp/#respond" target="_blank">VMware a introduit dans VSAN 6.2 la possibilité de &#8220;thin provisioner&#8221; la swap des VM</a> :</p>
<blockquote><p>In Virtual SAN 6.2, we introduced an advanced host setting called SwapThickProvisionDisabled, when enabled, removes the space reservation for .vswp files.</p></blockquote>
<p style="text-align: justify;">Une preuve de plus, s&#8217;il en fallait, que la bataille du SDS/HCI est rude jusqu&#8217;à en rogner ses best practices. En effet, nous rappelons à ceux qui auraient un trou de mémoire que placer le fichier de swap d&#8217;une VM sur un stockage &#8220;thin provisioné&#8221; va à l&#8217;encontre de toutes <a href="http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf" target="_blank">les bonnes règles de gestion</a> et <a href="https://pubs.vmware.com/vsphere-55/topic/com.vmware.vsphere.resmgmt.doc/GUID-AC40823A-695B-438A-A8F2-4B7C51A0D014.html" target="_blank">d&#8217;overcommit</a>.</p>
<blockquote><p><strong> Do not store swap files on thin-provisioned LUNs</strong>. Running a virtual machine with a swap file that is stored on a thin-provisioned LUN can cause swap file growth failure, which can lead to termination of the virtual machine.</p></blockquote>
<blockquote><p>Regardless of the storage type or location used for the regular swap file, for the best performance, and to avoid the possibility of running out of space, <strong>swap files should not be placed on thin-provisioned storage</strong>.</p></blockquote>
<p>Qu&#8217;importe, ca nous arrange bien aussi et pour l&#8217;occasion nous avons fait peter un petit oneliner pour fixer la bonne valeur :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VMHost|%{(Get-EsxCli -VMHost $_).system.settings.advanced.set($null,&quot;1&quot;,&quot;/VSAN/SwapThickProvisionDisabled&quot;,$null)}</pre>
<p>Et un autre pour vérifier que c&#8217;est bien appliqué :</p>
<pre class="brush: powershell; title: ; notranslate">Get-VMHost|%{(Get-EsxCli -VMHost $_).system.settings.advanced.list($null,&quot;/VSAN/SwapThickProvisionDisabled&quot;,$null)}</pre>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/SwapThickProvisionDisabled.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/SwapThickProvisionDisabled.png" alt="" width="526" height="249" /></a></p>
<p style="text-align: left;">Avec un petit coup de <a href="http://www.sexigraf.fr/vsan-sexipanels/#vsan-space-usage-report" target="_blank">SexiGraf </a>pour monitorer le tout, on est bon :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/VSAN_SwapThickProvisionDisabled.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/VSAN_SwapThickProvisionDisabled.png" alt="" width="515" height="275" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5766</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>The Phucking Salt</title>
		<link>http://www.hypervisor.fr/?p=5298</link>
		<comments>http://www.hypervisor.fr/?p=5298#comments</comments>
		<pubDate>Fri, 13 Feb 2015 07:54:16 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Kb]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Bullshit]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[salt]]></category>
		<category><![CDATA[TPS]]></category>
		<category><![CDATA[Transparent Page Sharing]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5298</guid>
		<description><![CDATA[MAJ 18/05/2016 : Finalement les Large Pages c&#8217;est vraiment pas top&#8230;

These issues are due to bug in large page promotion path on destination host during vMotion.

MAJ 22/10/2015 : Et encore des mecs qui confondent cloud et homelab&#8230;
All experiments run on a dual CPU blade server with two AMD Opteron 6272 CPUs (16 cores each) and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 18/05/2016</span> : <a href="https://kb.vmware.com/kb/2144984" target="_blank">Finalement les Large Pages c&#8217;est vraiment pas top</a>&#8230;</em></p>
<blockquote>
<p style="text-align: justify;"><em>These issues are due to bug in large page promotion path on destination host during vMotion.</em></p>
</blockquote>
<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 22/10/2015</span> : Et encore des mecs qui <a href="https://www.usenix.org/system/files/conference/woot15/woot15-paper-barresi.pdf" target="_blank">confondent cloud et homelab</a>&#8230;</em></p>
<blockquote><p>All experiments run on a dual CPU blade server with two AMD Opteron 6272 CPUs (16 cores each) and 32 GB of RAM.</p></blockquote>
<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 26/02/2015</span> : <a href="http://kb.vmware.com/kb/2101903" target="_blank">Le patch pour la 5.0 vient de sortir</a>, la boucle est bouclée.</em></p>
<p style="text-align: justify;">Vous ne vous en êtes peut être pas rendu compte lors de votre dernière campagne de patching mais <a href="http://blogs.vmware.com/security/2014/10/transparent-page-sharing-additional-management-capabilities-new-default-settings.html" target="_blank"><strong>depuis mi-Octobre 2014, tout nouveau patch d&#8217;ESXi ajoute une fonctionnalité de salage pour TPS</strong></a>. <strong>Désactivée lors de son introduction mais bien destinée à être activée de force lors d&#8217;un patch ultérieur</strong>. Jusqu’à fin Janvier, seule la version 5.1 était concernée mais depuis le 27/01 la version 5.5 bénéficie aussi de cette nouvelle &#8220;feature&#8221;. <span style="text-decoration: line-through;">La 5.0 est encore épargnée à ce jour</span>.</p>
<blockquote>
<p style="text-align: justify;">As we noted earlier on Oct 16, Nov 24 and Dec 4, VMware has introduced new TPS (Transparent Page Sharing) management options. Today’s release of ESXi 5.5 U2d restricts TPS to individual VMs and disables inter-VM TPS by default unless an administrator chooses to re-enable it. Please see <a href="http://kb.vmware.com/kb/2097593" target="_blank">KB 2097593</a> for full details on the functionality.</p>
</blockquote>
<p style="text-align: justify;"><strong>Depuis l&#8217;annonce, beaucoup de bullshit</strong>. De nombreux blogeurs ont donné leur avis sur la question en omettant volontairement (aka je-suis-pas-un-expert-en-sécu) d&#8217;analyser les recherches qui ont abouti a cette rustine. Nous ne sommes pas expert en matière de sécurité non plus, par contre on ne va pas se gêner pour décortiquer les résultats de ces recherches et les critiquer. On commence par <a href="http://kb.vmware.com/kb/2080735" target="_blank">la kb 2080735 de VMware</a> :</p>
<blockquote>
<p style="text-align: justify;">Published academic papers have demonstrated that by forcing a flush and reload of cache memory, it is possible to measure memory timings to try and determine an AES encryption key in use on another virtual machine running on the same physical processor of the host server if Transparent Page Sharing is enabled between the two virtual machines. <strong>This technique works only in a highly controlled system configured in a non-standard way that VMware believes would not be recreated in a production environment</strong>.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">Even though VMware believes information being disclosed <strong>in real world conditions is unrealistic</strong>, out of an abundance of caution upcoming ESXi Update releases will no longer enable TPS between Virtual Machines by default</p>
</blockquote>
<p>C&#8217;est pourtant clair mais VMware à quand même choisi de jouer la carte de la sécurité.</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/BeginNoSaltArea.jpg" alt="" width="306" height="203" /></p>
<p style="text-align: justify;">Une petit coup de Google nous a rapidement permis d&#8217;identifier les rapports de recherche à l&#8217;origine du mélodrame : <a href="https://eprint.iacr.org/2014/248.pdf" target="_blank">Fine grain Cross-VM Attacks on Xen and VMware are possible!</a> et <a href="https://eprint.iacr.org/2014/435.pdf" target="_blank">Wait a minute! A fast, Cross-VM attack on AES</a> dont les travaux semble basés sur un autre rapport datant de 2013 : <a href="https://eprint.iacr.org/2013/448.pdf" target="_blank">FLUSH+RELOAD: a High Resolution, Low Noise, L3 Cache Side-Channel Attack</a></p>
<p>Extraits choisis du document de 2013 :</p>
<blockquote>
<p style="text-align: justify;">The technique uses the processor’s clflush instruction to evict the monitored memory locations from the cache, and then tests whether the data in these locations is back in the cache after allowing the victim program to execute a small number of instructions.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">While copy-on-write protects shared pages from modifications, it is not fully transparent. <strong>The delay introduced when modifying a shared page can be detected</strong> by processes, leading to a potential information leak attack.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">An important feature of the LLC in modern Intel processors is that it is an inclusive cache (NDLR : <a href="http://en.wikipedia.org/wiki/CPU_cache#Exclusive_versus_inclusive" target="_blank">Et donc pas AMD</a>). That is, the LLC contains copies of all of the data stored in the lower cache levels. Consequently, flushing or evicting data from the LLC also remove said data from all other cache levels of the processor. Our attack exploits this cache behaviour.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;"><strong>Retrieving data from memory or from cache levels closer to memory takes longer than retrieving it from cache levels closer to the core. This difference in timing has been exploited for side-channel attacks</strong>.</p>
</blockquote>
<blockquote>
<p style="text-align: justify;">A round of attack consists of three phases. During the first phase, the monitored memory line is flushed from the cache hierarchy.</p>
<p style="text-align: justify;">The spy, then, waits to allow the victim time to access the memory line before the third phase.</p>
<p style="text-align: justify;">In the third phase, the spy reloads the memory line, measuring the time to load it. If during the wait phase the victim accesses the memory line, the line will be available in the cache and the reload operation will take a short time.</p>
</blockquote>
<p style="text-align: justify;">Maintenant qu&#8217;on en sait un peut plus sur la nature de l&#8217;attaque, voyons un peu les contraintes d&#8217;applications dans la vraie vie :</p>
<blockquote>
<p style="text-align: justify;">For a virtualised environment, <strong>the attacker needs access to a guest co-located on the same host as the victim guest</strong>. <a href="https://cseweb.ucsd.edu/~hovav/dist/cloudsec.pdf" target="_blank">Techniques for achieving co-location are described by Ristenpart et al</a>.<br />
[...]<br />
Identifying the OS and software version in co-resident guests has been dealt with <a href="https://staff.aist.go.jp/c.artho/papers/EuroSec2011-suzaki.pdf" target="_blank">in past research</a>.</p>
</blockquote>
<p>D&#8217;un coup de baguette magique, on se retrouve sur le même ESX avec le même GuestOS. Facile. On continue :</p>
<blockquote>
<p style="text-align: justify;">For the attack to work, <strong>the spy and the victim must execute on the same physical processor</strong>. For our testing, we set the processor affinity on the multi-processor system. However, in a real attack scenario the attack depends on the system scheduler.</p>
</blockquote>
<p style="text-align: justify;">Vous avez bien lu, la VM de l&#8217;attaquant doit résider sur le même processeur que la VM de la victime. Cache L3 oblige. Et c&#8217;est pas fini :</p>
<blockquote>
<p style="text-align: justify;"><strong>When performing the tests, the spy and the victim were the only load on the system</strong>. Such a scenario is not representative of a real system where multiple processes are running. We expect such load to create noise that will affect the quality of capture. Furthermore, for a load that includes multiple parallel instances of GnuPG, the spy will be unable to distinguish between memory access of each instance and will be unable to recover any data.</p>
</blockquote>
<p style="text-align: justify;">Donc, pour que l&#8217;attaque soit réalisable,<strong> il faut que la VM de l&#8217;attaquant se retrouve, avec la VM de la victime, seules sur le même socket du même ESX et avec le même GuestOS !</strong> Et c&#8217;est toujours pas fini.</p>
<p>Extraits choisis du document sur l&#8217;attaque AES :</p>
<blockquote>
<p style="text-align: justify;">We know that VMware implements TPS with large pages (2 MB) or small pages (4 KB). <strong>We decided to use the later one, since it seems to be the default for most systems</strong>. Furthermore, as stated in [<a href="http://www.vmware.com/files/pdf/mem_mgmt_perf_vsphere5.pdf" target="_blank">28</a>], even if the large page sharing is selected, the VMM will still look for identical small pages to share.</p>
</blockquote>
<p style="text-align: justify;">Sachant que <a href="http://www.hypervisor.fr/?p=4401" target="_blank"><strong>TPS ne supporte pas les large pages</strong></a> qui sont la configuration par défaut d&#8217;ESX depuis des années, non seulement <strong>ESX ne serait que partiellement vulnérable uniquement en cas d&#8217;overcommit important</strong> mais de plus le contexte initiale de l’étude est complètement faux.</p>
<blockquote>
<p style="text-align: justify;">Disabling the deduplication would make the attack impossible in the cloud however memory deduplication is highly performance beneficial, especially in cloud where multiple users share the same hardware. This is why we believe that the system designers should restrict the deduplication mechanism rather then completely disabling it.</p>
</blockquote>
<p>Quel dilemme&#8230;</p>
<blockquote><p>We not only performed the attack in native machine, but also in a <strong>cloud-like cross-VM scenario</strong>.</p></blockquote>
<p>&#8220;cloud-like&#8221; et pourtant :</p>
<blockquote><p>All experiments were performed on a machine featuring an Intel i5-3320M four core clocked at 3.2GHz.</p></blockquote>
<p><strong>Ironie du sort, <a href="https://eprint.iacr.org/2014/970.pdf" target="_blank">un récent rapport de recherche décrit un nouveau type d&#8217;attaque sur le cache L3 en exploitant&#8230;les large pages</a> !</strong></p>
<blockquote>
<p style="text-align: justify;"><strong>S$A: A new deduplication free L3 cache side channel technique</strong>: We proposed a new side channel technique that is applied in the L3 cache and therefore can be applied in cross-core scenarios. The new side channel technique bases its methodology in the usage of huge size pages, which give extra information about the position that each memory location occupies in the L3 cache.</p>
</blockquote>
<p>Prochaine étape : désactivation des large pages par défaut ou V2P en masse.</p>
<blockquote>
<p style="text-align: justify;">The relevance of these studies is highlighted by the prompt security update by VMware, making memory deduplication an opt-in feature that was formerly enabled by default.<br />
[...]<br />
We have disclosed our attack to the security teams of VMware, Amazon AWS and Citrix.</p>
</blockquote>
<p style="text-align: justify;">Mais revenons en au salting et à ses effets en cas d&#8217;overcommit. Sur un Dell R730 avec 256Go de RAM, nous nous sommes amusé à démarrer <strong>512 VM</strong> SUSE 11 x64 1vcpu 2Go de vRAM avec des combinaisons de settings Mem.ShareForceSalting et Mem.AllocGuestLargePage différentes. Pour éviter que ça coince pendant le swapout, nous avons <strong>redirigé les vswp sur des SSD NVMe</strong>. On commence en mode défaut (<strong>Mem.ShareForceSalting=2</strong> et <strong>Mem.AllocGuestLargePage=1</strong>) :</p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_2_AllocGuestLargePage_1.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_2_AllocGuestLargePage_1s.png" alt="" width="480" height="254" /></a></p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_2_AllocGuestLargePage_1.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_2_AllocGuestLargePage_1s.png" alt="" width="440" height="94" /></a></p>
<p style="text-align: justify;">La courbe d&#8217;overhead (orange) permet de se rendre compte de la progression du démarrage des 512 VM. On remarque qu&#8217;au 3/4 du bootstorm le premier mécanisme de reclaim est la swap, viennent ensuite la compression, le ballooning et seulement après le sharing (principalement des zéros). Avec 23Go de swap et 43Go de zip, n’espérez pas des temps de réponses de folie même avec du SSD. On continue sans le salting (<strong>Mem.ShareForceSalting=0</strong> et <strong>Mem.AllocGuestLargePage=1</strong>) :</p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_1.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_1s.png" alt="" width="480" height="254" /></a></p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_1.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_1s.png" alt="" width="452" height="92" /></a></p>
<p>Avec plus de 100Go de sharing et seulement 3,6Go de swap les effets de l&#8217;overcommit (3:1 quand même) sont presque imperceptibles dans ce scénario même si on regrette de constater que le swapping est encore le 1er mécanisme à se déclencher. Maintenant passons en full small pages (<strong>Mem.ShareForceSalting=0</strong> et <strong>Mem.AllocGuestLargePage=0</strong>) :</p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_0.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_0s.png" alt="" width="480" height="254" /></a></p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_0.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_0s.png" alt="" width="445" height="92" /></a></p>
<p style="text-align: justify;">Là on est au top, 200Go de sharing et un démarrage tout en douceur sans swap, compression ni balloon. Et pour finir, notre <a href="http://www.hypervisor.fr/?p=5265" target="_blank">fameuse technique du Large Page on Demand</a> (<strong>Mem.ShareForceSalting=0</strong> <strong>Mem.AllocGuestLargePage=1</strong> et <strong>LPage.LPageAlwaysTryForNPT=0</strong>) :</p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_1_LPageAlwaysTryForNPT_0.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/vim_ShareForceSalting_0_AllocGuestLargePage_1_LPageAlwaysTryForNPT_0s.png" alt="" width="480" height="254" /></a></p>
<p style="text-align: justify;"><a href="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_1_LPageAlwaysTryForNPT_0.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/salt/esxtop_ShareForceSalting_0_AllocGuestLargePage_1_LPageAlwaysTryForNPT_0s.png" alt="" width="469" height="92" /></a></p>
<p style="text-align: justify;">Même chose mais avec &#8220;seulement&#8221; 143Go de sharing, la différence étant vraisemblablement attribuée à des large pages.</p>
<p style="text-align: justify;">Moralité, <strong>optez pour un régime sans sel !</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5298</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>thin&#124;thick on thin&#124;thick chick chicky boom &#8211; MAJ</title>
		<link>http://www.hypervisor.fr/?p=5318</link>
		<comments>http://www.hypervisor.fr/?p=5318#comments</comments>
		<pubDate>Mon, 15 Dec 2014 09:33:44 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[Bullshit]]></category>
		<category><![CDATA[LUN]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[thin provisioning]]></category>
		<category><![CDATA[VAAI]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5318</guid>
		<description><![CDATA[MAJ 11/05/2017 : Et voila ce que ça donne en production :


Nous profitons de la sortie de FreeNAS 9.3, qui introduit le support des primitives VAAI TPST et TPSTUN, pour dissiper, une bonne fois pour toute on l&#8217;espère, le brouillard de bullshit récurant autour du thin on thin (en mode block).


Pour rappel, TPST(W) et TPSTUN, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 11/05/2017</span> : Et voila ce que ça donne en production :</em></p>
<p style="text-align: center;"><em><a href="http://files.hypervisor.fr/img/Thin_on_Thin/TPST_IRL.png" title="TPST_IRL" rel="lightbox[5318]"><img class="aligncenter size-medium wp-image-5813" title="TPST_IRL" src="http://www.hypervisor.fr/wp-content/uploads/2014/12/TPST_IRL-300x191.png" alt="" width="300" height="191" /></a><br />
</em></p>
<p>Nous profitons de la sortie de FreeNAS 9.3, <a href="http://download.freenas.org/9.3/RELEASE/ReleaseNotes" target="_blank">qui introduit le support des primitives VAAI TPST et TPSTUN</a>, pour dissiper, une bonne fois pour toute on l&#8217;espère, le brouillard de bullshit récurant autour du thin on thin (en mode block).</p>
<p style="text-align: center;"><a href="http://en.wikipedia.org/wiki/MV_Blue_Marlin" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/blue_marlin_overcommit.jpg" alt="" width="486" height="243" /></a></p>
<p style="text-align: center;">
<p style="text-align: justify;">Pour rappel, TPST(W) et TPSTUN, respectivement Thin Provisioning Space Threshold (Warning) et Thin Provisioning Stun, <a href="http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-Storage-API-Array-Integration.pdf#page=6" target="_blank">ont été introduites avec vSphere 5.0</a> très probablement <strong>pour répondre aux énormes risques que représente le thin on thin</strong> aka stocker un vmdk thin sur un LUN thin (TPSTUN existait en 4.1 sous le nom <em>Out of Space Condition</em> mais uniquement via plugin constructeur).</p>
<p style="text-align: justify;">En effet, l&#8217;espace disponible d&#8217;un datastore VMFS est calculé de l&#8217;espace consommé par rapport à la taille du filesystem (SCSI oblige) contrairement à un datastore NFS qui interroge la baie/serveur pour le savoir. Ainsi, ESX n&#8217;a aucun moyen de savoir s&#8217;il reste assez ou plus (+) d&#8217;espace qu&#8217;il ne le croit. TPST (<a href="http://www.t10.org/lists/asc-num.htm#ASC_38" target="_blank">0&#215;6 0&#215;38 0&#215;7</a>) et TPSTUN (<a href="http://www.t10.org/lists/asc-num.htm#ASC_27" target="_blank">0&#215;7 0&#215;27 0&#215;7</a>) permettent à la baie/target de palier précisément à ce problème en envoyant aux clients/initiator des commandes SCSI lors du passage d&#8217;un certain seuil et/ou lorsqu&#8217;il n&#8217;y a plus d&#8217;espace du tout.</p>
<p style="text-align: justify;">Soyons clair : <strong>thin|thick on thin sans TPSTUN + saturation de la baie = corruption de VM</strong>. Vous pouvez facilement le vérifier en faisant un test et sachez que nous l&#8217;avons vécu en production avec nos confrères <a href="http://www.vmdude.fr/" target="_blank">vmdude</a> et dagnu. On était content d&#8217;avoir du (<span style="color: #339966;"><strong>veeam</strong></span>) backup&#8230;</p>
<p>Avant de rentrer dans le détail, voici un aperçu de notre vision des avantages et inconvénients des différentes combinaisons thin|thick on thin|thick :</p>
<p><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/radar.png" alt="" width="417" height="357" /></p>
<ul>
<li style="text-align: justify;"><strong>thick on thick</strong> : le top du top dans tous les domaines sauf celui le la rentabilité. Presqu&#8217;aucune intervention humaine n&#8217;est nécessaire excepté si les VM subissent des snapshot. Financièrement, c&#8217;est évidement la pire des solutions.</li>
<li style="text-align: justify;"><strong>thin on thick</strong> : le meilleur compromis. Seul l&#8217;espace touché est consommé (coté VMware) et en cas de datastore full seules les vm qui veulent grossir sont freezées.</li>
<li style="text-align: justify;"><strong>thin on thin</strong> : le rêve des admins SAN, le cauchemar des admins VMware. Cette solution nécessite un monitoring au top du sol au plafond et des tests de validation avant mise en production. Sans les primitives TPST et TPSTUN, cette solution est très proche de la roulette russe.</li>
<li style="text-align: justify;"><strong>thick on thin</strong> : les inconvénients du thin on thin sans les avantages. Vous pensez réserver l&#8217;espace en faisant du eagerzeroedthick mais en réalité la baie récupère les zéros et compresse le reste. Heureusement TPSTUN agit aussi sur les vmdk thick.</li>
</ul>
<p style="text-align: justify;">Concentrons nous sur le thin on thin puisque c&#8217;est la solution (assumée) qui tend à s&#8217;imposer officiellement (oui, avant vous &#8220;pensiez&#8221; faire du thin on thick). Tant que tout va bien, vous n&#8217;avez à craindre que <a href="http://www.hypervisor.fr/?p=5188" target="_blank">l&#8217;impact du thin des vmdk</a>. Mais quand l&#8217;espace vient à manquer dans la baie, on espère pour vous que ça se passe comme ça :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/Thin_on_Thin/ELK_TPSTx.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/ELK_TPSTx_small.png" alt="" width="457" height="217" /></a></p>
<p style="text-align: justify;">Lorsque vous aurez atteint le seuil (parfois) configurable du TPST, disons 75%, vous aurez droit à du &#8220;0&#215;6 0&#215;38 0&#215;7&#8243; dans vos logs à une fréquence qui dépend de son implémentation dans le logiciel qui contrôle la baie. Ces messages génèrent des événements <strong>esx.problem.scsi.device.thinprov.atquota</strong> et <strong>vob.scsi.device.thinprov.atquota</strong> que vous retrouverez dans le vCenter (alarme possible) sous la forme suivante :</p>
<blockquote>
<p style="text-align: left;">Space utilization on thin-provisioned device naa.xyz exceeded configured threshold. Affected datastores (if any): &#8220;xyz&#8221;.</p>
</blockquote>
<p style="text-align: justify;">Si vous ne faites rien, vous finirez par atteindre le fond du panier et vous mangerez les fameux &#8220;0&#215;7 0&#215;27 0&#215;7&#8243;. A ce moment là, ESXi freezera n&#8217;importe qu&#8217;elle VM demandant plus (+) d&#8217;espace et vous aurez droit à ce genre de message :</p>
<blockquote>
<p style="text-align: left;">There is no more space for virtual disk xyz.vmdk. You might be able to continue this session by freeing disk space on the relevant volume, and clicking Retry. Click Cancel to terminate this session.</p>
</blockquote>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTx_vCenter.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTx_vCenter_small.png" alt="" width="460" height="461" /></a></p>
<p style="text-align: justify;"><strong>A cet instant précis, la seule et unique bonne chose à faire est de libérer de l&#8217;espace sur la baie</strong>. Nous avons à peu prés tout essayé de l&#8217;UNMAP jusqu&#8217;au <a href="http://kb.vmware.com/kb/1010931" target="_blank">VMFS3.OpenWithoutJournal</a> sans obtenir de résultat stable. Si vous atteignez le &#8220;<strong>No space left on device</strong>&#8220;, la LUN est démontée et toutes vos VM passent en &#8220;inaccessible&#8221;. Et vous êtes dans la mer*e.</p>
<p style="text-align: justify;">Notre conseil : testez, essayez de remplir/vider/re-remplir un LUN avant de partir en production (on à déjà vu des cas où TPST remontait mal voir pas du tout), monitorez bien les différents messages et commandes SCSI. Mais surtout, ne partez pas du principe que la baie ne sera jamais full&#8230;</p>
<p style="text-align: justify;">Et pour ceux qui croiraient encore aux vertus du thick on thin, on vous laisse apprécier les joies d&#8217;un datastore full alors que le LUN ne l&#8217;est pas :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTUN_thick_on_thin_vsp.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTUN_thick_on_thin_vsp_small.png" alt="" width="437" height="306" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTUN_thick_on_thin_SAN.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/Thin_on_Thin/TPSTUN_thick_on_thin_SAN_small.png" alt="" width="431" height="131" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5318</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Oh my DRS Goodness!</title>
		<link>http://www.hypervisor.fr/?p=5043</link>
		<comments>http://www.hypervisor.fr/?p=5043#comments</comments>
		<pubDate>Fri, 21 Feb 2014 18:37:58 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Kb]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Distributed Resource Scheduler]]></category>
		<category><![CDATA[DRS]]></category>
		<category><![CDATA[overcommit]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=5043</guid>
		<description><![CDATA[Ceux d&#8217;entre nous qui faisons de l&#8217;administration d&#8217;infrastructure vSphere au quotidien ont au moins une fois entendu la fameuse phrase &#8220;Mais pourquoi DRS ne fait rien alors que le cluster n&#8217;est pas équilibré ?!&#8220;. Le sujet à déjà largement été traité par des références dans le domaine comme l&#8217;est Frank Denneman mais nous allons reformuler [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ceux d&#8217;entre nous qui faisons de l&#8217;administration d&#8217;infrastructure vSphere au quotidien ont au moins une fois entendu la fameuse phrase &#8220;<em><strong>Mais pourquoi DRS ne fait rien alors que le cluster n&#8217;est pas équilibré ?!</strong></em>&#8220;. Le sujet à déjà largement été traité par des références dans le domaine comme l&#8217;est <a href="https://twitter.com/frankdenneman" target="_blank">Frank Denneman</a> mais nous allons reformuler la raison une bonne fois pour toute et en français<strong> : DRS ne déclenchera un vmotion que si le gain du déplacement est supérieur à son coût.</strong></p>
<p style="text-align: justify;">Evidemment il y a un algorithme complexe, du paramétrage et des seuils variables pour rendre le mécanisme suffisamment intelligent mais dans le cas d&#8217;un cluster pas ou peu overcommité (cpu et/ou ram uniquement), le déséquilibre est une situation &#8220;normale&#8221; puisque le coût d&#8217;un vmotion sera presque toujours supérieur a son bénéfice. <strong>DRS estime le gain à partir de la demande des vm et n&#8217;a de raison d&#8217;agir que si elles ne peuvent pas obtenir les ressources demandées</strong>. Le bon nivellement des VM dans le cluster n&#8217;est absolument pas pris en compte. De plus, DRS fait une projection de ce que la vm pourrait consommer dans un futur proche en fonction des statistiques passées afin de ne pas réagir trop tard.</p>
<p style="text-align: justify;">Néanmoins, dans certains cas il peut s’avérer nécessaire de forcer DRS à &#8220;secouer&#8221; un peu le cluster pour répartir les vm. Après une opération de maintenance ou de façon proactive (moins de vm par host=moins de conséquences en cas de crash) ou encore pour niveler les I/O disque/réseau pas (encore) pris en compte par DRS.</p>
<p style="text-align: justify;">Nous nous sommes justement retrouvés dans cette situation suite à l&#8217;ajout de plusieurs host dans un cluster 5.0 U1 et face à l&#8217;immobilisme de DRS, <a href="http://frankdenneman.nl/2012/07/09/disabling-mingoodness-and-costbenefit/" target="_blank">nous nous sommes souvenus d&#8217;un post détaillé de Frank à ce sujet</a> faisant référence à <a href="http://kb.vmware.com/kb/1017291" target="_blank">une kb vmware</a>.</p>
<blockquote>
<p style="text-align: justify;">This issue may occur in an environment with a large number of relatively low demand virtual machines</p>
</blockquote>
<p style="text-align: justify;">Il s&#8217;agit de modifier <strong>*temporairement*</strong> les paramètres MinGoodness et CostBenefit pour que DRS déclenche un vmotion à la moindre occasion sans en considérer le coût. le résultat est immédiat :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/DRSGoodness/drs_goodness_before.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/DRSGoodness/drs_goodness_before.png" alt="" width="379" height="238" /></a></p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/DRSGoodness/drs_goodness_after.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/DRSGoodness/drs_goodness_after.png" alt="" width="373" height="236" /></a></p>
<p style="text-align: justify;"><a href="http://download3.vmware.com/vmworld/2012/top10/vsp2825.pdf" target="_blank">Depuis vSphere 5.1, l&#8217;algorithme de DRS à été modifié pour palier à des situations similaires</a> (vSphere 4.1 U3 et vSphere 5.0 U2 intègre aussi la modification) <a href="https://www.vmware.com/support/vsphere5/doc/vsp_vc50_u2_rel_notes.html" target="_blank">mais il est toujours possible de forcer si besoin avec d&#8217;autres paramètres</a> :</p>
<blockquote>
<p style="text-align: justify;">Starting with this release, DRS algorithm is improved to better balance the load in a DRS cluster. If you notice that the cluster is still not balanced with the default settings, you can configure the advanced DRS options with the following values and run DRS to further improve the load balancing capability of the DRS cluster:</p>
<p>SevereImbalanceDropCostBenefit 1<br />
FixSevereImbalanceOnly 0</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=5043</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thin provisioning : inGuest vs outGuest</title>
		<link>http://www.hypervisor.fr/?p=4857</link>
		<comments>http://www.hypervisor.fr/?p=4857#comments</comments>
		<pubDate>Tue, 03 Sep 2013 23:47:35 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[thin provisioning]]></category>
		<category><![CDATA[TRIM]]></category>
		<category><![CDATA[UNMAP]]></category>
		<category><![CDATA[vmdk]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4857</guid>
		<description><![CDATA[Quand on joue un peu trop &#8220;le cowboy de l&#8217;overcommit&#8221;, on peut se retrouver dans une situation où les VM et donc les datastore sont pleins de vide : les filesystem des VM ont été rempli au moins une  fois mais ont été vidé depuis. Il y a plusieurs moyens de palier à cela [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Quand on joue un peu trop &#8220;le cowboy de l&#8217;overcommit&#8221;, on peut se retrouver dans une situation où les VM et donc les datastore sont <strong>pleins de vide</strong> : les filesystem des VM ont été rempli au moins une  fois mais ont été vidé depuis. Il y a plusieurs moyens de palier à cela mais avant il est intéressant de savoir quelle volumétrie serait récupérable. Donc on a fait péter le oneliner :</p>
<pre class="brush: powershell; title: ; notranslate">Get-View -ViewType virtualmachine -Property Name, Summary, Config, Guest|?{!$_.snapshot -and $_.Guest.GuestFamily -eq &quot;windowsGuest&quot; -and $_.Guest.ToolsRunningStatus -eq &quot;guestToolsRunning&quot;}|?{!($_.Config.Hardware.Device|?{$_ -is [VMware.Vim.VirtualDisk]}|?{$_.Backing.ThinProvisioned}) -eq $false}|select name, @{n=&quot;GuestId&quot;;e={$_.Guest.GuestId}}, @{n=&quot;vmdkCommitted&quot;;e={[math]::round($_.Summary.Storage.Committed/1GB,1)}}, @{n=&quot;GuestCommitted&quot;;e={[math]::round(($_.Guest.Disk|%{$_.Capacity - $_.FreeSpace})/1GB,1)}}, @{n=&quot;ThinDiff&quot;;e={[math]::round((($_.Summary.Storage.Committed - (($_.Config.Hardware.MemoryMB*1MB - $_.Config.MemoryAllocation.Reservation) + $_.Config.InitialOverhead.InitialSwapReservation)) - ($_.Guest.Disk|%{$_.Capacity - $_.FreeSpace}))/1GB,1)}}|?{$_.ThinDiff -gt 20}|Out-GridView</pre>
<p style="text-align: justify;">Ce petit bout de script vous affichera un beau tableau des VM (windows uniquement &#8211; pour l&#8217;instant) dont la différence entre la taille commitée outGuest (vmdk) et inGuest (ntfs) est supérieure à 20Go.</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/ThinDiff.png"><img class="aligncenter" src="http://files.hypervisor.fr/img/ThinDiff.png" alt="" width="441" height="494" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4857</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
