<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQLOS Team : denali</title><link>http://sqlblog.com/blogs/sqlos_team/archive/tags/denali/default.aspx</link><description>Tags: denali</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Memory Manager Configuration changes in SQL Server 2012</title><link>http://sqlblog.com/blogs/sqlos_team/archive/2012/07/12/memory-manager-configuration-changes-in-sql-server-2012.aspx</link><pubDate>Thu, 12 Jul 2012 14:07:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44274</guid><dc:creator>SQLOS Team</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/sqlos_team/comments/44274.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/sqlos_team/commentrss.aspx?PostID=44274</wfw:commentRss><description>&lt;p&gt;Continuing from yesterday's&amp;nbsp;article about &lt;a href="http://sqlblog.com/b/sqlosteam/archive/2012/07/11/memory-manager-surface-area-changes-in-sql-server-2012.aspx"&gt;Memory Manager surface area changes in SQL Server 2012&lt;/a&gt;, this&amp;nbsp;post looks at corresponding configuraton changes for the new Memory Manager. The surface area change article mentioned &amp;nbsp;that the Memory Manager redesign resulted in being able to more accurately size and govern all SQL Server memory consumption. Let's look at what this means in terms of sizing the total memory usage.&lt;/p&gt;
&lt;h3&gt;Max server memory&lt;/h3&gt;
&lt;p&gt;In SQL Server 2008, the &lt;strong&gt;max server memory&lt;/strong&gt; configuration setting only governed single 8K page allocations. CLR allocations, multi-page allocations, direct Windows allocations (DWA) and memory required by thread stacks would not be included,&amp;nbsp;so you'd have to set the&lt;em&gt; -g memory_to_reserve&lt;/em&gt; startup setting on 32-bit systems if you're using CLR for example, to reserve sufficient address space.&lt;/p&gt;

&lt;p&gt;Setting &lt;em&gt;max server memory&lt;/em&gt; becomes more straightforward with SQL Server 2012. The redesigned Memory Manager takes a central role in providing page allocations for the other components, and the &lt;em&gt;max server memory&lt;/em&gt; setting governs all memory manager allocations.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-23/2664.sql_5F00_config.png"&gt;&lt;img style="width:959px;height:503px;" border="0" alt="" src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-23/2664.sql_5F00_config.png" width="1164" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With&amp;nbsp;all page allocations are governed, including&amp;nbsp;CLR page allocations, instance sizing is more predictable, which can help a lot in memory constrained and multi-instance scenarios. Direct Windows Allocations, (i.e. calls to VirtualAlloc()) will still remain outside of Memory Manager control.&lt;/p&gt;

&lt;p&gt;Here's a summary of the how the memory startup option settings changed in 2012:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Server 2008 R2&lt;/strong&gt;&lt;/p&gt;

&lt;table style="width:650px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td class="oa1"&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Sp_configure option&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Default setting&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Lowest possible value&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Highest possible value&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa2"&gt;
&lt;p&gt;Min server memory&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;0&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;16 (MB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;Value&lt;br&gt;&amp;nbsp; less than max server&lt;/p&gt;

&lt;p&gt;memory setting&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;Max&lt;br&gt;&amp;nbsp; server memory&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;2147483647&lt;/p&gt;

&lt;p&gt;(available memory in the system)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;16 (MB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;2147483647&lt;/p&gt;

&lt;p&gt;(available memory in the&lt;/p&gt;

&lt;p&gt;system)&lt;/p&gt;

&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;br&gt;&lt;strong&gt;SQL Server 2012&lt;/strong&gt;&lt;/p&gt;

&lt;table style="width:650px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td class="oa1"&gt;
&lt;p&gt;&lt;strong&gt;Sp_configure option&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;strong&gt;Default setting&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;strong&gt;Lowest possible value&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;&lt;strong&gt;Highest possible value&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa2"&gt;
&lt;p&gt;Min server memory&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;0&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;16 (MB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;Value&lt;br&gt;&amp;nbsp; less than max server&lt;/p&gt;

&lt;p&gt;memory setting&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;Max&lt;br&gt;&amp;nbsp; server memory&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;2147483647&lt;/p&gt;

&lt;p&gt;(available memory in the system)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;&lt;strong&gt;32 bit - 64 (MB)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;64 bit – 128 (MB)&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;2147483647&lt;/p&gt;

&lt;p&gt;(available memory in the&lt;/p&gt;

&lt;p&gt;system)&lt;/p&gt;

&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;sp_configure awe_enabled&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL Server 2008 R2 was the last release to support the &lt;em&gt;awe_enabled&lt;/em&gt; option, which allowed use of memory above 4GB on 32-bit systems. In SQL Server 2012 32-bit architectures can no longer use &amp;gt;4GB, though you can still set this value on 32-bit systems to allow the use of locked pages but it's not needed on 64-bit. Note this setting does not affect the way Address Windowing Extensions are use to implement locked pages in memory on 64-bit systems.&lt;/p&gt;

&lt;p&gt;- Guy&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;
Originally posted at http://blogs.msdn.com/b/sqlosteam/&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=44274" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/max+server+memory/default.aspx">max server memory</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/Memory+manager/default.aspx">Memory manager</category></item><item><title>Memory Manager surface area changes in SQL Server 2012</title><link>http://sqlblog.com/blogs/sqlos_team/archive/2012/07/11/memory-manager-surface-area-changes-in-sql-server-2012.aspx</link><pubDate>Wed, 11 Jul 2012 13:31:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44256</guid><dc:creator>SQLOS Team</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/sqlos_team/comments/44256.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/sqlos_team/commentrss.aspx?PostID=44256</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;There were various changes to memory related DMVs, DBCC memory status, and Perfmon counters in SQL Server 2012 a&lt;span style="font-size:small;"&gt;s part of the redesign of the Memory Manager component of SQLOS. The Memory Manager redesign resulted in being able to more accurately size and govern all SQL Server memory consumption, making&amp;nbsp;page allocations more efficient, and better handling and tracking of NUMA node memory allocations.&lt;/span&gt; This post aims to document these surface area&amp;nbsp;changes in one place to serve as a quick reference.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size:small;"&gt;Some of these&amp;nbsp;changes were to standardize&amp;nbsp;memory counters as "kb" rather than bytes or pages, continuing a process begun earlier, but now more relevant since the single and multi-page allocators were replaced by an any-size page allocator, so counting pages allocated would no longer give a meaningful view of memory use. This consolidation of allocators also resulted consolidated counters for page allocation.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size:small;"&gt;Other changes reflect the central role of the redesigned Memory Manager in being the interface to the OS,&amp;nbsp;providing page allocations for the other components. A modular summary of the architectural changes&amp;nbsp;is shown below:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-23/5074.Untitled.png"&gt;&lt;/a&gt;&lt;img style="width:1039px;height:514px;" src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-23/5468.Untitled.png" width="1436" height="728"&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-23/5468.Untitled.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;DMV Changes&lt;/h2&gt;
&lt;h3&gt;sys.dm_os_memory_nodes&lt;/h3&gt;
&lt;p&gt;The consolidation of the single and multi-page allocators is reflected in the pages_kb column in sys.dm_os_memory_nodes. The new foreign_committed_kb counter is a result of the improved NUMA management and reporting in SQL 2012 and identifies memory on a noe that belongs to a remote node, which can be useful if you're troubleshooting slower memory access. We will always try and use local memory first, at least until the target memory is reached.&lt;/p&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_memory_nodes&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;single_pages_kb +&lt;br&gt;&amp;nbsp; multi_pages_kb&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;foreign_committed_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;h3&gt;sys.dm_os_sys_info&lt;/h3&gt;
&lt;p&gt;The main memory manager changes here are to standardize memory counters.&lt;/p&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_sys_info&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;physical_memory_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;physical_memory_in_bytes&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;virtual_memory_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;virtual_memory_in_bytes&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;committed_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;bpool_committed&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;committed_target_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;bpool_commit_target&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;visible_target_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;bpool_visible&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;h3&gt;sys.dm_os_memory_cache_counters&lt;/h3&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_memory_cache_counters&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;single_pages_kb +&lt;br&gt;&amp;nbsp; multi_pages_kb&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_in_use_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;single_pages_in_use_kb&lt;br&gt;&amp;nbsp; + multi_pages_in_use_kb&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;sys.dm_os_memory_cache_entries&lt;/h3&gt;
&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_memory_cache_entries&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;pages_allocated_count&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;sys.dm_os_memory_clerks&lt;/b&gt;&lt;/h3&gt;
&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_memory_clerks&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_kb&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;single_pages_kb +&lt;br&gt;&amp;nbsp; multi_pages_kb&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;page_size_in_bytes&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;page_size_bytes&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;&lt;b&gt;sys.dm_os_memory_objects&lt;/b&gt;&lt;/b&gt;&lt;/h3&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td colSpan="2"&gt;
&lt;p&gt;&lt;b&gt;sys.dm_os_memory_objects&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;pages_in_bytes&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;pages_allocated_count&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;max_pages_in_bytes&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;max_pages_allocated_count&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;DBCC Memory Status changes&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;Many of the DBCC memory counters that were previously under Buffer Pool have now been consolidated under Memory Manager to reflect the revised architecture. There is also some additional information to reflect OS errors and NUMA awareness. NUMA growth phase&amp;nbsp;shows memory growth before the target is reached. The “Pages In Use” counter shows the actual number of pages in use, including&amp;nbsp;the stolen pages, database pages, and the reserved memory. The Away Committed counter indicates how much memory from this node is committed from other nodes.&lt;/p&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Large Pages Allocated&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Emergency Memory&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Reserved Memory&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \ Emergency&lt;br&gt;&amp;nbsp; Memory In Use&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Reserved Memory In Use&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Target Committed (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Target (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Current Committed (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Committed (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Allocated (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Stolen (Pages) + Buffer Pool \ Database (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Reserved (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Reserved (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Free (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \ Free&lt;br&gt;&amp;nbsp; (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages In Use&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Page Alloc Potential (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Stolen Potential (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; NUMA Growth Phase&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Last OOM Factor&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \ Last&lt;br&gt;&amp;nbsp; OOM Factor&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Last OS Error&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Large Pages Allocated&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Emergency Memory&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Reserved Memory&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Emergency Memory In Use&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Reserved Memory In Use&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Target Committed (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Target (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \ Current&lt;br&gt;&amp;nbsp; Committed (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Committed (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Allocated (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Stolen (Pages) + Buffer Pool \ Database (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Reserved (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Reserved (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages Free (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \ Free&lt;br&gt;&amp;nbsp; (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Pages In Use&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Page Alloc Potential (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \&lt;br&gt;&amp;nbsp; Stolen Potential (Pages)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; NUMA Growth Phase&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Last OOM Factor&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Buffer Pool \ Last&lt;br&gt;&amp;nbsp; OOM Factor&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Manager \&lt;br&gt;&amp;nbsp; Last OS Error&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ Pages Allocated&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ MultiPage Allocator + Memory node Id = n \ SinglePage Allocator&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ Target Committed&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ Current Committed&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;

&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ Foreign Committed&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory node Id = n&lt;br&gt;&amp;nbsp; \ Away Committed&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Memory Clerks \&lt;br&gt;&amp;nbsp; Pages Allocated&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Memory Clerks \&lt;br&gt;&amp;nbsp; SinglePage Allocator + Memory Clerks \ MultiPage Allocator&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;h2&gt;Perfmon counters&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;The Perfmon counter changes follow the same consolidation of counters under the Memory Manager object, and the standardization of counters to KB. Several deprecated AWE counters are now removed.&lt;/p&gt;

&lt;table style="width:856px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td class="oa1"&gt;
&lt;p&gt;SQL Server 2012&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa1"&gt;
&lt;p&gt;SQL Server 2008 R2&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa2"&gt;
&lt;p&gt;Object - SQLServer:Memory&lt;br&gt;&amp;nbsp; Manager&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa2"&gt;
&lt;p&gt;Object - SQLServer:Buffer&lt;br&gt;&amp;nbsp; Manager&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;Database Cache Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;Database pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa4"&gt;
&lt;p&gt;Free Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa4"&gt;
&lt;p&gt;Free pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;Reserved Server Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;Reserved pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa4"&gt;
&lt;p&gt;Stolen Server Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa4"&gt;
&lt;p&gt;Stolen pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;Target&lt;br&gt;&amp;nbsp; Server Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;Target&lt;br&gt;&amp;nbsp; pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa4"&gt;
&lt;p&gt;Total&lt;br&gt;&amp;nbsp; Server Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa4"&gt;
&lt;p&gt;Total&lt;br&gt;&amp;nbsp; pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;AWE&lt;br&gt;&amp;nbsp; lookup maps / sec&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa4"&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa4"&gt;
&lt;p&gt;AWE stolen maps / sec&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;AWE&lt;br&gt;&amp;nbsp; write maps /&lt;br&gt;&amp;nbsp; sec&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa4"&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa4"&gt;
&lt;p&gt;AWE&lt;br&gt;&amp;nbsp; unmap&lt;br&gt;&amp;nbsp; calls / sec&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="oa3"&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;/td&gt;

&lt;td class="oa3"&gt;
&lt;p&gt;AWE&lt;br&gt;&amp;nbsp; unmap&lt;br&gt;&amp;nbsp; pages / sec&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;table style="width:610px;" cellSpacing="0" cellPadding="0"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2012&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;&lt;b&gt;SQL Server&lt;br&gt;&amp;nbsp; 2008 R2&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Object -&lt;br&gt;&amp;nbsp; SQLServer:Memory Node&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Object -&lt;br&gt;&amp;nbsp; SQLServer:Buffer Node&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Database Node&lt;br&gt;&amp;nbsp; Memory (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Database pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Free Node Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Free pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Foreign Node Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Foreign pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Stolen Node Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Stolen pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Target Node Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Target pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Total Node Memory&lt;br&gt;&amp;nbsp; (KB)&lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Total pages&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;I'll follow up this article with some additional surface area changes for configuration and new memory manager messages that appear in the errorlog.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;The goal of these changes is to make the new Memory Manager activity easier and more intuitive to track, and to clean up some of the values that no longer make sense with the any size page allocator and deprecation of AWE. Anything you used to use but can't find any more? Let me know.&lt;/p&gt;

Originally posted at http://blogs.msdn.com/b/sqlosteam/&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=44256" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/Memory+manager/default.aspx">Memory manager</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category></item><item><title>What causes Multi-Page allocations?</title><link>http://sqlblog.com/blogs/sqlos_team/archive/2011/01/26/what-causes-multi-page-allocations.aspx</link><pubDate>Thu, 27 Jan 2011 05:40:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32948</guid><dc:creator>SQLOS Team</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/sqlos_team/comments/32948.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/sqlos_team/commentrss.aspx?PostID=32948</wfw:commentRss><description>&lt;p&gt;Writing about changes in the Denali Memory Manager In his &lt;a href="http://blogs.msdn.com/b/sqlosteam/archive/2011/01/04/sql-server-memory-manager-changes-in-denali.aspx"&gt;last post&lt;/a&gt; Rusi mentioned: "&lt;em&gt; In previous SQL versions only the 8k allocations were limited by&amp;nbsp;the ‘max server memory’ configuration option.&amp;nbsp; Allocations larger than 8k weren’t constrained&lt;/em&gt;."&lt;/p&gt;
&lt;p&gt;In SQL Server versions before Denali single page allocations and multi-Page allocations are handled by different components, the Single Page Allocator (which is responsible for Buffer Pool allocations and governed by 'max server memory') and the Multi-Page allocator (MPA) which handles allocations of greater than an 8K page. If there are many multi-page allocations this can affect how much memory needs to be&amp;nbsp;reserved outside 'max server memory' which may in turn involve setting the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms190737.aspx"&gt;-g memory_to_reserve&lt;/a&gt;&amp;nbsp;startup parameter. We'll follow up with more generic articles on the new Memory Manager structure, but in this post I want to clarify what might cause these larger allocations. &lt;/p&gt;
&lt;p&gt;So what kinds of query result in MPA activity? I was asked this question the other day after delivering an MCM webcast on Memory Manager changes in Denali.&amp;nbsp;After asking around our Dev team&amp;nbsp;I was connected to one of our test leads Sangeetha who had&amp;nbsp;tested the plan cache, and kindly provided this example of an MPA intensive query:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;A workload that has stored procedures with a large # of parameters (say &amp;gt; 100, &amp;gt; 500), and then invoked via large ad hoc batches, where each SP has different parameters will result in a plan being cached for this “exec proc” batch. This plan will result in MPA. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;o:p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Exec proc_name @p1, ….@p500&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Exec proc_name @p1, ….@p500&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Exec proc_name @p1, ….@p500&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Go&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;o:p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Another workload would be large adhoc batches of the form:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Select * from t where col1 in (1, 2, 3, ….500)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Select * from t where col1 in (1, 2, 3, ….500)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Select * from t where col1 in (1, 2, 3, ….500)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Go&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;o:p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In Denali all page allocations are handled by an "Any size page allocator" and&amp;nbsp;included in&amp;nbsp;'max server memory'. The buffer pool effectively becomes a client of the any size page allocator, which in turn relies on the memory manager.&lt;/p&gt;
&lt;p&gt;- Guy&lt;/p&gt;
Originally posted at http://blogs.msdn.com/b/sqlosteam/&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=32948" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/MMR/default.aspx">MMR</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/MPA/default.aspx">MPA</category><category domain="http://sqlblog.com/blogs/sqlos_team/archive/tags/SPA/default.aspx">SPA</category></item></channel></rss>