Por Luis Ramirez

He visto muchos casos con problemas de desempeño por causa de un mal entendido de cómo emplear estos switch de configuración, razón por la cual decidí escribir este Blog.

Para empezar vamos a aclarar que es Memoria Virtual y Memoria física.

Memoria Virtual vendría siendo una técnica utilizada para sacar provecho y dar la impresión a CADA aplicación que se viene trabajando con memoria continua. La memoria virtual se basa en lo que es un direccionamiento de espacio lineal llamado Virtual Address Space (VAS)

Memoria Física, sería el área en donde VAS estará apuntando y entre mas memoria física se tendría una mayor área para trabajo y por lo tanto menos acceso a disco (mejorando desempeño).

En un ambiente de 32 bits por diseño de ARQUITECTURA se tiene un límite del direccionamiento virtual de 4 GB (No confundir con memoria FISICA). No importa si tienes 512 MB o 8 GB FISICOS, Windows se encargara de emular esto para cada aplicación. Ahora de estos 4 GB virtuales se dividirán en dos para modo usuario (aplicación) y dos para el kernel (sistema operativo)

/3GB

Lo que hace este switch es incrementar el área de direccionamiento virtual (VAS) a 3 GB en modo usuario y decrementar a 1 GB el kernel, esto es recomendado en casos donde se tenga solo una aplicación corriendo y esta no tenga mucha interacción con el sistema operativo, de lo contrario el servidor tendrá un comportamiento extremadamente lento para responder.

/Userva

Es parecido al 3GB pero aquí podemos manualmente configurar el rango entre 2048 y 3072

/PAE

PAE nos permite direccionar fuera del límite de los 4GB. Digamos que si tienes 8 GB físicos, para poder acceder/direccionar entre 4 y 8 tendrías que tener esta opción habilitada en el sistema operativo. Algo importante a notar es que cada sistema operativo y/o hardware tiene una limitación de cuanto soporta.

Estas opciones las puedes encontrar en Windows 2003 bajo boot.ini, en Vista y versiones posteriores bajo BCDEdit.

AWE

Address Windowing Extentions (AWE) es una funcionalidad para indicarle a una aplicación (como SQL Server) que se puede direccionar VAS mas allá de los 4 GB , esto es, si el SISTEMA OPERATIVO reconoce dicha memoria (con la opción PAE) y la aplicación fue compilada para soportar esto.

Es importante asignarle la política local “LOCK PAGES IN MEMORY” a la cuenta corriendo el Servicio si habilitas esta opción.

En ambientes de x64 BITS el VAS es de 8TB y 7TB en IA64, PAE y 3GB son ignorados.

Escenarios que pueden existir

Windows 2003 32 bits corriendo en un procesador de 64 bits

  • El VAS de modo usuario será de 2 GB
  • AE esta habilitado por default.
  • 3GB se pude habilitar pero NO es recomendado.
  • AWE seria necesario para manipular mas alla de los 4GB.

Windows 2003 64 bits corriendo aplicación de 32 bits

  • el VAS de modo usuario será de 8 TB
  • PAE es ignorado
  • 3GB es ignorado
  • Aplicación puede usar mas de 2 GB si se habilita AWE.

Windows 2003 32 bits corriendo aplicación de 32 bits con 8 GB de memoria, la opción 3GB y AWE habilitado

El sistema operativo asignara 3GB al modo usuario (aplicación) y 1 GB al sistema operativo, no utilizando el resto.

Escenarios que pueden existir en SQL Server

SQL Server de 32 bits corriendo en 32 bits

  • VAS será de 4GB.
  • PAE puede ser habilitado si el servidor tiene mas de 4 GB y por lo tanto habilitar AWE y “Lock pages in Memory”
  • No recomendamos usar 3GB.

SQL Server de 32 bits corriendo en 64 bits

  • VAS es de 8TB
  • PAE y 3GB son ignorados.
  • Habilitar AWE si se usara mas de 4GB.
  • “Lock Pages in Memory” deberá ser configurado si se habilita AWE.

SQL Server de 64 bits corriendo en 64 bits

  • VAS es de 8TB
  • PAE, 3GB y AWE son ignorados.
  • Habilitar “Lock Pages in Memory”

 

En cuestión de SQL Server para hacer uso de más VAS es recomendado

  • Tener la opción de /PAE habilitada
  • Tener al menos la última versión de actualización de SQL Server.
  • Habilitar Address Windowing Extentions (AWE)

sp_configure 'show advanced options', 1

RECONFIGURE

GO

sp_configure 'awe enabled', 1

RECONFIGURE

GO

  • Al configurar MAX Server Memory considera dejar 2 GB FISICOS para el sistema operativo y dejar mas memoria por cada instancia corriendo de manera tal que no se saturen.

    Por ejemplo, si tienes un servidor con una instancia, 8BG físicos puedes poner a SQL con 6GB (si es que no está corriendo otros servicios)

sp_configure 'max server memory', 6144

RECONFIGURE

GO

Mayor Información