Changes in dbcc memorystatus in Yukon
You probably have used dbcc memory status command in SQL2000. In Yukon we have changed output of dbcc memorystatus to reflect new memory manager design, covered in my previous post.
The first part of the output represents overall amount of memory consumed by SQLOS, SQL Server, memory manager
Memory Manager KB
------------------------------ --------------------
VM Reserved overall amount of VAS reserved by SQL Server
VM Committed overall amount of VAS committed by SQL Server
AWE Allocated overall amount of memory allocated using AWE mechanism
Reserved Memory overall amount of reserved memory, special memory used in emergency situations
Reserved Memory in Use overall amount of reserved memory currently in use
The next part is summary per cpu node
Memory node Id = 0 KB
------------------------------ --------------------
VM Reserved amount of VAS allocated by this node
VM Committed amount of VAS committed by this node
AWE Allocated amount of memory allocated using AWE mechanism by this node
MultiPage Allocator amount of memory allocated through mutli page allocator by this node
SinglePage Allocator amount of memory allocated through single page allocator, stolen from buffer Pool, by this node
Following information is summary output for a node grouped by a type of clerk. Please remember that there are several clerk types:
(5 rows affected)
MEMORYCLERK_SQLGENERAL (node 0) KB
---------------------------------------------------------------- --------------------
VM Reserved amount of VAS reserved by this clerk on a node 0
VM Committed amount of VAS committed by this clerk on a node 0
AWE Allocated amount of memory allocated using AWE mechanism by this clerk on node 0
SM Reserved amount of VAS reserved by this clerk using shared memory, file mapping APIs, by the clerk on node 0
SM Commited amount of VAS committed by this clerk using shared memory, file mapping APIs, by this clerk on node 0
SinglePage Allocator amount of memory allocated through single page allocator, stolen from BP, by this clerk on node 0
MultiPage Allocator amount of memory allocated through multi page allocator by this clerk on node 0
Then dbcc memorystatus outputs a summary for a given clerk across all the nodes.
MEMORYCLERK_SQLGENERAL (node 0) KB
---------------------------------------------------------------- --------------------
VM Reserved amount of VAS reserved by this clerk on all nodes
VM Committed amount of VAS committed by this clerk on all nodes
AWE Allocated amount of memory allocated using AWE mechanism by this clerk on all nodes
SM Reserved amount of VAS reserved by this clerk using shared memory, file mapping APIs, by the clerk on all nodes
SM Commited amount of VAS committed by this clerk using shared memory, file mapping APIs, by this clerk on all nodes
SinglePage Allocator amount of memory allocated through single page allocator, stolen from BP, by this clerk on all nodes
MultiPage Allocator amount of memory allocated through multi page allocator by this clerk on all nodes
The rest of information is similar to what described in https://support.microsoft.com/?id=271624
In most of the cases output from this command is not enough to figure out particular memory issue. However the information from this command could be sufficient to understand memory distribution inside of SQL Server. I usually use this command as a first step when debugging memory problems in SQL Server. For example if a server fails with VAS reservation error, having amount of VAS allocated is very important to be able to classify leak as internal or external for SQL Server.
Have a great day!