<?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>Gabes Virtual World&#187; memory Archives  &#8211; Gabe&#8217;s Virtual World</title>
	<atom:link href="http://www.gabesvirtualworld.com/category/memory/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gabesvirtualworld.com</link>
	<description>Your P.I. on virtualization</description>
	<lastBuildDate>Wed, 01 Sep 2010 22:02:44 +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>Memory management and compression in vSphere 4.1</title>
		<link>http://www.gabesvirtualworld.com/memory-management-and-compression-in-vsphere-4-1/</link>
		<comments>http://www.gabesvirtualworld.com/memory-management-and-compression-in-vsphere-4-1/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 08:28:36 +0000</pubDate>
		<dc:creator>Gabrie van Zanten</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[Whats New]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[4.1]]></category>
		<category><![CDATA[compression works]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[guest os]]></category>
		<category><![CDATA[harddisk]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hashes]]></category>
		<category><![CDATA[host level]]></category>
		<category><![CDATA[machine memory]]></category>
		<category><![CDATA[Memory compression]]></category>
		<category><![CDATA[memory contention]]></category>
		<category><![CDATA[memory management]]></category>
		<category><![CDATA[memory resource]]></category>
		<category><![CDATA[new feature]]></category>
		<category><![CDATA[performance info]]></category>
		<category><![CDATA[release notes]]></category>
		<category><![CDATA[resource management]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[swap file]]></category>
		<category><![CDATA[swap out]]></category>
		<category><![CDATA[swap pace]]></category>
		<category><![CDATA[tps]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[vms]]></category>
		<category><![CDATA[vsphere]]></category>

		<guid isPermaLink="false">http://www.gabesvirtualworld.com/?p=1255</guid>
		<description><![CDATA[With vSphere 4.1, VMware released a great new feature called Memory compression. At first, after reading the release notes I thought memory compression was just one step before swapping to disk would occur. However, after reading the whitepaper “Understanding Memory Resource Management in VMware ESX 4” I learned some more details I want to share [...]]]></description>
			<content:encoded><![CDATA[<p>With vSphere 4.1, VMware released a great new feature called Memory compression. At first, after reading the release notes I thought memory compression was just one step before swapping to disk would occur. However, after reading the whitepaper <a href="http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf" target="_blank">“Understanding Memory Resource Management in VMware ESX 4”</a> I learned some more details I want to share with you. For the full understanding do read the whitepaper as this post is a quick summary of how memory compression works, while the whitepaper gives you an in-depth view on memory management and also gives a lot of performance info on these techniques.<br />
<span id="more-1255"></span></p>
<p>You probably already knew about Transparent Page Sharing, Ballooning and swapping but let’s go through them again rather fast. For guest OS-es that don’t use large pages ESX will store the virtual machine memory in 4K pages in hardware memory and will use Transparent Page Sharing to see if there are duplicate 4K pages (at host level) and will only store them once. If there is memory contention at host level, ESX will start the ballooning process. Ballooning will try to reclaim unused pages from the VMs and return them to the host. If after ballooning there is still memory contention, ESX will start swapping VM memory to harddisk.</p>
<p>When host and guest OS are capable of using large pages, the VM memory will be stored in 2MB pages without searching for duplicates with TPS. This is because the chances of finding duplicate 2MB pages are far more smaller than with 4K pages and the time to do this comparison would take too much time, however a hash of the 4K pages within the 2MB pages is still created. With large pages, ballooning is the first memory saving technique, but if this doesn’t solve the memory contention the ESX host will start the process of swapping memory to disk. In this process the 2MB pages will be broken into small 4K pages and the pre-generated hashes are used to share the small pages before they are swapped to disk.</p>
<h2><strong>Memory compression</strong></h2>
<p>With memory compression an extra step is added in both scenario’s. Just before memory is swapped out to disk, ESX will compress the memory. That is after ballooning and TPS have not resolved the memory contention. With memory compression ESX will try and compress the 4K swap candidate pages. When a compression of more than 50% is obtained the page (now 2K or less) will then be stored in the compression cache. If a compression of more than 50% is not obtained, the 4K page will be swapped out (to disk). If in a later stadium this compressed page is access by a VM, it will first be decompressed and removed from the compression cache.</p>
<h2><strong>Compression cache</strong></h2>
<p>This compression cache is memory inside of the virtual machines memory with a maximum of 10% (can be changed through the advanced settings Mem.MemZipMaxPct) which means ESX will not allocate additional host physical memory for the compression cache. When the VM memory is undercommitted no space is allocated to the compression cache, but as memory pressure grows, the space allocated for compression cache grows to a maximum of 10%.</p>
<p>Should the memory pressure keep growing and more memory is needed, pages from the compressed memory cache will be decompressed and swapped out.</p>
<h2><strong>Compression performance</strong></h2>
<p>As with other memory management techniques VMware introduced, people often are a bit skeptic when first reading about it and performance is always the number on concern. To try and ease your mind a bit, some facts:</p>
<p>-          ESX will not pro-actively compress pages</p>
<p>-          Compression will cost about 2-3% host cpu time</p>
<p>-          Compression takes about 20 micro seconds</p>
<p>-          The penalty of the extra CPU time and compression time is small compared to having to swap out to disk</p>
<p>-          The compression used is based on GZip but adopted to specific ESX needs</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabesvirtualworld.com/memory-management-and-compression-in-vsphere-4-1/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Memory overcommit in production? YES YES YES</title>
		<link>http://www.gabesvirtualworld.com/memory-overcommit-in-production-yes-yes-yes/</link>
		<comments>http://www.gabesvirtualworld.com/memory-overcommit-in-production-yes-yes-yes/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 14:03:00 +0000</pubDate>
		<dc:creator>Gabrie van Zanten</dc:creator>
				<category><![CDATA[ESX]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[bad memory]]></category>
		<category><![CDATA[balloon driver]]></category>
		<category><![CDATA[ballooning]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[hyper-v]]></category>
		<category><![CDATA[hypervisor]]></category>
		<category><![CDATA[misunderstanding]]></category>
		<category><![CDATA[over]]></category>
		<category><![CDATA[over-commit]]></category>
		<category><![CDATA[overcommit]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[physical memory]]></category>
		<category><![CDATA[physical ram]]></category>
		<category><![CDATA[sharing]]></category>
		<category><![CDATA[spikes]]></category>
		<category><![CDATA[tps]]></category>
		<category><![CDATA[transparent]]></category>
		<category><![CDATA[transparent page sharing]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[vms]]></category>
		<category><![CDATA[vmware tools]]></category>

		<guid isPermaLink="false">http://www.gabesvirtualworld.com/?p=930</guid>
		<description><![CDATA[There was a good discussion on twitter on memory overcommit and the value of memory overcommit and whether you should or should not use it in production. What struck me in this was that on a subject like this, there is so much misunderstanding although there is a lot of documentation available that can explain [...]]]></description>
			<content:encoded><![CDATA[<p>There was a good discussion on twitter on memory overcommit and the value of memory overcommit and whether you should or should not use it in production. What struck me in this was that on a subject like this, there is so much misunderstanding although there is a lot of documentation available that can explain the subtle difference between good and bad overcommit of memory.</p>
<p><strong>Memory overcommit, the basics.</strong></p>
<p>In short: When you assign more RAM to your VMs than available in your host.</p>
<p><strong>Good memory overcommit:</strong> When you assign more RAM to your VMs than available in your host BUT never cross the line where the amount of RAM that is USED by your VMs is more than available in your host.</p>
<p><strong>Bad memory overcommit:</strong> When you assign more RAM to your VMs than available in your host AND cross the line where the amount of RAM that is USED by your VMs is more than available in your host.</p>
<p><span id="more-933"></span></p>
<p>A simple example:<br />
Host has 48GB of RAM and just for the sake of argument weâ€™ll pretend the hypervisor doesnâ€™t use any RAM and we donâ€™t have memory overhead per VM. I now start loading it with VMs that have 4GB RAM assigned. Without any memory overcommit I can load this host with 12 VMs of each 4GB.</p>
<p>Now letâ€™s say, these VMs normally use only 2.5GB of RAM but sometimes they peak to 4GB. With memory overcommit I could now load the host with 19 VMs of 4GB RAM assigning a total of 76GB RAM and demanding 19 x 2.5GB = 47.5GB of physical memory. Even to me this is a bit on the edge, so Iâ€™d reserve some RAM for spikes and would go back to 17 VMs, which would leave me with 17 x 2.5GB = 42.5GB of actively used physical RAM, 17 x 4GB = 68GB of RAM assigned and therefore 68GB-48GB = 20GB of overcommitted RAM. So, 20GB of RAM I didnâ€™t have to pay for. This is a good use of memory overcommit.</p>
<p>Bad use of memory overcommit is when in the previous example I would place more VMs on this host, to the point where the use of physical RAM is higher than the amount of physical RAM present in the host. ESX will start some memory optimization and reclaim techniques, but in the end it will swap host memory to disk, which is bad. It is essential to carefully monitor your hosts to see if youâ€™re moving from good memory overcommit to bad memory overcommit.</p>
<p><strong>Misconceptions on memory overcommit</strong></p>
<p>-Â Â Â Â Â Â Â Â Â  Transparent Page Sharing (TPS) is a performance hit</p>
<p>-Â Â Â Â Â Â Â Â Â  Overcommit is always a performance hit</p>
<p>-Â Â Â Â Â Â Â Â Â  Real world workloads donâ€™t benefit</p>
<p>-Â Â Â Â Â Â Â Â Â  The gain by overcommitment is neglectable</p>
<p>-Â Â Â Â Â Â Â Â Â  Overcommitment is dangerous</p>
<p><strong>Transparent Page Sharing (TPS) is a performance hit<br />
</strong>The mechanism below memory overcommit is called Transparent Page Sharing (TPS). Using this technique ESX scans if pages in memory for one VM are identical to pages of another VM by using hash values and if they are ESX doesnâ€™t store that second page in physical memory but just places a link to the first page. When the VM wants to write to that page, then the link is removed and a real page in physical memory is created. This technique called Copy-on-Write (CoW) will incur an overhead compared to writing to non-shared pages.</p>
<div id="attachment_933" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/tsp.png"><img class="size-medium wp-image-933" title="What is transparent page sharing " src="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/tsp-300x248.png" alt="What is transparent page sharing" width="300" height="248" /></a><p class="wp-caption-text">What is transparent page sharing </p></div>
<p>The scanning of the guests performed by the hypervisor is done at base scan rate specified by the â€œMem.ShareScanTimeâ€ which specifies the desired time to scan the VMs entire guest memory. By default ESX will scan every 60 minutes, but depending on the amount of current shared pages, ESX can intelligently adjust this scan frequency.</p>
<p>When performance is measured between a system with no page sharing, default page sharing or excessive page sharing (forced by the test), it shows that default page sharing performs 0,2% slower and sometimes 0,2% faster than without page sharing. Page sharing sometimes improves performance because the VMâ€™s host memory footprint is reduced so that it fits the processor cache better.</p>
<div id="attachment_932" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/tsp.jpg"><img class="size-medium wp-image-932" title="Transparent Page Sharing influence on performance" src="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/tsp-300x176.jpg" alt="Transparent Page Sharing influence on performance" width="300" height="176" /></a><p class="wp-caption-text">Transparent Page Sharing influence on performance</p></div>
<p><strong>Overcommit is always a performance hit</strong></p>
<p>To be short, no it is not. But you probably expect more from me than just this. Letâ€™s be clear about doing bad overcommit which is always a performance hit. As soon as your ESX hosts is out of physical RAM and starts swapping to disk, there is a big performance hit which should be avoided at all costs. Scott Drummonds (VMware) recently wrote about using Solid State Disks in your SAN to be used as swap space for your ESX host (<a href="http://vpivot.com/2009/12/24/solid-state-disks-and-host-swapping/">http://vpivot.com/2009/12/24/solid-state-disks-and-host-swapping/</a>), which would make less of an issue but still there is a performance hit.</p>
<p>But with good overcommit the performance hit is very low as you read in the previous section. There is also a fase in between good and bad overcommit and that is when your good overcommitted host is getting low on free physical memory. When this situation occurs, ESX will start looking for unused but claimed memory by the VMs and will try to reclaim memory by using a technique called ballooning.</p>
<p>The balloon driver inside the Guest OS is triggered by ESX to try and claim free pages by demanding memory (inflating) from the Guest OS. The Guest OS will then use page reclaiming algorithms to determine which pages can be assigned to the balloon driver. First the OS will assign pages marked as free and if this is not enough the OS will move less important pages to the OS swap file to free up pages and assign these to the balloon driver. Next the balloon driver tells ESX which pages it has received and since the balloon driver will not actually use them, ESX can safely re-use these pages for other VMs.</p>
<p>As with TPS, there is a performance penalty for this ballooning, but again the penalty is very low. In the graph below you can see that even with reclaiming 3/4 of the VMs memory, the performance penalty is only 3%. Looking at the performance impact of swapping host memory, we see that the throughput loss is about 34% which is a huge difference compared to the 3% for ballooning.</p>
<div id="attachment_931" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/ballooning.png"><img class="size-medium wp-image-931" title="Impact of ballooning on performance" src="http://www.gabesvirtualworld.com/wp-content/uploads/2010/01/ballooning-300x177.png" alt="Impact of ballooning on performance" width="300" height="177" /></a><p class="wp-caption-text">Impact of ballooning on performance</p></div>
<p><strong>FIRST CONCLUSION: No performance hits !!!</strong></p>
<p><em>The conclusion to draw from this, is that the performance impact of Transparent Page Sharing and ballooning neglectable and memory overcommit is NOT a performance hit !!!</em></p>
<p>Letâ€™s move on to the remaining misconceptions on memory overcommit.</p>
<p><strong>Real world workloads donâ€™t benefit.<br />
</strong>A common misconception is that TPS and ballooning will not work for the majority of applications. I have done a lot of searching for problems with applications in a virtual environment that could lead back to TPS or ballooning but could only find two situations in which there is a â€œproblemâ€ with TPS or ballooning. One situation is when running a Java application.</p>
<p>Copied from Scott Drummonds website:<br />
â€œ<em>Java provides a special challenge in virtual environments due to the JVMâ€™s introduction of a third level of memory management. The balloon driver draws memory from the virtual machine without impacting throughput because the guest OS efficiently claims pages that its processes are not using. But in the case of Java, the guest OS is unaware of how the JVM is using memory and is forced to select memory pages as arbitrarily and inefficiently as ESXâ€™s swap routine. Neither ESX nor the guest OS can efficiently take memory from the JVM without significantly degrading performance. Memory in Java is managed inside the JVM and efforts by the host or guest to remove pages will both degrade Java applicationsâ€™ performance. In these environments it is wise to manually set the JVMâ€™s heap size and specify memory reservations for the virtual machine in ESX to account for the JVM, OS, and heap.</em>â€</p>
<p>The second exception I found is not really a problem but only something to keep in mind when working with the newer type of CPUâ€™s that can do Virtualized MMU. Read this post from Duncan at Yellow-Bricks: â€œVirtualized MMU and Transparent page sharingâ€ <a href="http://www.yellow-bricks.com/2009/03/06/virtualized-mmu-and-tp/">http://www.yellow-bricks.com/2009/03/06/virtualized-mmu-and-tp/</a>. In this post Duncan explains that when using large pages (2MB) in combination with a CPU that uses virtualized MMU â€œ<em>the ESX page sharing technique might shares less memory when large pages are used instead of small pages</em>â€ and â€œ<em>When free machine memory is low and before swapping happens, the ESX Server kernel attempts to share identical small pages even if they are parts of large pages. As a result, the candidate large pages on the host machine are broken into small pages. This can degrade performance at a point in time when you donâ€™t want performance degradation. Keep this in mind when deploying VMs with virtualized MMU enabled, make your decision based on these facts! Do performance testing on what effect overcommiting will have on your environment when virtualized MMU is enabled.</em>â€</p>
<p><strong>Second Conclusion: Workloads being not compatible with TPS or ballooning:</strong></p>
<p>-Â Â Â Â Â Â Â Â Â  <em>Java is the only known application that can have a performance hit when ballooning kicks in.</em></p>
<p>-Â Â Â Â Â Â Â Â Â  <em>When using V-MMU compatible CPUâ€™s in combination with large pages a performance degradation can be expected when ballooning kicks in.</em></p>
<p><strong>The memory gain by TPS is neglectable</strong></p>
<p>How much memory would you expect to gain from using TPS? Keep in mind that TPS works at page level, not only between VMs with the same Guest OS, but across all Guest OSes. Not just over VMs but also within the same VM. You could theoretically already save memory through TPS with just one VM running on your host.</p>
<p>Looking at real world examples provided me by a number of people running ESX in production, it is clear that TPS saves a lot of memory. See the table below:</p>
<table border="1" cellspacing="0" cellpadding="0" width="265">
<tbody>
<tr>
<td width="151" valign="bottom"><strong>Physical RAM (MB)</strong></td>
<td width="114" valign="bottom"><strong>Saving (MB)</strong></td>
</tr>
<tr>
<td width="151" valign="bottom">40,958</td>
<td width="114" valign="bottom">36,281</td>
</tr>
<tr>
<td width="151" valign="bottom">32,767</td>
<td width="114" valign="bottom">11,579</td>
</tr>
<tr>
<td width="151" valign="bottom">49,142</td>
<td width="114" valign="bottom">13,208</td>
</tr>
<tr>
<td width="151" valign="bottom">49,142</td>
<td width="114" valign="bottom">7,673</td>
</tr>
<tr>
<td width="151" valign="bottom">131,069</td>
<td width="114" valign="bottom">46,086</td>
</tr>
<tr>
<td width="151" valign="bottom">131,069</td>
<td width="114" valign="bottom">53,788</td>
</tr>
<tr>
<td width="151" valign="bottom">65,534</td>
<td width="114" valign="bottom">28,713</td>
</tr>
<tr>
<td width="151" valign="bottom">32,767</td>
<td width="114" valign="bottom">21,968</td>
</tr>
<tr>
<td width="151" valign="bottom">32,767</td>
<td width="114" valign="bottom">8,725</td>
</tr>
<tr>
<td width="151" valign="bottom">24,575</td>
<td width="114" valign="bottom">11,081</td>
</tr>
<tr>
<td width="151" valign="bottom">24,575</td>
<td width="114" valign="bottom">9,096</td>
</tr>
<tr>
<td width="151" valign="bottom">16,215</td>
<td width="114" valign="bottom">11,434</td>
</tr>
<tr>
<td width="151" valign="bottom"><strong>Totals:Â Â  630,580</strong></td>
<td width="114" valign="bottom"><strong>259,632</strong></td>
</tr>
</tbody>
</table>
<p><strong>Third conclusion: Memory savings by TPS:</strong></p>
<p>-Â Â Â Â Â Â Â Â Â  <em>As the table shows, memory savings thanks to TPS can be really huge and the price of memory saved by TPS is easily worth the extra buck for ESX licenses.</em></p>
<p><strong>Overcommitment is dangerous</strong></p>
<p>In the paragraphs above I think I made clear that there is no reason to NOT use TPS unless for specific applications. The only reason left for some people to not use TPS is that if you just keep on filling your host with VMs, it will soon start swapping (which is the bad form of overcommit) and theyâ€™re absolutely right. But may I ask this question: â€œDonâ€™t you monitor what you are doing?â€.</p>
<p>When I have a one liter bottle and I want to fill it with water, while filling it I usually keep an eye on (monitor) how much water I already pored into it and stop just before itâ€™s full. I think this same practice can be used in many places, even in IT infrastructures.</p>
<p>Number of users on your Citrix hosts, I bet you monitor performance and start adding more hosts when certain limits will be reached. Or adding data to your disks, I bet you daily check to see if your disks arenâ€™t near their limit. Creating snapshots of VMs in your virtual infrastructure, check your datastore if these snapshots arenâ€™t filling up your space and please, do tell me you keep a sharp eye on those thin provisioned disk. Now, if you do all that and consider those techniques as save, I canâ€™t see why overcommitment would be dangerous. Just monitor !!!</p>
<p><strong>Fourth conclusion: Danger of overcommitting</strong></p>
<p>-Â Â Â Â Â Â Â Â Â  <em>There is no danger, no hidden risks, just as long as you monitor what you are doing.</em></p>
<p>I would to thank my twitter friends how promptly responded with esxtop screenshots when I called out for help on twitter. Thanks guys.</p>
<p>And a big thank you to Duncan and Scott for providing great posts which helped me put together this post. Thanks.</p>
<p><strong>Sources:</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="319" valign="top">Memory Resource Management in VMware ESX Server by Carl A.   Waldspurger</td>
<td width="319" valign="top"><a href="http://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf">http://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf</a></td>
</tr>
<tr>
<td width="319" valign="top">Virtualized MMU and Transparent page sharing by Duncan Epping</td>
<td width="319" valign="top"><a href="http://www.yellow-bricks.com/2009/03/06/virtualized-mmu-and-tp/">http://www.yellow-bricks.com/2009/03/06/virtualized-mmu-and-tp/</a></td>
</tr>
<tr>
<td width="319" valign="top">VMware communities</td>
<td width="319" valign="top"><a href="http://communities.vmware.com/message/251948">http://communities.vmware.com/message/251948</a></td>
</tr>
<tr>
<td width="319" valign="top">Understanding Memory Resource Management in VMware ESX Server</td>
<td width="319" valign="top"><a href="http://www.vmware.com/resources/techresources/10062">http://www.vmware.com/resources/techresources/10062</a></td>
</tr>
<tr>
<td width="319" valign="top">ESX Memory Management: Ballooning Rules</td>
<td width="319" valign="top"><a href="http://vpivot.com/2009/09/25/esx-memory-management-ballooning-rules/#more-10">http://vpivot.com/2009/09/25/esx-memory-management-ballooning-rules/#more-10</a></td>
</tr>
<tr>
<td width="319" valign="top">Solid State Disks and Host Swapping by Scott Drummonds</td>
<td width="319" valign="top"><a href="http://vpivot.com/2009/12/24/solid-state-disks-and-host-swapping/">http://vpivot.com/2009/12/24/solid-state-disks-and-host-swapping/</a></td>
</tr>
<tr>
<td width="319" valign="top">Large Page Performance</td>
<td width="319" valign="top"><a href="http://www.vmware.com/files/pdf/large_pg_performance.pdf">http://www.vmware.com/files/pdf/large_pg_performance.pdf</a></td>
</tr>
<tr>
<td width="319" valign="top">Memory Overcommitment in the Real World</td>
<td width="319" valign="top"><a href="http://blogs.vmware.com/virtualreality/2008/03/memory-overcomm.html">http://blogs.vmware.com/virtualreality/2008/03/memory-overcomm.html</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.gabesvirtualworld.com/memory-overcommit-in-production-yes-yes-yes/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Hyper-V, not in my datacenter (part 2: Guest OS and Memory overcommit)</title>
		<link>http://www.gabesvirtualworld.com/hyper-v-not-in-my-datacenter-part-2-guest-os-and-memory-overcommit/</link>
		<comments>http://www.gabesvirtualworld.com/hyper-v-not-in-my-datacenter-part-2-guest-os-and-memory-overcommit/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 07:00:39 +0000</pubDate>
		<dc:creator>Gabrie van Zanten</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[case run]]></category>
		<category><![CDATA[cpus]]></category>
		<category><![CDATA[customer deals]]></category>
		<category><![CDATA[downtime]]></category>
		<category><![CDATA[financial applications]]></category>
		<category><![CDATA[first glance]]></category>
		<category><![CDATA[guest os]]></category>
		<category><![CDATA[hyper]]></category>
		<category><![CDATA[hyper-v]]></category>
		<category><![CDATA[hypervisor]]></category>
		<category><![CDATA[linux server]]></category>
		<category><![CDATA[os support]]></category>
		<category><![CDATA[os versions]]></category>
		<category><![CDATA[physical hardware]]></category>
		<category><![CDATA[physical servers]]></category>
		<category><![CDATA[server versions]]></category>
		<category><![CDATA[sp1 sp2]]></category>
		<category><![CDATA[sp4]]></category>
		<category><![CDATA[windows 2000 server]]></category>
		<category><![CDATA[windows 2003 server]]></category>
		<category><![CDATA[windows server]]></category>

		<guid isPermaLink="false">http://www.gabesvirtualworld.com/?p=104</guid>
		<description><![CDATA[Guest OS
After you installed your hypervisor you want to virtualize your physical servers on it. When doing the research for my presentation I was very surprised to find some strange limitations in which guest are supported with Hyper-V. Can you believe that not all Windows Server versions are supported? Well neither could I.
The guest OS [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Guest OS</strong></p>
<p>After you installed your hypervisor you want to virtualize your physical servers on it. When doing the research for my presentation I was very surprised to find some strange limitations in which guest are supported with Hyper-V. Can you believe that not all Windows Server versions are supported? Well neither could I.<span id="more-104"></span></p>
<p>The guest OS support of Hyper-V:</p>
<ul>
<li>Windows 2000 Server is only supported with SP4 and 1 CPU.</li>
<li>Windows 2003 Server is only supported with SP2 and 1 or 2 CPUs.</li>
<li>Windows 2008 Server is supported with 1, 2 and 4 CPUs.</li>
<li>and there is Linux support for SUSE Linux Server 10 sp1 / sp2 with only 1 CPU.</li>
</ul>
<p>This does look quite reasonable at first glance, because these are current versions. True, but when looking at the ESX environment I work in now, we would not be able to virtualize as many servers as we have running on ESX right now. Letâ€™s see:</p>
<ul>
<li>Customer has 721 VMs,</li>
<li>4 of them are running Linux (RedHat EL),</li>
<li>then we have 2 running on Windows NT4 (YES you read it correctly, NT4),</li>
<li> 8 on Windows 2000 mostly 2 CPU,</li>
<li> 15 Windows 2003 4 CPU guest,</li>
<li> about a 100 VMs are running Windows 2003 Sp1</li>
<li>and the remaining is on Sp2 with 2 or less CPUs.</li>
</ul>
<p>Now, I admit, we are not the quickest with upgrading our systems and sp2 is around for almost one year now, but we have many financial applications whose suppliers are also quite slow certifying their application for new service packs. This customer deals with millions of euro&#8217;s per day. They cannot afford downtime for this set of financial apps and will only upgrade to OS versions / service packs if the supplier supports it.</p>
<p>Looking at this environment, there is quite a number of systems that would not be supported on Hyper-V. Big deal you say? Actually, yes it is a big deal. Wasn&#8217;t cost saving by getting rid of a lot of physical hardware one of the main drivers to go virtual? Leaving a bunch of servers (around 130 in our case) run physical is quite a lot, especially because these will probably be somewhat older servers that are getting more expensive in their support contract and more vulnerable to failure.</p>
<p>VMware does support quite a broad range of OS&#8217;es and all with full capabilities, no strange cpu limitations. There are about 12 flavors of Linux, there is SUN, FreeBSD and of course Windows. Looking at the list, it seems ALL Windows Server versions are supported, from Windows NT4 to Windows 2008.</p>
<p><em>I can&#8217;t fully understand Microsoft on this. Of course I&#8217;m not a software engineer who understands anything about software limitations and what effect 1,2 or 4 cpu&#8217;s have on an OS and its service pack level, but still&#8230; why these support limits? I remember how hard it often is to get companies to run Exchange or SQL on VMware when they don&#8217;t get an official support statement from Microsoft. Now why is Microsoft doing this to themselfs? Is it really such an effort to get Windows 2003 supported on all service packs and on 1,2 and 4 cpu&#8217;s?</em></p>
<p><strong>Memory over-commitment</strong></p>
<p>One major point that Microsoft always mentions in his campaign, is that VMware&#8217;s transparent page sharing and memory over-commit techniques are not suited for the enterprise environment. Because, who would make VMs share memory? Well, let me tell you, at first I could agree with Microsoft on this. Surely I would never let my VMs starve for memory and never over-commit memory. I will constantly monitor my ESX environment and check how much memory my guest really need and make sure that the right amount of memory is present. Never let your ESX host (or other hypervisor) swap for memory to disk, never!!!</p>
<p>But wait. After reading some MS articles and VMware articles on this, I think the definition of memory over-commit is not as clear to everybody. What is memory over-commitment???<br />
Memory over-commitment is when you assign more memory to your VMs, than the amount of memory present in your host.</p>
<p>Microsoft says this is not a smart thing to do and they tell their customers that you therefore don&#8217;t need this feature. Well, to be honest, VMware to thinks this not smart <strong>IF</strong> your VMs really need this amount of memory. And there is the big difference:  <strong>IF</strong></p>
<p>Now we all know those physical servers, the ones running with 2, 3, 4Gb of RAM because the application manual says that application X really needs 4Gb? We also all know, whilst monitoring these applications, the physical box never reached more than Â½ the total memory on any given busy day? This is the point where VMware steps in.<br />
If you have 20 VMs, with each 2Gb assigned but they all use no more than 1Gb, then you would be throwing away 10Gb of RAM in the host that never gets used. Now, this example is hypothetical, but you get the point. And in a real world scenario, I wouldn&#8217;t draw the hard line at 10Gb, but the point is that some VMs will stay way below their assigned memory and some will use all of it, however after running a couple of weeks, you will find a stable average of memory and peak memory usage, thereby enabling you to scale your hosts memory profile.</p>
<p>I&#8217;ve taken a quick snap of the environment of one of my customers. They now have 16 ESX hosts in one cluster. In the first column you see the amount of memory that is present in the host. Second column shows the amount of memory that is assigned to the VMs. Third column is the amount of memory over-commitment.</p>
<table style="text-align: center;" border="1">
<tbody>
<tr>
<td><strong>Name</strong></td>
<td><strong>Host (Gb)</strong></td>
<td><strong>Assigned (Gb)</strong></td>
<td><strong>Over-Commit</strong></td>
</tr>
<tr>
<td>esx-01</td>
<td>40</td>
<td>38</td>
<td>0</td>
</tr>
<tr>
<td>esx-02</td>
<td>40</td>
<td>46</td>
<td>6</td>
</tr>
<tr>
<td>esx-03</td>
<td>40</td>
<td>33</td>
<td>0</td>
</tr>
<tr>
<td>esx-04</td>
<td>40</td>
<td>48</td>
<td>8</td>
</tr>
<tr>
<td>esx-05</td>
<td>40</td>
<td>35</td>
<td>0</td>
</tr>
<tr>
<td>esx-06</td>
<td>40</td>
<td>49</td>
<td>9</td>
</tr>
<tr>
<td>esx-07</td>
<td>40</td>
<td>42</td>
<td>2</td>
</tr>
<tr>
<td>esx-08</td>
<td>40</td>
<td>37</td>
<td>0</td>
</tr>
<tr>
<td>esx-09</td>
<td>40</td>
<td>45</td>
<td>5</td>
</tr>
<tr>
<td>esx-10</td>
<td>40</td>
<td>52</td>
<td>12</td>
</tr>
<tr>
<td>esx-11</td>
<td>40</td>
<td>48</td>
<td>8</td>
</tr>
<tr>
<td>esx-12</td>
<td>40</td>
<td>37</td>
<td>0</td>
</tr>
<tr>
<td>esx-13</td>
<td>40</td>
<td>42</td>
<td>2</td>
</tr>
<tr>
<td>esx-14</td>
<td>40</td>
<td>46</td>
<td>6</td>
</tr>
<tr>
<td>esx-15</td>
<td>64</td>
<td>87</td>
<td>23</td>
</tr>
<tr>
<td>esx-16</td>
<td>64</td>
<td>85</td>
<td>21</td>
</tr>
<tr>
<td></td>
<td><strong>688 Gb</strong></td>
<td></td>
<td><strong>102 Gb</strong></td>
</tr>
</tbody>
</table>
<p>What does this table tell us? The total of physical memory on all their hosts is 688 GB of RAM, but on some host they have assigned more RAM to VMs then physically present. A total of 102 GB more!!! That is no typo, that really is one-hundred and two  Gigabytes of RAM. VMware ESX saved them buying 102 GB by allowing memory over-commit. To me, that is quite a saving, a saving you won&#8217;t get using Hyper-V. Actually, there is more.</p>
<p><strong>Transparent Pagesharing</strong></p>
<p>Say, we have 10 VMs running Windows 2003 Server and in each VM there is about 500Mb of identical data, because it is just the basics of Windows 2003. So you have 4,5GB (5GB &#8211; 500Mb) of redundant data in your expensive RAM. Not, with VMware transparent page-sharing you haven&#8217;t. So there is another great memory saver. Now look at the bigger picture again and see how much memory would be saved if you have 400 Windows VMs and add those savings of memory over-commitment&#8230;&#8230; I think you get the point and why you can really benefit from these techniques.</p>
<p><em>Thank you Tom Howarth for checking this post before publishing.</em></p>
<p>Series:<br />
<a href="http://www.gabesvirtualworld.com/?p=103" target="_self">Hyper-V, not in my datacenter (part 1: Hardware)</a><br />
<a href="http://www.gabesvirtualworld.com/?p=104" target="_self">Hyper-V, not in my datacenter (part 2: Guest OS and Memory overcommit)</a><br />
<a href="http://www.gabesvirtualworld.com/?p=107" target="_self">Hyper-V, not in my datacenter (part 3: Motions and storage)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabesvirtualworld.com/hyper-v-not-in-my-datacenter-part-2-guest-os-and-memory-overcommit/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>How does HA calculate the failover level?</title>
		<link>http://www.gabesvirtualworld.com/how-does-ha-calculate-the-failover-level/</link>
		<comments>http://www.gabesvirtualworld.com/how-does-ha-calculate-the-failover-level/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 10:21:24 +0000</pubDate>
		<dc:creator>Gabrie van Zanten</dc:creator>
				<category><![CDATA[ESX]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Virtual Center]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://www.gabesvirtualworld.com/?p=70</guid>
		<description><![CDATA[A lot of people try to figure out how HA calculates the failover level. I already did know that VC 2.0 use a slot size based on max cpu and memory for the &#8220;worst&#8221; VM,but this article by &#8220;Virtual Geek&#8221; explains everything into great detail. Very very good read !!
http://virtualgeek.typepad.com/virtual_geek/2008/06/so-how-exactly.html
]]></description>
			<content:encoded><![CDATA[<p>A lot of people try to figure out how HA calculates the failover level. I already did know that VC 2.0 use a slot size based on max cpu and memory for the &#8220;worst&#8221; VM,<span id="more-70"></span>but this article by &#8220;Virtual Geek&#8221; explains everything into great detail. Very very good read !!</p>
<p><a href="http://virtualgeek.typepad.com/virtual_geek/2008/06/so-how-exactly.html" target="_blank">http://virtualgeek.typepad.com/virtual_geek/2008/06/so-how-exactly.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabesvirtualworld.com/how-does-ha-calculate-the-failover-level/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
