memoria-ramRecientemente he montado un W2K8 Server (32 bits) en una máquina con apenas 2 GB de RAM. Como lo quiero destinar a ser una plataforma de virtualización, he adquirido RAM adicional hasta dejarle con 10 GB en total. Al arrancar, la BIOS reconoce toda la RAM, pero Windows 2008 Server… la reconoce a medias y solo 3,5 GB.  Por diseño, los entornos 32 bits solo mapean 4 GB de RAM. Además, dicha memoria ha de compartirse con otros dispositivos mapeados como la tarjeta de vídeo, controladoras, etc. Por ello, la memoria final suele disminuir hasta los 3,1 GB. En cualquier caso, el límite está en los 4 GB como tope. Veamos cómo hacer que reconozca toda la memoria disponible.
Si nos dirigimos a las propiedades del Servidor (botón derecho sobre Mi Pc/Propiedades), observamos que la información del sistema muestra los 10 GB en nuestro caso. Este dato muestra únicamente la memoria total instalada en la placa (la misma que reconoce la BIOS), PERO NO ES LA QUE UTILIZA EL SISTEMA OPERATIVO. Para comprobar cuanta memoria utiliza nuestro servidor, nos tendremos que dirigir al ‘performance’ del ‘task manager’. Solo ahí se muestra la memoria disponible. Al acceder al ´performance´compruebo en mi caso que dispongo de 3.838 MB de memoria física disponible en total (los 4 GB de limitación).

La solución está en cambiar el Sistema Operativo por uno de 64 bits, o bien en activar el PAE (Physsical Address Extension) integrado solo en algunas versiones server 2003 y 2008. Si se habilitase dicha función, la limitación en 2008 Server Enterprise Edition pasaría de 4 GB a 64 GB (http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx)
Y eso del PAE… ¿Qué es? Para explicarlo rápidamente, la limitación de 4 GB es por diseño y por causas físicas de hardware. Parece ser que desde hace unos años (época del Pentium Pro), los fabricantes incluyen unos bits adicionales en los procesadores. Por tanto, tenemos unos 36 bits disponibles y no 32 como pensábamos. El PAE se encarga de aprovechar esa extensión de bits con la memoria adicional que permite utilizar. La limitación de los 36 bits estaría en 64 GB de RAM.

En nuestro caso, procedemos además a deshabilitar el DEP (Data Execution Prevention) para optimizar la gestión de la memoria. Ejecutamos, en una línea de comandos:

BCDEdit /set nx AlwaysOff

BCDEdit /set PAE forceenable

A continuación reiniciamos el servidor. Al iniciar nuevamente, nos dirigimos al ‘performance’ y comprobaremos como la memoria que utiliza ahora el servidor ha aumentado de 3,5 GB a nuestros 10 GB.

Para activar PAE en Windows 2000/2003 Server: http://support.microsoft.com/kb/283037