<?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>Crescent City Networking &#187; Microsoft</title>
	<atom:link href="http://ccnetworking.com/wordpress/archives/category/microsoft/feed" rel="self" type="application/rss+xml" />
	<link>http://ccnetworking.com/wordpress</link>
	<description></description>
	<lastBuildDate>Thu, 09 Sep 2010 16:45:00 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>September 2010 Bulletin Release Advance Notification</title>
		<link>http://blogs.technet.com/b/msrc/archive/2010/09/09/september-2010-bulletin-release-advance-notification.aspx</link>
		<comments>http://blogs.technet.com/b/msrc/archive/2010/09/09/september-2010-bulletin-release-advance-notification.aspx#comments</comments>
		<pubDate>Thu, 09 Sep 2010 16:45:00 +0000</pubDate>
		<dc:creator>MSRCTEAM</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Monthly Releases]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[monthly bulletin release]]></category>

		<guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3354513</guid>
		<description><![CDATA[<p>Hello - Today we're releasing our Advance Notification Service (ANS) for the September Security Bulletins, which are scheduled for release Tuesday, September 14, 2010. This is a service we provide&#160;to help enterprises plan and prepare for the upcoming security bulletin release. </p>
<p>This month we will be releasing 9 bulletins addressing 13 vulnerabilities affecting Windows, Internet Information Services (IIS), and Microsoft Office. Four of those bulletins carry a Critical rating, with the rest rated Important.</p>
<div></div>
<p>We recommend as always that customers review the <a href="http://www.microsoft.com/technet/security/bulletin/ms10-sep.mspx">ANS summary page</a> for more information and prepare for the testing and deployment of these bulletins as soon as possible.</p>
<div></div>
<p>Next Wednesday, September 15th, Adrian Stone and Jerry Bryant will host a public webcast during which they'll go into details about the bulletins, and answer questions live on the air. To register for this webcast in advance:</p>
<div></div>
<p>Date: Wednesday, September 15, 2010<br />Time: 11:00 a.m. PDT (UTC -7) <br />Registration: <a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032454433">https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032454433</a></p>
<div></div>
<p>We highly recommend that customers register for our comprehensive alerts if you have not done so already.&#160;Sign up here: <a href="http://technet.microsoft.com/en-us/security/dd252948.aspx">http://technet.microsoft.com/en-us/security/dd252948.aspx</a></p>
<div></div>
<p>Thanks, </p>
<div></div>
<p>&#160;</p>
<p>Carlene Chmaj</p>
<div></div>
<p>Security Response Communications Manager</p>
<div></div>
<p>Follow us on Twitter: <a href="http://twitter.com/msftsecresponse">@MSFTSecResponse</a></p>
<div></div><div style="clear:both"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3354513" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<p>Hello - Today we're releasing our Advance Notification Service (ANS) for the September Security Bulletins, which are scheduled for release Tuesday, September 14, 2010. This is a service we provide&nbsp;to help enterprises plan and prepare for the upcoming security bulletin release. </p>
<p>This month we will be releasing 9 bulletins addressing 13 vulnerabilities affecting Windows, Internet Information Services (IIS), and Microsoft Office. Four of those bulletins carry a Critical rating, with the rest rated Important.</p>
<div></div>
<p>We recommend as always that customers review the <a href="http://www.microsoft.com/technet/security/bulletin/ms10-sep.mspx">ANS summary page</a> for more information and prepare for the testing and deployment of these bulletins as soon as possible.</p>
<div></div>
<p>Next Wednesday, September 15th, Adrian Stone and Jerry Bryant will host a public webcast during which they'll go into details about the bulletins, and answer questions live on the air. To register for this webcast in advance:</p>
<div></div>
<p>Date: Wednesday, September 15, 2010<br />Time: 11:00 a.m. PDT (UTC -7) <br />Registration: <a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032454433">https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032454433</a></p>
<div></div>
<p>We highly recommend that customers register for our comprehensive alerts if you have not done so already.&nbsp;Sign up here: <a href="http://technet.microsoft.com/en-us/security/dd252948.aspx">http://technet.microsoft.com/en-us/security/dd252948.aspx</a></p>
<div></div>
<p>Thanks, </p>
<div></div>
<p>&nbsp;</p>
<p>Carlene Chmaj</p>
<div></div>
<p>Security Response Communications Manager</p>
<div></div>
<p>Follow us on Twitter: <a href="http://twitter.com/msftsecresponse">@MSFTSecResponse</a></p>
<div></div><div style="clear:both;"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3354513" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.technet.com/b/msrc/archive/2010/09/09/september-2010-bulletin-release-advance-notification.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting dynamic memory, part 2: displaying current usage information</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/08/scripting-dynamic-memory-part-2-displaying-current-usage-information.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/08/scripting-dynamic-memory-part-2-displaying-current-usage-information.aspx#comments</comments>
		<pubDate>Thu, 09 Sep 2010 06:40:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Developing on Windows Virtual PC / Virtual Server / Hyper-V]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10059666</guid>
		<description><![CDATA[<div style="float:none;margin:0px;padding:0px 0px 0px 0px" class="wlWriterHeaderFooter">


<br /></div>
<p>Moving on in my &#8220;scripting dynamic memory&#8221; series, the next thing to look at is how to get the current memory usage and memory available data that we display in the Hyper-V manager.&#160; You can get the current memory usage by just looking at MSVM_Memory (<a href="http://msdn.microsoft.com/en-us/library/cc136855(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136855(v=VS.85).aspx</a>), but unfortunately you cannot get the memory availability that way.&#160; To get the memory availability you need to use GetSummaryInformation (<a href="http://msdn.microsoft.com/en-us/library/cc160706(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc160706(v=VS.85).aspx</a>).</p>
<p>GetSummaryInformation is an API that we use as a light weight way to get a bunch of information about a virtual machine.&#160; It returns a Msvm_SummaryInformation Class (or a collection of these) (<a href="http://msdn.microsoft.com/en-us/library/cc136898(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136898(v=VS.85).aspx</a>)</p>
<div style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 20px 0px 10px;width: 97.5%;font-family: 'Courier New', courier, monospace;direction: ltr;font-size: 8pt;overflow: auto;cursor: text;border: silver 1px solid;padding: 4px">
<div style="text-align: left;line-height: 12pt;background-color: #f4f4f4;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$HyperVServer = Read-Host <span style="color: #006080">"Specify the Hyper-V Server to use (enter '.' for the local computer)"</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VMName = Read-Host <span style="color: #006080">"Specify the name of the virtual machine"</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VMMS = gwmi -namespace root\virtualization Msvm_VirtualSystemManagementService -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VM = gwmi MSVM_ComputerSystem -<span style="color: #0000ff">filter</span> <span style="color: #006080">"ElementName='$VMName'"</span> -namespace <span style="color: #006080">"root\virtualization"</span> -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># SettingType = 3 ensures that we do not get snapshots</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$SystemSettingData = $VM.getRelated(<span style="color: #006080">"Msvm_VirtualSystemSettingData"</span>) &#124; where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Request the virtual machine state (100), current memory (103) and memory availability (112)</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$RequestedInformation = 100,103,112</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the summary information for just the selected virtual machine</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$SummaryInformation = $VMMS.GetSummaryInformation($SystemSettingData, $RequestedInformation).SummaryInformation &#124; select -first 1</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     </pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Check that the virtual machine is running</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #0000ff">if</span> ($SummaryInformation.EnabledState <span style="color: #cc6633">-eq</span> <span style="color: #006080">"2"</span>)</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">   { write-host <span style="color: #006080">"Memory information for"</span> $VMName</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     write-host</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     write-host <span style="color: #006080">"Current memory usage:"</span> $SummaryInformation.MemoryUsage <span style="color: #006080">"MB"</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     </pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     <span style="color: #008000"># If memory available == 2147483647 then no memory available value has been returned from the virtual machine</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     <span style="color: #0000ff">if</span> ($SummaryInformation.MemoryAvailable <span style="color: #cc6633">-ne</span> 2147483647)</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">        { write-host <span style="color: #006080">"Current memory availability:"</span> $SummaryInformation.MemoryAvailable<span style="color: #006080">"%"</span>}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">     <span style="color: #0000ff">else</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">        { write-host <span style="color: #006080">"Dynamic memory is not currently active on this virtual machine"</span>}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">   }</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #0000ff">else</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">   { write-host <span style="color: #006080">"The requested virtual machine is not currently running"</span> }</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf--></div>
</div>
<p>Some things to know:</p>
<ul>
<li>While the code above gets the summary information for a single virtual machine &#8211; GetSummaryInformation allows you to pass in a null value for the system setting data.&#160; In this case you will get information about all virtual machines on the system. </li>
<li>While I am only displaying information about the current memory and the memory availability &#8211; you can get a lot more information in this way.&#160; Hit the link for GetSummaryInformation above if you want to see all that you can possibly get in this fashion. </li>
</ul>
<p>Cheers, 
  <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059666" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div style="float:none; margin:0px; padding:0px 0px 0px 0px;" class="wlWriterHeaderFooter">
<script type="text/javascript"><!--
tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/08/scripting-dynamic-memory-part-2-displaying-current-usage-information.aspx';
// --></script>
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script>
<br /></div>
<p>Moving on in my &ldquo;scripting dynamic memory&rdquo; series, the next thing to look at is how to get the current memory usage and memory available data that we display in the Hyper-V manager.&nbsp; You can get the current memory usage by just looking at MSVM_Memory (<a href="http://msdn.microsoft.com/en-us/library/cc136855(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136855(v=VS.85).aspx</a>), but unfortunately you cannot get the memory availability that way.&nbsp; To get the memory availability you need to use GetSummaryInformation (<a href="http://msdn.microsoft.com/en-us/library/cc160706(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc160706(v=VS.85).aspx</a>).</p>
<p>GetSummaryInformation is an API that we use as a light weight way to get a bunch of information about a virtual machine.&nbsp; It returns a Msvm_SummaryInformation Class (or a collection of these) (<a href="http://msdn.microsoft.com/en-us/library/cc136898(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136898(v=VS.85).aspx</a>)</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 20000px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$HyperVServer = Read-Host <span style="color: #006080">"Specify the Hyper-V Server to use (enter '.' for the local computer)"</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VMName = Read-Host <span style="color: #006080">"Specify the name of the virtual machine"</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VMMS = gwmi -namespace root\virtualization Msvm_VirtualSystemManagementService -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VM = gwmi MSVM_ComputerSystem -<span style="color: #0000ff">filter</span> <span style="color: #006080">"ElementName='$VMName'"</span> -namespace <span style="color: #006080">"root\virtualization"</span> -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># SettingType = 3 ensures that we do not get snapshots</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$SystemSettingData = $VM.getRelated(<span style="color: #006080">"Msvm_VirtualSystemSettingData"</span>) | where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Request the virtual machine state (100), current memory (103) and memory availability (112)</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$RequestedInformation = 100,103,112</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the summary information for just the selected virtual machine</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$SummaryInformation = $VMMS.GetSummaryInformation($SystemSettingData, $RequestedInformation).SummaryInformation | select -first 1</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     </pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Check that the virtual machine is running</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">if</span> ($SummaryInformation.EnabledState <span style="color: #cc6633">-eq</span> <span style="color: #006080">"2"</span>)</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">   { write-host <span style="color: #006080">"Memory information for"</span> $VMName</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     write-host</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     write-host <span style="color: #006080">"Current memory usage:"</span> $SummaryInformation.MemoryUsage <span style="color: #006080">"MB"</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     </pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     <span style="color: #008000"># If memory available == 2147483647 then no memory available value has been returned from the virtual machine</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     <span style="color: #0000ff">if</span> ($SummaryInformation.MemoryAvailable <span style="color: #cc6633">-ne</span> 2147483647)</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        { write-host <span style="color: #006080">"Current memory availability:"</span> $SummaryInformation.MemoryAvailable<span style="color: #006080">"%"</span>}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">     <span style="color: #0000ff">else</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        { write-host <span style="color: #006080">"Dynamic memory is not currently active on this virtual machine"</span>}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">   }</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">else</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">   { write-host <span style="color: #006080">"The requested virtual machine is not currently running"</span> }</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf--></div>
</div>
<p>Some things to know:</p>
<ul>
<li>While the code above gets the summary information for a single virtual machine &ndash; GetSummaryInformation allows you to pass in a null value for the system setting data.&nbsp; In this case you will get information about all virtual machines on the system. </li>
<li>While I am only displaying information about the current memory and the memory availability &ndash; you can get a lot more information in this way.&nbsp; Hit the link for GetSummaryInformation above if you want to see all that you can possibly get in this fashion. </li>
</ul>
<p>Cheers, 
  <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059666" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/08/scripting-dynamic-memory-part-2-displaying-current-usage-information.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-10-05-96-66/DisplayDM.zip" length="1028" type="application/octet-stream" />
		</item>
		<item>
		<title>Scripting dynamic memory, part 1: reading the configuration</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/07/scripting-dynamic-memory-part-1-reading-the-configuration.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/07/scripting-dynamic-memory-part-1-reading-the-configuration.aspx#comments</comments>
		<pubDate>Wed, 08 Sep 2010 05:18:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Developing on Windows Virtual PC / Virtual Server / Hyper-V]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10059144</guid>
		<description><![CDATA[<div style="float:none;margin:0px;padding:0px 0px 0px 0px" class="wlWriterHeaderFooter">


<br /></div>
<p>With the availability of dynamic memory in Windows Server 2008 R2 SP1 there are some changes to how you need to handle memory as a scripter / developer.&#160; The WMI API changes are now documented here <a href="http://msdn.microsoft.com/en-us/library/cc136856(VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136856(VS.85).aspx</a></p>
<p>Most of the changes are fairly obvious &#8211; but two not so obvious properties are the properties for the &#8220;Startup RAM&#8221; and &#8220;Maximum RAM&#8221;.&#160; In WMI these are mapped to &#8220;VirtualQuantity&#8221; and &#8220;Limit&#8221; respectively.&#160; Here is a sample script that simply displays the memory configuration of the specified virtual machine:</p>
<div style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 20px 0px 10px;width: 97.5%;font-family: 'Courier New', courier, monospace;direction: ltr;font-size: 8pt;overflow: auto;cursor: text;border: silver 1px solid;padding: 4px">
<div style="text-align: left;line-height: 12pt;background-color: #f4f4f4;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$HyperVServer = Read-Host <span style="color: #006080">"Specify the Hyper-V Server to use (enter '.' for the local computer)"</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VMName = Read-Host <span style="color: #006080">"Specify the name of the virtual machine"</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VMMS = gwmi -namespace root\virtualization Msvm_VirtualSystemManagementService -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$VM = gwmi MSVM_ComputerSystem -<span style="color: #0000ff">filter</span> <span style="color: #006080">"ElementName='$VMName'"</span> -namespace <span style="color: #006080">"root\virtualization"</span> -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># SettingType = 3 ensures that we do not get snapshots</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$SystemSettingData = $VM.getRelated(<span style="color: #006080">"Msvm_VirtualSystemSettingData"</span>) &#124; where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Get the Memory setting data</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">$MemSetting = $SystemSettingData.getRelated(<span style="color: #006080">"Msvm_MemorySettingData"</span>) &#124; select -first 1</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">&#160;</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #008000"># Display information about the current memory configuration</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px"><span style="color: #0000ff">switch</span> ($MemSetting.DynamicMemoryEnabled)</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">   {</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">      True  {<span style="color: #008000"># Dynamic memory is enabled</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Dynamic memory is enabled."</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Startup Memory: "</span> $MemSetting.VirtualQuantity $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Maximum Memory: "</span> $MemSetting.Limit $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Memory buffer:  "</span> $MemSetting.TargetMemoryBuffer</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Weight:         "</span> $MemSetting.Weight}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">                  </pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">      False {<span style="color: #008000"># Dynamic memory is disabled</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Dynamic memory is disabled."</span></pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Memory: "</span> $MemSetting.VirtualQuantity $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: #f4f4f4;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">             write-host <span style="color: #006080">"Weight: "</span> $MemSetting.Weight}</pre>
<!--crlf-->
<pre style="text-align: left;line-height: 12pt;background-color: white;margin: 0em;width: 100%;font-family: 'Courier New', courier, monospace;direction: ltr;color: black;font-size: 8pt;overflow: visible;border-style: none;padding: 0px">   }</pre>
<!--crlf--></div>
</div>
<p>Cheers, 
  <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059144" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div style="float:none; margin:0px; padding:0px 0px 0px 0px;" class="wlWriterHeaderFooter">
<script type="text/javascript"><!--
tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/07/scripting-dynamic-memory-part-1-reading-the-configuration.aspx';
// --></script>
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script>
<br /></div>
<p>With the availability of dynamic memory in Windows Server 2008 R2 SP1 there are some changes to how you need to handle memory as a scripter / developer.&nbsp; The WMI API changes are now documented here <a href="http://msdn.microsoft.com/en-us/library/cc136856(VS.85).aspx">http://msdn.microsoft.com/en-us/library/cc136856(VS.85).aspx</a></p>
<p>Most of the changes are fairly obvious &ndash; but two not so obvious properties are the properties for the &ldquo;Startup RAM&rdquo; and &ldquo;Maximum RAM&rdquo;.&nbsp; In WMI these are mapped to &ldquo;VirtualQuantity&rdquo; and &ldquo;Limit&rdquo; respectively.&nbsp; Here is a sample script that simply displays the memory configuration of the specified virtual machine:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 20000px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$HyperVServer = Read-Host <span style="color: #006080">"Specify the Hyper-V Server to use (enter '.' for the local computer)"</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VMName = Read-Host <span style="color: #006080">"Specify the name of the virtual machine"</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VMMS = gwmi -namespace root\virtualization Msvm_VirtualSystemManagementService -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$VM = gwmi MSVM_ComputerSystem -<span style="color: #0000ff">filter</span> <span style="color: #006080">"ElementName='$VMName'"</span> -namespace <span style="color: #006080">"root\virtualization"</span> -computername $HyperVServer</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># SettingType = 3 ensures that we do not get snapshots</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$SystemSettingData = $VM.getRelated(<span style="color: #006080">"Msvm_VirtualSystemSettingData"</span>) | where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Get the Memory setting data</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">$MemSetting = $SystemSettingData.getRelated(<span style="color: #006080">"Msvm_MemorySettingData"</span>) | select -first 1</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">&nbsp;</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000"># Display information about the current memory configuration</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">switch</span> ($MemSetting.DynamicMemoryEnabled)</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">   {</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      True  {<span style="color: #008000"># Dynamic memory is enabled</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Dynamic memory is enabled."</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Startup Memory: "</span> $MemSetting.VirtualQuantity $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Maximum Memory: "</span> $MemSetting.Limit $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Memory buffer:  "</span> $MemSetting.TargetMemoryBuffer</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Weight:         "</span> $MemSetting.Weight}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                  </pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      False {<span style="color: #008000"># Dynamic memory is disabled</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Dynamic memory is disabled."</span></pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Memory: "</span> $MemSetting.VirtualQuantity $MemSetting.AllocationUnits</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             write-host <span style="color: #006080">"Weight: "</span> $MemSetting.Weight}</pre>
<!--crlf-->
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">   }</pre>
<!--crlf--></div>
</div>
<p>Cheers, 
  <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059144" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/07/scripting-dynamic-memory-part-1-reading-the-configuration.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-10-05-91-44/ReadDMConfig.zip" length="909" type="application/octet-stream" />
		</item>
		<item>
		<title>Parent memory reserve with dynamic memory</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/03/parent-memory-reserve-with-dynamic-memory.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/03/parent-memory-reserve-with-dynamic-memory.aspx#comments</comments>
		<pubDate>Fri, 03 Sep 2010 22:01:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10056105</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/03/parent-memory-reserve-with-dynamic-memory.aspx';  <br /><br /></div><p>Most people I know who have spent a lot of time with Hyper-V have had the experience of accidentally taking too much memory away from the parent partition.&#160; This happens when they start too many virtual machines – and all of a sudden the performance and responsiveness of the parent partition goes down significantly.</p>  <p>The response from people who hit this is usually to stop the last virtual machine that they started, to reduce its memory, and then start it up again.</p>  <p>This solution has worked in the past – but is no longer an option with dynamic memory.&#160; The reason why this will not work is because if you stop the last virtual machine – you just leave the memory available for your other virtual machines to use – getting you straight back where you started.</p>  <p>For this reason, with dynamic memory we have implemented a new “parent memory reserve” for Hyper-V.&#160; Here we attempt to calculate an appropriate amount memory to keep for the parent partition and ensure that virtual machines with dynamic memory enabled cannot eat into this reserved memory.</p>  <p>That said – this reserve is not perfect.&#160; Specifically – it only accounts for the memory requirements of Hyper-V in the parent partition.&#160; If you are running other workloads in the parent partition (contrary to our best practice guidance) then you may still see parent partition memory starvation.</p>  <p>To help mitigate this issue – we are also providing a new registry entry that lets you override our parent memory reserve with your own static memory reserve.&#160; This registry entry does not exist by default – but if you go to the <strong>HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization</strong> registry key and create a new DWORD entry with a name of <strong>memoryreserve</strong> – you can then set the value to the static amount of memory that you want to reserve for the parent.</p>  <p>You should be warned – if you set this value too low; virtual machines will be able to use too much memory and cause performance issues for you.&#160; Equally – the higher you set this the fewer virtual machines you can run.</p>  <p>That said – I have found this to be very useful on my laptop – where I use Hyper-V like a desktop operating system.&#160; By setting this value to 2048 (on my laptop with 8GB of RAM) I can run multiple virtual machines and know that they will not cause Outlook / Internet Explorer in the parent partition to be affected.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056105" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/03/parent-memory-reserve-with-dynamic-memory.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Most people I know who have spent a lot of time with Hyper-V have had the experience of accidentally taking too much memory away from the parent partition.&#160; This happens when they start too many virtual machines – and all of a sudden the performance and responsiveness of the parent partition goes down significantly.</p>  <p>The response from people who hit this is usually to stop the last virtual machine that they started, to reduce its memory, and then start it up again.</p>  <p>This solution has worked in the past – but is no longer an option with dynamic memory.&#160; The reason why this will not work is because if you stop the last virtual machine – you just leave the memory available for your other virtual machines to use – getting you straight back where you started.</p>  <p>For this reason, with dynamic memory we have implemented a new “parent memory reserve” for Hyper-V.&#160; Here we attempt to calculate an appropriate amount memory to keep for the parent partition and ensure that virtual machines with dynamic memory enabled cannot eat into this reserved memory.</p>  <p>That said – this reserve is not perfect.&#160; Specifically – it only accounts for the memory requirements of Hyper-V in the parent partition.&#160; If you are running other workloads in the parent partition (contrary to our best practice guidance) then you may still see parent partition memory starvation.</p>  <p>To help mitigate this issue – we are also providing a new registry entry that lets you override our parent memory reserve with your own static memory reserve.&#160; This registry entry does not exist by default – but if you go to the <strong>HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization</strong> registry key and create a new DWORD entry with a name of <strong>memoryreserve</strong> – you can then set the value to the static amount of memory that you want to reserve for the parent.</p>  <p>You should be warned – if you set this value too low; virtual machines will be able to use too much memory and cause performance issues for you.&#160; Equally – the higher you set this the fewer virtual machines you can run.</p>  <p>That said – I have found this to be very useful on my laptop – where I use Hyper-V like a desktop operating system.&#160; By setting this value to 2048 (on my laptop with 8GB of RAM) I can run multiple virtual machines and know that they will not cause Outlook / Internet Explorer in the parent partition to be affected.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056105" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/03/parent-memory-reserve-with-dynamic-memory.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest Paging vs. Virtualization Paging and Negative Memory Availability</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/02/guest-paging-vs-virtualization-paging-and-negative-memory-availability.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/02/guest-paging-vs-virtualization-paging-and-negative-memory-availability.aspx#comments</comments>
		<pubDate>Thu, 02 Sep 2010 19:08:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10056052</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/02/guest-paging-vs-virtualization-paging-and-negative-memory-availability.aspx';  <br /><br /></div><p>Jeff has discussed this <a href="http://blogs.technet.com/b/virtualization/archive/2010/05/20/dynamic-memory-coming-to-hyper-v-part-5.aspx" target="_blank">at some length</a> over on the virtualization team blog, but as a general rule of thumb we believe that it is much better to have paging occur inside the guest operating system rather than at the virtualization layer (if paging is needed).</p>  <p>The simple reason for this is that the guest operating system has far better understanding of which are the best sections of memory to page out – where as all the virtualization layer can do is to guess at what should be paged out.</p>  <p>In my recent demonstrations of dynamic memory I came upon another interesting angle to consider.&#160; Here is a screenshot of task manager from a virtual machine that is running at –23% memory availability (i.e. it does not have enough memory available and is paging in the guest):</p>  <p><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" class="wlDisabledImage" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/3162.image_5F00_14EDC81A.png" width="418" height="463" /></p>  <p>What is fascinating about this screenshot is that even though this virtual machine is significantly short of memory, the guest operating system is still keeping 112mb memory available / as file cache.&#160; The reason for this is that the copy of Windows inside the virtual machine knows that even though it is short of memory – it can provide the best experience for the user of the virtual machine by not using all the memory that it has and by keeping a little bit free to serve as a cache / be there for new applications.</p>  <p>It is exactly this sort of logic that gets lost when paging is done at the virtualization layer instead of inside the guest operating system.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056052" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/02/guest-paging-vs-virtualization-paging-and-negative-memory-availability.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Jeff has discussed this <a href="http://blogs.technet.com/b/virtualization/archive/2010/05/20/dynamic-memory-coming-to-hyper-v-part-5.aspx" >at some length</a> over on the virtualization team blog, but as a general rule of thumb we believe that it is much better to have paging occur inside the guest operating system rather than at the virtualization layer (if paging is needed).</p>  <p>The simple reason for this is that the guest operating system has far better understanding of which are the best sections of memory to page out – where as all the virtualization layer can do is to guess at what should be paged out.</p>  <p>In my recent demonstrations of dynamic memory I came upon another interesting angle to consider.&#160; Here is a screenshot of task manager from a virtual machine that is running at –23% memory availability (i.e. it does not have enough memory available and is paging in the guest):</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/3162.image_5F00_14EDC81A.png" width="418" height="463" /></p>  <p>What is fascinating about this screenshot is that even though this virtual machine is significantly short of memory, the guest operating system is still keeping 112mb memory available / as file cache.&#160; The reason for this is that the copy of Windows inside the virtual machine knows that even though it is short of memory – it can provide the best experience for the user of the virtual machine by not using all the memory that it has and by keeping a little bit free to serve as a cache / be there for new applications.</p>  <p>It is exactly this sort of logic that gets lost when paging is done at the virtualization layer instead of inside the guest operating system.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056052" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/02/guest-paging-vs-virtualization-paging-and-negative-memory-availability.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking at Dynamic Memory Performance Counters</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/01/looking-at-dynamic-memory-performance-counters.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/01/looking-at-dynamic-memory-performance-counters.aspx#comments</comments>
		<pubDate>Wed, 01 Sep 2010 18:56:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10056048</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/01/looking-at-dynamic-memory-performance-counters.aspx';  <br /><br /></div><p>With Windows Server 2008 R2 SP1 we have added a number of new performance counters for dynamic memory.&#160; These counters allow you to get some extra insight into what is actually happening with memory on your Hyper-V server.&#160; The counters are grouped in two categories.&#160; First is “Hyper-V Dynamic Memory VM”:</p>  <p><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" class="wlDisabledImage" border="0" alt="Untitled" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8228.Untitled_5F00_51065FB2.png" width="718" height="530" /></p>  <p>These counters allow you to access specific information about dynamic memory inside each of the virtual machines on your system.&#160; The second category is “Hyper-V Dynamic Memory Balancer”:</p>  <p><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" class="wlDisabledImage" border="0" alt="DM performance counters - 1" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1108.DMperformancecounters1_5F00_0F1F7A64.png" width="718" height="530" /></p>  <p>These counters allow you to view information about dynamic memory across the entire physical computer.</p>  <p>One thing to note is that unlike the user interface – which uses the concept of “memory availability” (which I <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx" target="_blank">discussed yesterday</a>) – the performance counters instead talk about memory pressure.&#160; This is measuring the same thing as memory availability (i.e. how much memory does the virtual machine have compared to how much memory does it need) but the math is slightly different.&#160; A virtual machine with a pressure of 100 has exactly the amount of memory that it needs (this is equivalent to a memory availability of 0%).&#160; If the virtual machine pressure goes over 100 – it now has less memory than it needs (equivalent to a negative memory availability) and if the virtual machine pressure is under 100 then the virtual machine has more memory than it needs.</p>  <p>Virtual machine pressure is simply calculated by taking the amount of memory the virtual machine wants, dividing it by the amount of memory the virtual machine has and then multiplying the result by 100.</p>  <p>My favorite performance counter is the “Average Pressure” counter under the “Hyper-V Dynamic Memory Balancer” category.&#160; This gives you a very simple view of the overall memory allocation of your system:</p>  <p><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" class="wlDisabledImage" border="0" alt="DM performance counters - 2" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5417.DMperformancecounters2_5F00_787D2C1C.png" width="1049" height="785" /></p>  <p>As long as this number is under 100, you know that there is enough memory is your system to service your virtual machines.&#160; Ideally this value should be at 80 or lower.&#160; The closer this gets to 100, the closer you are to running out of memory.&#160; Once this number goes over 100 then you can pretty much guarantee that you have virtual machines that are paging in the guest operating system.</p>  <p>Cheers,    <br />Ben     </p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056048" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/01/looking-at-dynamic-memory-performance-counters.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>With Windows Server 2008 R2 SP1 we have added a number of new performance counters for dynamic memory.&#160; These counters allow you to get some extra insight into what is actually happening with memory on your Hyper-V server.&#160; The counters are grouped in two categories.&#160; First is “Hyper-V Dynamic Memory VM”:</p>  <p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="Untitled" border="0" alt="Untitled" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8228.Untitled_5F00_51065FB2.png" width="718" height="530" /></p>  <p>These counters allow you to access specific information about dynamic memory inside each of the virtual machines on your system.&#160; The second category is “Hyper-V Dynamic Memory Balancer”:</p>  <p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="DM performance counters - 1" border="0" alt="DM performance counters - 1" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1108.DMperformancecounters1_5F00_0F1F7A64.png" width="718" height="530" /></p>  <p>These counters allow you to view information about dynamic memory across the entire physical computer.</p>  <p>One thing to note is that unlike the user interface – which uses the concept of “memory availability” (which I <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx" >discussed yesterday</a>) – the performance counters instead talk about memory pressure.&#160; This is measuring the same thing as memory availability (i.e. how much memory does the virtual machine have compared to how much memory does it need) but the math is slightly different.&#160; A virtual machine with a pressure of 100 has exactly the amount of memory that it needs (this is equivalent to a memory availability of 0%).&#160; If the virtual machine pressure goes over 100 – it now has less memory than it needs (equivalent to a negative memory availability) and if the virtual machine pressure is under 100 then the virtual machine has more memory than it needs.</p>  <p>Virtual machine pressure is simply calculated by taking the amount of memory the virtual machine wants, dividing it by the amount of memory the virtual machine has and then multiplying the result by 100.</p>  <p>My favorite performance counter is the “Average Pressure” counter under the “Hyper-V Dynamic Memory Balancer” category.&#160; This gives you a very simple view of the overall memory allocation of your system:</p>  <p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="DM performance counters - 2" border="0" alt="DM performance counters - 2" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5417.DMperformancecounters2_5F00_787D2C1C.png" width="1049" height="785" /></p>  <p>As long as this number is under 100, you know that there is enough memory is your system to service your virtual machines.&#160; Ideally this value should be at 80 or lower.&#160; The closer this gets to 100, the closer you are to running out of memory.&#160; Once this number goes over 100 then you can pretty much guarantee that you have virtual machines that are paging in the guest operating system.</p>  <p>Cheers,    <br />Ben     </p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056048" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/01/looking-at-dynamic-memory-performance-counters.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update on Security Advisory 2269637</title>
		<link>http://blogs.technet.com/b/msrc/archive/2010/08/31/update-on-security-advisory-2269673.aspx</link>
		<comments>http://blogs.technet.com/b/msrc/archive/2010/08/31/update-on-security-advisory-2269673.aspx#comments</comments>
		<pubDate>Tue, 31 Aug 2010 21:00:00 +0000</pubDate>
		<dc:creator>MSRCTEAM</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Monthly Releases]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Security Advisory]]></category>
		<category><![CDATA[vulnerability]]></category>

		<guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3352941</guid>
		<description><![CDATA[<p>Hi everyone,</p>
<p>Since we released <a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx">Security Advisory 2269637</a> on August 23, we've continued to conduct an investigation not only into our own affected products, but also into how we can best help to protect customers given DLL preloading also affects some third-party applications. We'd like to provide an update on our investigation.</p>
<p>First, I want to be clear that Microsoft plans to address those of our products affected by this issue in the most appropriate way for customers. This will primarily be in the form of security updates or defense-in-depth updates. Also, due to the fact that customers need to click through a series of warnings and dialogs to open a malicious file, we rate most of these vulnerabilities as important. </p>
<p>One of the goals we have at Microsoft is to make it easy for developers to create secure applications on our platform. As we stated in our <a href="http://blogs.technet.com/b/msrc/archive/2010/08/21/microsoft-security-advisory-2269637-released.aspx">previous blog post</a>, DLL preloading is a well-known class of vulnerabilities and we have had guidance for developers in place for quite some time. <a href="http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx">We have recently updated that guidance</a> to provide more clarity. </p>
<p>Even with improved guidance, we recognize that it may take quite a bit of time for all affected applications to be updated and for some, an update may not be possible. With the advisory, we released a tool to help customers protect their systems (see <a href="http://support.microsoft.com/kb/2264107">KB 2264107</a>). This tool provides a framework for customers to modify the behavior of the DLL search path algorithm and essentially block unsafe DLL loading. When installed, this tool still needs to be configured in order to block malicious behavior, and customers have asked us for our recommended setting. As a result, our Security Research &#38; Defense team has written a <a href="http://blogs.technet.com/b/srd/archive/2010/08/23/an-update-on-the-dll-preloading-remote-attack-vector.aspx">detailed blog post</a> on this topic and has worked with our Microsoft Fix-it team to develop a <a href="http://go.microsoft.com/?linkid=9742148">Fix-it</a> to enable our recommended setting which blocks most network-based attack vectors. (Please note that the tool needs to be installed prior to enabling the Fix-it.)</p>
<p>Many enterprise customers have asked us to make it easier for them to deploy this tool. As a result, we are working with the Windows Update (WU) team to add the tool to the WU catalog. This will make it easier for those running Windows Server Update Services (WSUS) to deploy. We are working to have that solution in place within the next couple of weeks. We are also considering releasing this solution more broadly via WU as a defense-in-depth update for all customers in an "off by default" state. We will share more information through the MSRC blog as our plans are solidified. </p>
<p>Customers should note that the tool is limited to protecting against DLL preloading only and does not protect against .exe files that do not properly load files via a fully qualified path and developers will be required to update those applications accordingly. </p>
<p>Thank you,</p>
<p>Jerry Bryant<br />Group Manager, Response Communications</p><div style="clear:both"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3352941" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>Since we released <a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx">Security Advisory 2269637</a> on August 23, we've continued to conduct an investigation not only into our own affected products, but also into how we can best help to protect customers given DLL preloading also affects some third-party applications. We'd like to provide an update on our investigation.</p>
<p>First, I want to be clear that Microsoft plans to address those of our products affected by this issue in the most appropriate way for customers. This will primarily be in the form of security updates or defense-in-depth updates. Also, due to the fact that customers need to click through a series of warnings and dialogs to open a malicious file, we rate most of these vulnerabilities as important. </p>
<p>One of the goals we have at Microsoft is to make it easy for developers to create secure applications on our platform. As we stated in our <a href="http://blogs.technet.com/b/msrc/archive/2010/08/21/microsoft-security-advisory-2269637-released.aspx">previous blog post</a>, DLL preloading is a well-known class of vulnerabilities and we have had guidance for developers in place for quite some time. <a href="http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx">We have recently updated that guidance</a> to provide more clarity. </p>
<p>Even with improved guidance, we recognize that it may take quite a bit of time for all affected applications to be updated and for some, an update may not be possible. With the advisory, we released a tool to help customers protect their systems (see <a href="http://support.microsoft.com/kb/2264107">KB 2264107</a>). This tool provides a framework for customers to modify the behavior of the DLL search path algorithm and essentially block unsafe DLL loading. When installed, this tool still needs to be configured in order to block malicious behavior, and customers have asked us for our recommended setting. As a result, our Security Research &amp; Defense team has written a <a href="http://blogs.technet.com/b/srd/archive/2010/08/23/an-update-on-the-dll-preloading-remote-attack-vector.aspx">detailed blog post</a> on this topic and has worked with our Microsoft Fix-it team to develop a <a href="http://go.microsoft.com/?linkid=9742148">Fix-it</a> to enable our recommended setting which blocks most network-based attack vectors. (Please note that the tool needs to be installed prior to enabling the Fix-it.)</p>
<p>Many enterprise customers have asked us to make it easier for them to deploy this tool. As a result, we are working with the Windows Update (WU) team to add the tool to the WU catalog. This will make it easier for those running Windows Server Update Services (WSUS) to deploy. We are working to have that solution in place within the next couple of weeks. We are also considering releasing this solution more broadly via WU as a defense-in-depth update for all customers in an "off by default" state. We will share more information through the MSRC blog as our plans are solidified. </p>
<p>Customers should note that the tool is limited to protecting against DLL preloading only and does not protect against .exe files that do not properly load files via a fully qualified path and developers will be required to update those applications accordingly. </p>
<p>Thank you,</p>
<p>Jerry Bryant<br />Group Manager, Response Communications</p><div style="clear:both;"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3352941" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.technet.com/b/msrc/archive/2010/08/31/update-on-security-advisory-2269673.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is “Memory Availability”? (as reported by Dynamic Memory)</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx#comments</comments>
		<pubDate>Tue, 31 Aug 2010 18:12:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10056038</guid>
		<description><![CDATA[<div style="float:none;margin:0px;padding:0px 0px 0px 0px" class="wlWriterHeaderFooter">


<br /></div>
<p>When you use dynamic memory with Hyper-V one of the obvious changes to the user interface is the addition of the &#8220;Memory Availability&#8221; column:</p>
<p><img height="419" width="962" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8015.image_5F00_4EDD311E.png" alt="image" border="0" class="wlDisabledImage" style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" /></p>
<p>This is actually a really useful figure to have handy.&#160; What memory available represents is the ratio of how much memory a virtual machine has &#8211; compared to how much memory the virtual machine needs.&#160; For example:</p>
<p><img height="65" width="604" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8270.image_5F00_7D733A00.png" alt="image" border="0" class="wlDisabledImage" style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" /></p>
<p>If a virtual machine had 1000MB of memory &#8211; but only needed 900MB of memory we would report a memory available figure of 11%, because the virtual machine has 11% more memory than it actually needs.</p>
<p>Because the workload inside a virtual machine is constantly changing, and we are constantly moving memory around in response to these changes, you can expect the memory available figure for your virtual machines to keep on moving as the virtual machine is running as well.&#160; It is also possible for a virtual machine to report a negative figure for memory available:</p>
<p><img height="423" width="962" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5468.Availability2a_5F00_7C9AD416.png" alt="Availability - 2a" border="0" class="wlDisabledImage" style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" /></p>
<p>What this means is that the virtual machine has less memory than it needs.&#160; Note that in this case the virtual machine is still running &#8211; but it is likely that the guest operating system is now needing to page heavily in order to make forward progress.</p>
<p>You should always keep an eye on the memory availability of your system.&#160; As a general rule of thumb you want to see this value at the level of your configured memory buffer (which is 20% by default).&#160; Once you see this value start to dip under 10% that is a good warning that you should not be starting new virtual machines.&#160; If this value starts to get close to 0% (or even into the negatives) you should really think about stopping some virtual machines or migrating them to another server.</p>
<p>Cheers,   <br />Ben    </p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056038" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div style="float:none; margin:0px; padding:0px 0px 0px 0px;" class="wlWriterHeaderFooter">
<script type="text/javascript"><!--
 tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx'; 
// --></script>
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script>
<br /></div>
<p>When you use dynamic memory with Hyper-V one of the obvious changes to the user interface is the addition of the &ldquo;Memory Availability&rdquo; column:</p>
<p><img height="419" width="962" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8015.image_5F00_4EDD311E.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /></p>
<p>This is actually a really useful figure to have handy.&nbsp; What memory available represents is the ratio of how much memory a virtual machine has &ndash; compared to how much memory the virtual machine needs.&nbsp; For example:</p>
<p><img height="65" width="604" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/8270.image_5F00_7D733A00.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /></p>
<p>If a virtual machine had 1000MB of memory &ndash; but only needed 900MB of memory we would report a memory available figure of 11%, because the virtual machine has 11% more memory than it actually needs.</p>
<p>Because the workload inside a virtual machine is constantly changing, and we are constantly moving memory around in response to these changes, you can expect the memory available figure for your virtual machines to keep on moving as the virtual machine is running as well.&nbsp; It is also possible for a virtual machine to report a negative figure for memory available:</p>
<p><img height="423" width="962" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5468.Availability2a_5F00_7C9AD416.png" alt="Availability - 2a" border="0" title="Availability - 2a" class="wlDisabledImage" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /></p>
<p>What this means is that the virtual machine has less memory than it needs.&nbsp; Note that in this case the virtual machine is still running &ndash; but it is likely that the guest operating system is now needing to page heavily in order to make forward progress.</p>
<p>You should always keep an eye on the memory availability of your system.&nbsp; As a general rule of thumb you want to see this value at the level of your configured memory buffer (which is 20% by default).&nbsp; Once you see this value start to dip under 10% that is a good warning that you should not be starting new virtual machines.&nbsp; If this value starts to get close to 0% (or even into the negatives) you should really think about stopping some virtual machines or migrating them to another server.</p>
<p>Cheers,   <br />Ben    </p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10056038" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/31/what-is-memory-availability-as-reported-by-dynamic-memory.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hyper-V Hotfix Rollup now Available</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/30/hyper-v-hotfix-rollup-now-available.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/30/hyper-v-hotfix-rollup-now-available.aspx#comments</comments>
		<pubDate>Mon, 30 Aug 2010 21:57:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10055655</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/30/hyper-v-hotfix-rollup-now-available.aspx';  <br /><br /></div><p>I am a bit late in getting this post up (due to being on the road at TechEd Australia &#38; TechEd New Zealand); but last week we released a hotfix rollup package.</p>  <p>This package includes the fixes for three of the five issues that <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/09/important-hotfixes-for-hyper-v-on-windows-server-2008-r2-reminder.aspx" target="_blank">I recently blogged about</a>.&#160; The specific issues that are addressed are:</p>  <p><strong>KB Number:</strong> KB975530     <br /><strong>Title:</strong>Stop error message on an Intel Xeon 5500 series processor-based computer that is running Windows Server 2008 R2 and that has the Hyper-V role installed: &#34;0x00000101 - CLOCK_WATCHDOG_TIMEOUT&#34;     <br /><strong>Description:</strong>This is fairly simple.&#160; If you have a computer with an Intel Xeon 5500 series processor or an Intel Core-i series processor and you see this blue screen – install this hotfix.     <br /><strong>Extra detail:</strong> I blogged about this <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/10/16/hyper-v-hotfix-for-0x00000101-clock-watchdog-timeout-on-nehalem-systems.aspx">back in October</a>.&#160; Some of you reported that this did not solve the problem for you.&#160; The hotfix has since been updated to address the problem on these systems that were missed with the original fix.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/975530">http://support.microsoft.com/kb/975530</a></p>  <p><strong>KB Number:</strong> KB981791     <br /><strong>Title:</strong>&#34;STOP: 0x0000001a&#34; error message on a computer that has an Intel Westmere processor together with the Hyper-V role installed on Windows Server 2008 SP2 or on Windows Server 2008 R2     <br /><strong>Description:</strong> Once again, if you have this processor (<a href="http://en.wikipedia.org/wiki/Westmere_(CPU)#32_nm_processor_architecture_.22Westmere.22">Intel Westmere</a>) and see this blue screen – get this hotfix.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/981791">http://support.microsoft.com/kb/981791</a></p>  <p><strong>KB Number:</strong> KB974909     <br /><strong>Title:</strong> The network connection of a running Hyper-V virtual machine is lost under heavy outgoing network traffic on a Windows Server 2008 R2-based computer     <br /><strong>Description:</strong>This affects all guest operating systems.&#160; The fix is applied to the hypervisor and while a reboot is required for installation, no updated need to be applied to the guest operating systems.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/974909">http://support.microsoft.com/kb/974909</a></p>  <p>You can get the new rollup package from here: <a title="http://support.microsoft.com/kb/2264080" href="http://support.microsoft.com/kb/2264080">http://support.microsoft.com/kb/2264080</a> – alternatively it will be appearing as an optional update under Windows Update.</p>  <p>Cheers,    <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10055655" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/30/hyper-v-hotfix-rollup-now-available.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>I am a bit late in getting this post up (due to being on the road at TechEd Australia &amp; TechEd New Zealand); but last week we released a hotfix rollup package.</p>  <p>This package includes the fixes for three of the five issues that <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/09/important-hotfixes-for-hyper-v-on-windows-server-2008-r2-reminder.aspx" >I recently blogged about</a>.&#160; The specific issues that are addressed are:</p>  <p><strong>KB Number:</strong> KB975530     <br /><strong>Title:</strong>Stop error message on an Intel Xeon 5500 series processor-based computer that is running Windows Server 2008 R2 and that has the Hyper-V role installed: &quot;0x00000101 - CLOCK_WATCHDOG_TIMEOUT&quot;     <br /><strong>Description:</strong>This is fairly simple.&#160; If you have a computer with an Intel Xeon 5500 series processor or an Intel Core-i series processor and you see this blue screen – install this hotfix.     <br /><strong>Extra detail:</strong> I blogged about this <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/10/16/hyper-v-hotfix-for-0x00000101-clock-watchdog-timeout-on-nehalem-systems.aspx">back in October</a>.&#160; Some of you reported that this did not solve the problem for you.&#160; The hotfix has since been updated to address the problem on these systems that were missed with the original fix.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/975530">http://support.microsoft.com/kb/975530</a></p>  <p><strong>KB Number:</strong> KB981791     <br /><strong>Title:</strong>&quot;STOP: 0x0000001a&quot; error message on a computer that has an Intel Westmere processor together with the Hyper-V role installed on Windows Server 2008 SP2 or on Windows Server 2008 R2     <br /><strong>Description:</strong> Once again, if you have this processor (<a href="http://en.wikipedia.org/wiki/Westmere_(CPU)#32_nm_processor_architecture_.22Westmere.22">Intel Westmere</a>) and see this blue screen – get this hotfix.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/981791">http://support.microsoft.com/kb/981791</a></p>  <p><strong>KB Number:</strong> KB974909     <br /><strong>Title:</strong> The network connection of a running Hyper-V virtual machine is lost under heavy outgoing network traffic on a Windows Server 2008 R2-based computer     <br /><strong>Description:</strong>This affects all guest operating systems.&#160; The fix is applied to the hypervisor and while a reboot is required for installation, no updated need to be applied to the guest operating systems.     <br /><strong>Link:</strong> <a href="http://support.microsoft.com/kb/974909">http://support.microsoft.com/kb/974909</a></p>  <p>You can get the new rollup package from here: <a title="http://support.microsoft.com/kb/2264080" href="http://support.microsoft.com/kb/2264080">http://support.microsoft.com/kb/2264080</a> – alternatively it will be appearing as an optional update under Windows Update.</p>  <p>Cheers,    <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10055655" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/30/hyper-v-hotfix-rollup-now-available.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Security Advisory 2269637 Released</title>
		<link>http://blogs.technet.com/b/msrc/archive/2010/08/21/microsoft-security-advisory-2269637-released.aspx</link>
		<comments>http://blogs.technet.com/b/msrc/archive/2010/08/21/microsoft-security-advisory-2269637-released.aspx#comments</comments>
		<pubDate>Sun, 22 Aug 2010 06:03:00 +0000</pubDate>
		<dc:creator>MSRCTEAM</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Monthly Releases]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[advisory]]></category>
		<category><![CDATA[vulnerability]]></category>

		<guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3351220</guid>
		<description><![CDATA[<p><b>Overview</b></p>
<p>Today we released Microsoft<a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx"> Security Advisory 2269637</a>. This is different from other Microsoft Security Advisories because it's not talking about specific vulnerabilities in Microsoft products. Rather, this is our official guidance in response to security research that has outlined a new, remote vector for a well-known class of vulnerabilities, known as <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading</a><span style="text-decoration: underline"> or "binary planting" attacks</span>. &#160;We are currently conducting a thorough investigation into how this new vector may affect Microsoft products. As always, if we find this issue affects any of our products, we will address them appropriately. </p>
<p>Additionally, today we are providing a defense-in-depth update that customers can deploy that will help protect against attempts to exploit vulnerable applications through this newly identified vector. Finally, we are using our strong connections with researchers and partners in the industry to help address this new class of vulnerability. Our Microsoft Vulnerability Research program has been working to coordinate communication between the researcher who first brought this new vector to us and other application developers who are affected by this issue. </p>
<p><b>Technical Background</b></p>
<p>What this new research demonstrates is a new remote vector for <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading attacks</a>. These attacks are not new or unique to the Windows platform. For instance, PATH attacks that are similar to this issue constitute some of the earliest class of attacks against the UNIX operating system. The attack focuses on tricking an application into loading a malicious library when it thinks it's loading a trusted library. For this to succeed, the application has to call the trusted library by name instead of properly using its full path (for example, calling dllname.dll rather than C:\Program Files\Common Files\Contoso\dllname.dll). The attacker then has to place a malicious copy of the library in a directory that the system will search to locate the library and have that be a directory it will search before the directory where the trusted library actually is. For example, if an attacker knows that the application simply calls for dllname.dll (rather than using the full path) and it will look for dllname.dll in the current working directory before looking in C:\Program Files\Common Files\Contoso\. Then if the attacker can plant a malicious copy of dllname.dll in the current working directory, the application will load it first executing the attacker's code in the application's security context.</p>
<p>PATH or <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading attacks</a> have so far required the attacker to plant the malicious library on the local client system. This new research outlines a way an attacker could levy these attacks by planting the malicious library on a network share. In this scenario, the attacker would create a data file that the vulnerable application would open, create a malicious library that the vulnerable application would use, post both of them on a network share that the user could access, and convince the user to open the data file. At that point, the application would load the malicious library and the attacker's code would execute on the user's system.</p>
<p>Because this is a new vector, rather than a new class of vulnerability, the existing <a href="http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx">best practices</a> that protect against this class of vulnerability, automatically protect against this new vector: ensuring that applications make calls to trusted libraries using full path names.</p>
<p>While the best protection is following best practices, we are able to provide an additional layer of defense by offering a tool that can be configured to disable the loading of libraries from network shares. In particular, because this is altering functionality, we encourage customers to evaluate this tool before deploying it. As part of your evaluation, we encourage you to review the information at the <a href="http://blogs.technet.com/b/srd/">Security Research and Defense (SRD)</a> blog.</p>
<p>We will continue our work with the researchers and the industry to identify and address vulnerable applications. And as always, we will update you with any new information we have through our security advisories, security bulletins and the MSRC weblog as appropriate.</p>
<p>Thanks</p>
<p>Christopher</p><div style="clear:both"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3351220" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<p><b>Overview</b></p>
<p>Today we released Microsoft<a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx"> Security Advisory 2269637</a>. This is different from other Microsoft Security Advisories because it's not talking about specific vulnerabilities in Microsoft products. Rather, this is our official guidance in response to security research that has outlined a new, remote vector for a well-known class of vulnerabilities, known as <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading</a><span style="text-decoration: underline;"> or "binary planting" attacks</span>. &nbsp;We are currently conducting a thorough investigation into how this new vector may affect Microsoft products. As always, if we find this issue affects any of our products, we will address them appropriately. </p>
<p>Additionally, today we are providing a defense-in-depth update that customers can deploy that will help protect against attempts to exploit vulnerable applications through this newly identified vector. Finally, we are using our strong connections with researchers and partners in the industry to help address this new class of vulnerability. Our Microsoft Vulnerability Research program has been working to coordinate communication between the researcher who first brought this new vector to us and other application developers who are affected by this issue. </p>
<p><b>Technical Background</b></p>
<p>What this new research demonstrates is a new remote vector for <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading attacks</a>. These attacks are not new or unique to the Windows platform. For instance, PATH attacks that are similar to this issue constitute some of the earliest class of attacks against the UNIX operating system. The attack focuses on tricking an application into loading a malicious library when it thinks it's loading a trusted library. For this to succeed, the application has to call the trusted library by name instead of properly using its full path (for example, calling dllname.dll rather than C:\Program Files\Common Files\Contoso\dllname.dll). The attacker then has to place a malicious copy of the library in a directory that the system will search to locate the library and have that be a directory it will search before the directory where the trusted library actually is. For example, if an attacker knows that the application simply calls for dllname.dll (rather than using the full path) and it will look for dllname.dll in the current working directory before looking in C:\Program Files\Common Files\Contoso\. Then if the attacker can plant a malicious copy of dllname.dll in the current working directory, the application will load it first executing the attacker's code in the application's security context.</p>
<p>PATH or <a href="http://blogs.msdn.com/b/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx">DLL preloading attacks</a> have so far required the attacker to plant the malicious library on the local client system. This new research outlines a way an attacker could levy these attacks by planting the malicious library on a network share. In this scenario, the attacker would create a data file that the vulnerable application would open, create a malicious library that the vulnerable application would use, post both of them on a network share that the user could access, and convince the user to open the data file. At that point, the application would load the malicious library and the attacker's code would execute on the user's system.</p>
<p>Because this is a new vector, rather than a new class of vulnerability, the existing <a href="http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx">best practices</a> that protect against this class of vulnerability, automatically protect against this new vector: ensuring that applications make calls to trusted libraries using full path names.</p>
<p>While the best protection is following best practices, we are able to provide an additional layer of defense by offering a tool that can be configured to disable the loading of libraries from network shares. In particular, because this is altering functionality, we encourage customers to evaluate this tool before deploying it. As part of your evaluation, we encourage you to review the information at the <a href="http://blogs.technet.com/b/srd/">Security Research and Defense (SRD)</a> blog.</p>
<p>We will continue our work with the researchers and the industry to identify and address vulnerable applications. And as always, we will update you with any new information we have through our security advisories, security bulletins and the MSRC weblog as appropriate.</p>
<p>Thanks</p>
<p>Christopher</p><div style="clear:both;"></div><img src="http://blogs.technet.com/aggbug.aspx?PostID=3351220" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.technet.com/b/msrc/archive/2010/08/21/microsoft-security-advisory-2269637-released.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
