October 5, 2013 at 3:54 am
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?
October 5, 2013 at 5:24 am
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
October 5, 2013 at 6:14 am
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
October 6, 2013 at 2:47 pm
Thanks
Is this indicative of an issue? Or memory pressure?
October 6, 2013 at 2:55 pm
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
October 8, 2013 at 1:02 am
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;
October 8, 2013 at 3:58 am
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