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 +
  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

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的更多相关文章

  1. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  2. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

  3. 数据库服务器构建和部署列表(For SQL Server 2012)

    前言 我们可能经常安装和部署数据库服务器,但是可能突然忘记了某个设置,为后来的运维造成隐患.下面是国外大牛整理的的检查列表. 其实也包含了很多我们平时数据库配置的最佳实践.比如TEMPDB 文件的个数 ...

  4. 疑难杂症--SQL SERVER 2012下数据库内存异常回收

    --=================================================================== --背景: 在一台SQL SERVER 2012 SP1(1 ...

  5. 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

    需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...

  6. SQL Server 2012 各版本功能比较

    有关不同版本的 SQL Server 2012 所支持的功能的详细信息. 功能名称 Enterprise 商业智能 Standard Web Express with Advanced Service ...

  7. SQL Server 2012 AlwaysOn集群配置指南

    1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...

  8. SQL Server 2012 连接到数据库引擎

    第 1 课:连接到数据库引擎 https://msdn.microsoft.com/zh-cn/library/ms345332(v=sql.110).aspx   本课将介绍主要的工具以及如何连接并 ...

  9. 卸载sql server 2012

    好不容易装上了sql server 2012数据库,可是却不能连接本地的数据库,后来发现缺少一些服务,于是决定重新安装,但是卸载却很麻烦,如果卸载不干净的话,重新安装会出问题,所以下面就总结一些方法: ...

随机推荐

  1. 解决scrollView中嵌套编辑框导致不能上下滑动的问题

    EditText设置maxLines之后,文本行数超过maxLines,会网上折叠,上下滑动能够浏览全部文本. 若EditText外层有scrollView.在EditText上下滑动,不会像正常情况 ...

  2. 007-aven-assembly-plugin和maven-jar-plugin打包,java启动命令

    一.需求 打一个zip包,包含如下: bin为程序脚本,启动和停止 lib为依赖包 根目录下为配置文件和项目jar包 二.知识储备 2.1.插件了解 plugin function maven-jar ...

  3. IPFS搭建&集群

    下载go-ipfs wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.17/go-ipfs_v0.4.17_linux-amd64 ...

  4. 详解MySQL第二篇—DML语句

    DML 语句: DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert).更新(update).删除(delete)和查(select),是开发人员日常使用最频繁的操作.下面将依次 ...

  5. [Windows Powershell]-学习笔记(6)

    Powershell环境变量 传统的控制台一般没有象Powershell这么高级的变量系统.它们都是依赖于机器本身的环境变量,进行操作 .环境变量对于powershell显得很重要,因为它涵盖了许多操 ...

  6. win下安装wget以及使用wget

    1. 安装wget网址:http://gnuwin32.sourceforge.net/packages/wget.htm下载http://downloads.sourceforge.net/gnuw ...

  7. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed

    地址:http://codeforces.com/contest/782/problem/B 题目: B. The Meeting Place Cannot Be Changed time limit ...

  8. 对Java CAS的一些了解(正在整理学习中)

    ①引言 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题 ...

  9. eclipse中添加tomcat ServerName 无法输入

    Eclipse的开发过程中,无法从以下方式,添加Tomcat服务器.  其中ServerName是被置为灰色的,无法编辑.  如何解决 1.  关闭Eclipse 2.  打开WorkSpace所在的 ...

  10. 如何建立DB2分区数据库?(转)

    欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...