sqlserver:buffer manager计数器 stolen pages
SELECT SUM(single_pages_kb)/1024.0 [单页],
       SUM(multi_pages_kb)/1024.0 [多页],
       SUM(virtual_memory_reserved_kb)/1024.0 [VM 预留],
       SUM(virtual_memory_committed_kb)/1024.0 [VM 已提交],
       SUM(awe_allocated_kb)/1024.0 [awe]
FROM   sys.dm_os_memory_clerks
根据定义:
single_pages_kb
 已分配的单页内存的容量(千字节)。这是通过单页分配器分配的内存容量。它指的是从此缓存的缓冲池中直接获取的 8 KB 页。表明 single_pages_kb 是stolen类型的访问方式得到的内存;
而multi_pages  大于8k的内存   都是直接stolen得到的
理论上 
sqlserver:buffer manager计数器 stolen pages  *8kb应该等于SELECT SUM(single_pages_kb)+
       SUM(multi_pages_kb)
FROM   sys.dm_os_memory_clerks
但是实际上:
sqlserver:buffer manager计数器 stolen pages  *8kb
无限接近 
SELECT SUM(single_pages_kb)
FROM   sys.dm_os_memory_clerks
高手快来啊

解决方案 »

  1.   

    windows server 2003
    单实例
    sql server 2005sql server:buffer manager:stolen pages=67368page*8k=528944kbSELECT SUM(single_pages_kb)[单页],
           SUM(multi_pages_kb)[多页]
    FROM   sys.dm_os_memory_clerks 获得结果是:538952,11432
      

  2.   

    帮助内容,注意下红色字体。(没有研究,会不会多页分配的内存不计入buffer manager)single_pages_kb 
     bigint 
     分配的单页内存量 (KB)。这是使用内存节点的单页分配器分配的内存量。此单页分配器直接从缓冲池盗用页。不可为空值。
     
    multi_pages_kb 
     bigint 
     分配的多页内存量 (KB)。这是使用内存节点的多页分配器分配的内存量。此内存在缓冲池外面分配,利用了内存节点虚拟分配器的优势。不可为空值。
     
      

  3.   

    很纠结,居然命令不显示C:\Documents and Settings\Administrator>typeperf -q "SQLServer:Buffer Manger"
    错误:
    无法连接到指定的机器或机器已脱机。
      

  4.   

    此内存在缓冲池外面分因为buffer pool 都是单页8k大小的原因吧  所以这么说   不知道理解正确否?
      

  5.   

    Stolen = sum(single_pages_kb) + sum(multi_pages_kb)  是这样的。
      

  6.   

    Stolen = sum(single_pages_kb) + sum(multi_pages_kb)
    [Buffer Pool] = sum(virtual_memory_committed_kb) + sum(single_pages_kb)
    MemToLeave = sum(multi_pages_kb)申请小于等于8KB为一个单位的内存,这些内存称为Buffer Pool申请大于8KB为一个单位的内存,这些内存称为Multi-Page(或MemToLeave)
      

  7.   

    对 有可能  计数器里面的 sql server :buffer manager:stolen pages  并不是 sql sqlserver 所以的stolen pages  
      

  8.   

    求解答   完整的stolen memory 的计数器是?
      

  9.   

    SQL Server性能计数器 SQLServer:Memory Manager:Total Server Memory(KB):SQL Server缓冲区提交的内存。不是SQL Server总的使用内存,只是Buffer Pool中的大小。
     SQLServer:Memory Manager:Target Server Memory(KB):服务器可供SQL Server使用的内存量。一般是由SQL Server能访问到的内存量和SQL Server的sp_Configure配置中的Max Server Memory值中的较小值算得。 SQLServer:Memory Manger:Memory Grants Pending:等待内存授权的进程总数。如果该值不为0,说明当前有用户的内存申请由于内存压力被延迟,这意味着比较严重的内存瓶颈。 SQLServer:Buffer Manager:Buffer Cache Hit Ratio:数据从缓冲区中找到而不需要从硬盘中去取的百分比。SQL Server在运行一段时间后,该比率的变化应该很小,而且都应该在98%以上,如果在95%以下,说明有内存不足的问题。 
     SQLServer:Buffer Manager:Lazy Writes/Sec:每秒钟被惰性编辑器(Lazy writer)写入的缓冲数。当SQL Server感觉到内存压力的时候,会将最久没有使用的数据页面和执行计划从缓冲池中清理掉,做这个动作的就是Lazy Writer。
     Page Life Expectancy:页面不被引用后,在缓冲池中停留的秒数。在内存没有压力的情况下,页面会一直待在缓冲池中,Page Life Expectancy会维持在一个比较高的值,如果有内存压力时,Page Life Expectancy会下降。所以如果Page Life Expectancy不能维持在一个值上,就代表SQLServer有内存瓶颈。 
     SQLServer:Buffer Manager:Database Pages :就是Database Cache的大小。
     SQLServer:Buffer Manager:Free Pages:SQL Server中空闲可用的大小。 SQLServer:Buffer Manager:Stolen Pages:Buffer Pool中Stolen的大小。 SQLServer:Buffer Manager:Total Pages:Buffer Pool的总大小(等于Database Pages+Free Pages+Stolen Pages)。该值乘以8KB,应该等于Memory Manager:Total Server Memory的值。
      

  10.   

    按申请内存的大小分类 1)申请小于等于8KB为一个单位的内存,这些内存称为Buffer Pool
    2)申请大于8KB为一个单位的内存,这些内存称为Multi-Page(或MemToLeave)sum(single_pages_kb) 是 Buffer Pool中的Stolen的内存楼主的问题估计是这样子吧!
      

  11.   

    问下 有这种计数器吗?  监控 buffer pool里面的stolen   也监视multi pages
      

  12.   

    楼主确定Windows计数器获取数据的时间跟查询DMV的时间完全一致吗?
      

  13.   

    计数器里面的buffer pool:stolen pages与sys.dm_os_memory_clerks 里面的single_pages 几乎一致