SQL SERVER Observing Memory Internals


SQL Server 2008 includes several Dynamic Management Objects that provide information about memory and the various caches. Like the Dynamic Management Objects containing information about the schedulers


sys.dm_os_memory_clerks This view returns one row per memory clerk that is currently active in the instance of SQL Server. You can think of a clerk as an accounting unit. Each store described earlier is a clerk, but some clerks are not stores, such as those for the CLR and for full-text search. The following query returns a list of all the types of clerks:
SELECT DISTINCT type FROM sys.dm_os_memory_clerks;
Interesting columns include the following:
single_pages_kb The amount of single-page memory allocated, in kilobytes. This is the amount of memory allocated by using the single-page allocator of a memory node. This single-page allocator steals pages directly from the buffer pool. 
multi_pages_kb The amount of multiple-page memory allocated, in kilobytes. This is the amount of memory allocated by using the multiple-page allocator of the memory nodes. This memory is allocated outside the buffer pool and takes advantage of the  virtual allocator of the memory nodes.
virtual_memory_reserved_kb The amount of virtual memory reserved by a memory clerk. This is the amount of memory reserved directly by the component that uses this clerk. In most  situations, only the buffer pool reserves VAS  directly by using its memory clerk.
virtual_memory_committed_kb The amount of memory committed by the clerk. The amount of committed memory should always be less than the amount of Reserved Memory.
awe_allocated_kb The amount of memory allocated by the memory clerk by using AWE. In SQL Server, only buffer pool clerks (MEMORYCLERK_SQLBUFFERPOOL) use this mechanism, and only when AWE is enabled. 
sys.dm_os_memory_cache_counters This view returns a snapshot of the health of each cache of type userstore and cachestore. It provides run-time information about the cache entries allocated, their use, and the source of memory for the cache entries. Interesting columns include the following:
single_pages_kb The amount of single-page memory allocated, in kilobytes. This is the amount of memory allocated by using the single-page allocator. This refers to the 8-KB pages that are taken directly from the buffer pool for this cache. 
multi_pages_kb The amount of multiple-page memory allocated, in kilobytes. This is the amount of memory allocated by using the multiple-page allocator of the memory node. This memory is allocated outside the buffer pool and takes advantage of the  virtual allocator of the memory nodes.
multi_pages_in_use_kb The amount of multiple-page memory being used, in kilobytes. 
single_pages_in_use_kb The amount of single-page memory being used, in kilobytes.
entries_count The number of entries in the cache. 
entries_in_use_count The number of entries in use in the cache. 
sys.dm_os_memory_cache_hash_tables This view returns a row for each active cache in the instance of SQL Server. This view can be joined to sys.dm_os_memory_cache_counters on the cache_address column. Interesting columns include the following:
buckets_count The number of buckets in the hash table. 
buckets_in_use_count The number of buckets currently being used. 
buckets_min_length The minimum number of cache entries in a bucket. 
buckets_max_length The maximum number of cache entries in a bucket. 
buckets_avg_length The average number of cache entries in each bucket. If this number gets very large, it might indicate that the hashing algorithm is not ideal. 
buckets_avg_scan_hit_length The average number of examined entries in a bucket before the searched-for item was found. As above, a big number might indicate a less-than-optimal cache. You might consider running DBCC FREESYSTEMCACHE to remove all  unused entries in the cache stores.
sys.dm_os_memory_cache_clock_hands This DMV, discussed earlier, can be joined to the other cache DMVs using the cache_address column. Interesting columns include the following:
clock_hand The type of clock hand, either external or internal. Remember that there are two clock hands for every store. 
clock_status The status of the clock hand: suspended or running. A clock hand runs when a corresponding policy kicks in.
rounds_count The number of rounds the clock hand has made. All the external clock hands should have the same (or close to the same) value in this column.
removed_all_rounds_count The number of entries removed by the clock hand in all rounds. 

http://www.mybasicknowledge.com/2012/09/sql-server-configurations-and.html