Memory Manager surface area changes in SQL Server 2012
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:

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 + |
|
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 + |
|
pages_in_use_kb |
single_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 + |
|
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 |
SQL Server |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Memory Manager \ |
|
Memory Manager \ Emergency |
Memory Manager \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ Free |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Buffer Pool \ Last |
|
Memory Manager \ |
– |
|
SQL Server |
SQL Server |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Memory Manager \ |
|
Memory Manager \ |
Memory Manager \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ Current |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
Buffer Pool \ Free |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Buffer Pool \ |
|
Memory Manager \ |
– |
|
Memory Manager \ |
Buffer Pool \ Last |
|
Memory Manager \ |
– |
|
SQL Server |
SQL Server |
|
Memory node Id = n |
Memory node Id = n |
|
Memory node Id = n |
– |
|
Memory node Id = n |
– |
|
Memory node Id = n |
– |
|
Memory node Id = n |
– |
|
Memory Clerks \ |
Memory Clerks \ |
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 |
Object – SQLServer:Buffer |
|
Database Cache Memory (KB) |
Database pages |
|
Free Memory (KB) |
Free pages |
|
Reserved Server Memory (KB) |
Reserved pages |
|
Stolen Server Memory (KB) |
Stolen pages |
|
Target |
Target |
|
Total |
Total |
|
– |
AWE |
|
– |
AWE stolen maps / sec |
|
– |
AWE |
|
– |
AWE |
|
– |
AWE |
|
SQL Server |
SQL Server |
|
Object – |
Object – |
|
Database Node |
Database pages |
|
Free Node Memory |
Free pages |
|
Foreign Node Memory |
Foreign pages |
|
Stolen Node Memory |
Stolen pages |
|
Target Node Memory |
Target pages |
|
Total Node Memory |
Total pages |
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.
Memory Manager surface area changes in SQL Server 2012的更多相关文章
- SQL Server 2012 内存管理 (memory management) 改进
SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...
- SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)
为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...
- 数据库服务器构建和部署列表(For SQL Server 2012)
前言 我们可能经常安装和部署数据库服务器,但是可能突然忘记了某个设置,为后来的运维造成隐患.下面是国外大牛整理的的检查列表. 其实也包含了很多我们平时数据库配置的最佳实践.比如TEMPDB 文件的个数 ...
- 疑难杂症--SQL SERVER 2012下数据库内存异常回收
--=================================================================== --背景: 在一台SQL SERVER 2012 SP1(1 ...
- 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群
需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...
- SQL Server 2012 各版本功能比较
有关不同版本的 SQL Server 2012 所支持的功能的详细信息. 功能名称 Enterprise 商业智能 Standard Web Express with Advanced Service ...
- SQL Server 2012 AlwaysOn集群配置指南
1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...
- SQL Server 2012 连接到数据库引擎
第 1 课:连接到数据库引擎 https://msdn.microsoft.com/zh-cn/library/ms345332(v=sql.110).aspx 本课将介绍主要的工具以及如何连接并 ...
- 卸载sql server 2012
好不容易装上了sql server 2012数据库,可是却不能连接本地的数据库,后来发现缺少一些服务,于是决定重新安装,但是卸载却很麻烦,如果卸载不干净的话,重新安装会出问题,所以下面就总结一些方法: ...
随机推荐
- Error-the resource is not on the build path of a java project
错误描述 eclipse中的the resource is not on the build path of a java project,在Eclipse中点击生成源码时,弹窗提示该错误 解决办法 ...
- J.U.C Atomic(二)基本类型原子操作
java.util.concurrent.atomic包中对基本类型进行原子操作的类有:AtomicInteger.AtomicBoolean.AtomicLong. 下面通过一个测试程序来验证一下A ...
- 永远也记不住的linux环境变量,库文件,头文件,交叉编译...
一.环境变量1.node-v4.9.1-linux-armv7l1)安装cp node-v4.9.1-linux-armv7l.tar.gz /usr/local/cd /usr/local/tar ...
- 20165324《Java程序设计》第五周
学号 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第七章:内部类与异常类 内部类:java支持在类中定义另一个类,这个类为内部类,包含内部类的类称为外嵌类 ...
- beego——日志处理
这是一个用来处理日志的库,它的设计思路来自于 database/sql,目前支持的引擎有 file.console.net.smtp,可以通过如下方式进行安装: go get github.com/a ...
- Writing a device driver for Windows
Writing a device driver for Windows In order to write a device driver for windows, one needs ...
- fir.im 测试包下载工具--FIRReader 的图文介绍
fir.im 是一个供开发者上传测试包(也可以是企业的正式包)的网站.该网站提供了接口访问应用资源.下面要介绍的这个应用对接了这些接口,供用户方便下载应用. 先来看下应用截图吧! 主要有以下功能点:1 ...
- tomcat服务无响应堆栈分析
tomcat服务突然无响应了,导出内存堆栈和线程堆栈,分析后发现是同步锁使用不合理导致的. [root@prd-dtb-web-01 ~]# [root@prd-dtb-web-01 ~]# jmap ...
- Linux 系统日志管理 rsyslogd配置文件
rsyslogd配置文件 rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的.也就是说,日志服务的配置文件中主要定义了 ...
- [原创] css中的绝对定位和相对定位
我对博客的认识是:记录问题,解决问题,分享知识.如果有轮子,我不需要造轮子. 首先,定位无论是相对定位还是绝对定位,必须有一个参考项,而这个参考项,专业术语称之为 包含块,这里的包含块是指在定位时 ...