Performance, Memoria (PLE)



El Page life expectation es un valor que forma parte de los contadores de desempeño de la instancia de SQL Server, junto con otros variados que estan contenidos en la DMV sys.dm_os_performance_counters la cual encontraremos desde la versión de SQL Server 2005 aunque no con los mismos contadores en todas las versiones. Y nos sirve para medir la volatilidad de nuestro buffer pool (RAM).


Esto lo podemos encontrar con:

SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'

Como podremos apreciar el valor por defecto que encontraran en la red como media es de 500 (antes 300 segundos). Esto se deriva a que era el tiempo que tardaban 4GB en pasar en una SAN al Buffer Pool lo cual nos da una transferencia de 13.3 MB/s pero hoy en día he visto servidores con Buffer pools de 2TB y aunque esto no es algo que veamos normalmente si podemos encontrarnos comúnmente servidores de 32GB a 64GB, para los cuales este valor esta desproporcionado, esto lo podemos traducir entonces a:

PLE threshold = ((MAXBP(MB)/1024)/4)*300

PLE threshold = GB/4*300

Ejemplo: 32GB

PLE threshold = ((MAXBP(32,768)/1024)/4)*300 ) = 2,400

PLE threshold = 32/4*300 = 2,400

Aunque me enfocare en ver como este puntaje puede demostrarnos que el sistema está bajo presión de memoria, normalmente existen otros métodos como el total de uso de memoria, alta paginación a disco, procesos que se domaran demasiado, mal desempeño de IO (que es causado por alta paginación). Cuando supongamos que el valor no está siendo óptimo en un servidor de poca escritura pero si mucha lectura (o un sistema normal transaccional) veremos que los valores son muy bajos, en el punto bajo he visto hasta 49 segundos. Aunque esto puede ser normal para una carga masiva de datos o si estamos corriendo procesos de ETL y de hecho sería sano que fueran bajos, lo contrario es cierto para los servidores transaccionales.

Lo que también nos puede decir un bajo número en el PLE es que tenemos muchas consultas que no son óptimas pues no se rehúsan sus resultados, planes de ejecución, etc.

Como podemos darnos cuenta cuando tenemos un problema de memoria, si estamos usando reportes y hay grandes cambios y es muy bajo el PLE, cuando los IO/s son bajos pero el cambio el PLE es bajo serian algunos ejemplos.

Más Información:

http://blogs.msdn.com/b/mcsukbi/archive/2013/04/12/sql-server-page-life-expectancy.aspx
http://blog.sqlauthority.com/2010/12/13/sql-server-what-is-page-life-expectancy-ple-counter/

Comentarios