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:
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:
Ejemplo: 32GB
1 2 3 4 5 6 | 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.
Comentarios
Publicar un comentario