Memory Manager surface area changes in SQL Server 2012
2017-04-28 15:23
609 查看
here were various changes to memory related DMVs, DBCC memory status, and Perfmon counters in SQL Server 2012 as 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 page allocations more efficient, and better handling and tracking of NUMA node memory allocations. This post aims to document these surface area changes in one place to serve as a quick reference.
Some of these changes were to standardize 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.
Other changes reflect the central role of the redesigned Memory Manager in being the interface to the OS, providing page allocations for the other components. A modular summary of the architectural changes is shown below:
I’ll follow up this article with some additional surface area changes for configuration and new memory manager messages that appear in the errorlog.
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.
Some of these changes were to standardize 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.
Other changes reflect the central role of the redesigned Memory Manager in being the interface to the OS, providing page allocations for the other components. A modular summary of the architectural changes is shown below:
DMV Changes
sys.dm_os_memory_nodes
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.sys.dm_os_memory_nodes | |
SQL Server 2012 | SQL Server 2008 R2 |
pages_kb | single_pages_kb + multi_pages_kb |
foreign_committed_kb | – |
sys.dm_os_sys_info
The main memory manager changes here are to standardize memory counters.sys.dm_os_sys_info | |
SQL Server 2012 | SQL Server 2008 R2 |
physical_memory_kb | physical_memory_in_bytes |
virtual_memory_kb | virtual_memory_in_bytes |
committed_kb | bpool_committed |
committed_target_kb | bpool_commit_target |
visible_target_kb | bpool_visible |
sys.dm_os_memory_cache_counters
sys.dm_os_memory_cache_counters | |
SQL Server 2012 | SQL Server 2008 R2 |
pages_kb | single_pages_kb + multi_pages_kb |
pages_in_use_kb | single_pages_in_use_kb + multi_pages_in_use_kb |
sys.dm_os_memory_cache_entries
sys.dm_os_memory_cache_entries | |
SQL Server 2012 | SQL Server 2008 R2 |
pages_kb | pages_allocated_count |
sys.dm_os_memory_clerks
sys.dm_os_memory_clerks | |
SQL Server 2012 | SQL Server 2008 R2 |
pages_kb | single_pages_kb + multi_pages_kb |
page_size_in_bytes | page_size_bytes |
sys.dm_os_memory_objects
sys.dm_os_memory_objects | |
SQL Server 2012 | SQL Server 2008 R2 |
pages_in_bytes | pages_allocated_count |
max_pages_in_bytes | max_pages_allocated_count |
DBCC Memory Status changes
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 shows memory growth before the target is reached. The “Pages In Use” counter shows the actual number of pages in use, including 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.SQL Server 2012 | SQL Server 2008 R2 |
Memory Manager \ Large Pages Allocated | – |
Memory Manager \ Emergency Memory | Memory Manager \ Reserved Memory |
Memory Manager \ Emergency Memory In Use | Memory Manager \ Reserved Memory In Use |
Memory Manager \ Target Committed (KB) | Buffer Pool \ Target (Pages) |
Memory Manager \ Current Committed (KB) | Buffer Pool \ Committed (Pages) |
Memory Manager \ Pages Allocated (KB) | Buffer Pool \ Stolen (Pages) + Buffer Pool \ Database (Pages) |
Memory Manager \ Pages Reserved (KB) | Buffer Pool \ Reserved (Pages) |
Memory Manager \ Pages Free (KB) | Buffer Pool \ Free (Pages) |
Memory Manager \ Pages In Use | – |
Memory Manager \ Page Alloc Potential (KB) | Buffer Pool \ Stolen Potential (Pages) |
Memory Manager \ NUMA Growth Phase | – |
Memory Manager \ Last OOM Factor | Buffer Pool \ Last OOM Factor |
Memory Manager \ Last OS Error | – |
SQL Server 2012 | SQL Server 2008 R2 |
Memory Manager \ Large Pages Allocated | – |
Memory Manager \ Emergency Memory | Memory Manager \ Reserved Memory |
Memory Manager \ Emergency Memory In Use | Memory Manager \ Reserved Memory In Use |
Memory Manager \ Target Committed (KB) | Buffer Pool \ Target (Pages) |
Memory Manager \ Current Committed (KB) | Buffer Pool \ Committed (Pages) |
Memory Manager \ Pages Allocated (KB) | Buffer Pool \ Stolen (Pages) + Buffer Pool \ Database (Pages) |
Memory Manager \ Pages Reserved (KB) | Buffer Pool \ Reserved (Pages) |
Memory Manager \ Pages Free (KB) | Buffer Pool \ Free (Pages) |
Memory Manager \ Pages In Use | – |
Memory Manager \ Page Alloc Potential (KB) | Buffer Pool \ Stolen Potential (Pages) |
Memory Manager \ NUMA Growth Phase | – |
Memory Manager \ Last OOM Factor | Buffer Pool \ Last OOM Factor |
Memory Manager \ Last OS Error | – |
SQL Server 2012 | SQL Server 2008 R2 |
Memory node Id = n \ Pages Allocated | Memory node Id = n \ MultiPage Allocator + Memory node Id = n \ SinglePage Allocator |
Memory node Id = n \ Target Committed | – |
Memory node Id = n \ Current Committed | – |
Memory node Id = n \ Foreign Committed | – |
Memory node Id = n \ Away Committed | – |
Memory Clerks \ Pages Allocated | Memory Clerks \ SinglePage Allocator + Memory Clerks \ MultiPage Allocator |
Perfmon counters
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.SQL Server 2012 | SQL Server 2008 R2 |
Object – SQLServer:Memory Manager | Object – SQLServer:Buffer Manager |
Database Cache Memory (KB) | Database pages |
Free Memory (KB) | Free pages |
Reserved Server Memory (KB) | Reserved pages |
Stolen Server Memory (KB) | Stolen pages |
Target Server Memory (KB) | Target pages |
Total Server Memory (KB) | Total pages |
– | AWE lookup maps / sec |
– | AWE stolen maps / sec |
– | AWE write maps / sec |
– | AWE unmap calls / sec |
– | AWE unmap pages / sec |
SQL Server 2012 | SQL Server 2008 R2 |
Object – SQLServer:Memory Node | Object – SQLServer:Buffer Node |
Database Node Memory (KB) | Database pages |
Free Node Memory (KB) | Free pages |
Foreign Node Memory (KB) | Foreign pages |
Stolen Node Memory (KB) | Stolen pages |
Target Node Memory (KB) | Target pages |
Total Node Memory (KB) | Total pages |
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.
相关文章推荐
- Where is the Surface Area Configuration tool in SQL Server 2008
- Lock pages in memory now available for 64 bit Standard Edition of SQL Server
- SQLOS's memory manager and SQL Server's Buffer Pool
- Error message when you try to save a table in SQL Server 2008: "Saving changes is not permitted"
- SQL Server In Memory OLTP - 存储内幕浅谈
- Analysis Memory In Sqlserver
- FILESTREAM Configuration and Setup Changes in SQL Server 2008 February CTP
- SQL Server In-Memory OLTP 无损PPT分享
- Full Text Indexing in SQL Server 2012
- Skipping Errors in Transactional Replication on SQLSERVER 2012
- sql server 2012找不到 sql server configuration manager
- SQL Server In Memory OLTP - MVCC 事务管理
- In-Memory Natively Compiled vs Interpreted Stored Procedures Performance Comparison in SQL Server 20
- Saving changes is not permitted in SQL Server
- Problem to create "New Database Diagram" in Microsoft SQL Server Management Studio for SQL Server 2012
- Using DDL Triggers in SQL Server 2005 to Capture Schema Changes
- Using AWE Memory in SQL Server 2000
- SQL Server In-Memory OLTP Internals for SQL Server 2016
- Alternatives to @@IDENTITY in SQL Server 2000
- Using Reporting Services SharePoint Web Parts in SQL Server 2000 Reporting Services Service Pack 2