PAGE LIFE EXPECTANCY



Olá pessoal tranquilo?  Espero que sim!

Já ouviram falar do contador chamado Page Life Expectancy localizado dentro do objeto Buffer Manager do Performance Monitor? Pois é, hoje irei falar um pouco sobre este contador que pode ser muito útil na hora de avaliar se seu ambiente está sofrendo ou não com problemas relacionados principalmente à pressão interna por memória.

O Books Online define este contador como “tempo em segundos que uma página permanece no buffer pool sem ser referenciada”, a uns 8 anos atrás o pessoal utilizava o valor de 300 segundos como referência, acima deste tempo seu ambiente estava tranquilo, já o contrário poderia indicar algum problema. Com a evolução dos sistemas este valor começou a ser deixado de lado e no link http://www.sqlskills.com/blogs/paul/page-life-expectancy-isnt-what-you-think/ o Jonathan Kehayias propôs uma nova fórmula para ter um valor de referência: (DataCacheSizeInGB/4GB *300), você pode obter o valor em amarelo usando uma das queries abaixo (Lembrando que o valor está em páginas de 8KB): 

select * from sys.dm_os_performance_counters
where object_name = 'SQLServer:Buffer Manager'and
counter_name = 'Database Pages'

Ou:

select count(*) from sys.dm_os_buffer_descriptors

Abaixo está a tela do Performance Monitor ou System Monitor do Windows Server 2003 / 2008 / 2008 R2 mostrando como se obter o valor do contador:

Windows 2003:


Windows 2008:


A partir do SQL 2005 você pode usar a query abaixo também para obter o valor do contador:

SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'
 
Lembre-se que não é somente este contador que deve ser levado em consideração em um troubleshooting de ambiente focado na memória. Contudo, combinado com os demais ele pode ser de grande ajuda para entender o que realmente está acontecendo.

Abaixo esta outro link utilizado de referência para este post:


Espero que tenham gostado! Um abraço!

2 comentários:

  1. Boa noite, parabéns pelo post. Tenho uma dúvida:

    Quando se diz: “tempo em segundos que uma página permanece no buffer pool sem ser referenciada”

    Este "Sem ser referenciada" é quando no caso a página está marcada como suja no data cache e permanece lá para que numa futura alteração o sql server não tenha que ir no disco novamente e carregá-la pro buffer?

    ResponderExcluir
    Respostas
    1. Olá Fabio! Primeiramente obrigado!

      Respondendo sua pergunta, basicamente todas as páginas do buffer pool são acessadas periodicamente. Durante a varredura um valor é atribuído a cada página com base na sua utilização. Quando este valor cai abaixo de um certo threshold numa página, ela é considerada sem utilização e uma escrita em disco é agendada para liberar seu conteúdo, caso esteja “suja”, ou liberada para a free list caso contrário.

      Quanto mais tempo as páginas permanecem no buffer pool com utilização, melhor, isto é refletido no PLE.

      Excluir