Total/Target memory

  • Hi All

    I am troubleshooting what I think is memory pressure on my SQL Server - SQL 2008R2 Enterprise (64bit)

    Using the SQLServer:Memory Manager counter, my target server memory is higher than my total server memory.

    The confusing part is that my Page Life Expectancy is 1022543 which as I understand, is decent.

    Any ideas?

  • I would suggest focusing first on wait stats to understand what is causing the server to run slow. But, if you want to know if you're out of memory, going after messages in the system through the ring buffers is the best way. You can run queries against sys.dm_os_ring_buffers to determine if you're getting out of memory messages. I wrote about it in an article on SimpleTalk[/url].

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning

  • Target is what SQL wants, total is what it has. Target>Total usually means SQL is increasing its memory allocations.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • Thanks

    Is this indicative of an issue? Or memory pressure?

  • Not enough information to tell. A single data point is never enough to say anything decisive.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • Grant Fritchey (10/5/2013)


    I would suggest focusing first on wait stats to understand what is causing the server to run slow. But, if you want to know if you're out of memory, going after messages in the system through the ring buffers is the best way. You can run queries against sys.dm_os_ring_buffers to determine if you're getting out of memory messages. I wrote about it in an article on SimpleTalk[/url].

    Thanks, using that ring buffer script combined with the one below, if I see shrink notifications from the second script, that would narrow my search down as to what was out of memory, correct?

    SET QUOTED_IDENTIFIER ON

    SELECT

    EventTime,

    n.value('(Pool)[1]', 'int') AS [Pool],

    n.value('(Broker)[1]', 'varchar(40)') AS [Broker],

    n.value('(Notification)[1]', 'varchar(40)') AS [Notification],

    n.value('(MemoryRatio)[1]', 'int') AS [MemoryRatio],

    n.value('(NewTarget)[1]', 'int') AS [NewTarget],

    n.value('(Overall)[1]', 'int') AS [Overall],

    n.value('(Rate)[1]', 'int') AS [Rate],

    n.value('(CurrentlyPredicted)[1]', 'int') AS [CurrentlyPredicted],

    n.value('(CurrentlyAllocated)[1]', 'int') AS [CurrentlyAllocated]

    FROM (

    SELECT

    DATEADD (ss, (-1 * ((cpu_ticks / CONVERT (float, ( cpu_ticks / ms_ticks ))) - [timestamp])/1000), GETDATE()) AS EventTime,

    CONVERT (xml, record) AS record

    FROM sys.dm_os_ring_buffers

    CROSS JOIN sys.dm_os_sys_info

    WHERE ring_buffer_type = 'RING_BUFFER_MEMORY_BROKER') AS t

    CROSS APPLY record.nodes('/Record/MemoryBroker') AS x(n)

    ORDER BY EventTime DESC;

  • yeah, that'll help. The buffers don't get too specific, or rather, they get way too specific. If you expand them out, there's all sorts of information. It's just that most of it is difficult to interpret if your name isn't Paul White.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning

Viewing 7 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic. Login to reply