RAM, memoria virtual, archivo de paginación y administración de memoria en Windows

Se aplica a: Microsoft Windows XP Home EditionMicrosoft Windows XP ProfessionalMicrosoft Windows Server 2003 R2 Datacenter Edition (32-Bit x86) Más

Resumen


Este artículo contiene información sobre la implementación de memoria virtual en versiones de 32 bits de Windows. Esta información es pertinente a Windows 2000, Windows XP, Windows Server 2003, Windows Vista y Windows Server 2008. (Como Windows Server 2008 R2 solo está disponible en la versión de 64 bits, esta información no se le aplica).

Más información


En los sistemas operativos modernos como Windows, las aplicaciones y muchos procesos de sistema siempre hacen referencia a la memoria a través de direcciones de memoria virtual. El hardware traduce las direcciones de memoria virtual automáticamente a direcciones reales (RAM). Solo las partes principales del kernel del sistema operativo omiten esta traducción de direcciones y usan directamente las direcciones de memoria reales.

La memoria virtual siempre se usa, incluso cuando la memoria necesaria para todos los procesos en ejecución no supera el volumen de RAM que se instala en el sistema.

Procesos y espacios de direcciones

A todos los procesos (por ejemplo, los ejecutables de aplicaciones) que se ejecutan en versiones de 32 bits de Windows se les asignan direcciones de memorias virtuales (un espacio de dirección virtual) que van de 0 a 4 294 967 295 (2 * 32 - 1 = 4 GB), sin importar la cantidad real de RAM que se instala en el equipo.

En la configuración predeterminada de Windows, 2 GB de este espacio de direcciones virtuales se asignan al uso privado de cada proceso, mientras que los 2 GB restantes se comparten entre todos los procesos y el sistema operativo. Generalmente, las aplicaciones (por ejemplo, Bloc de notas, Word, Excel y Acrobat Reader) usan solo una fracción de los 2 GB de espacio de direcciones privadas. El sistema operativo asigna marcos de página de RAM solo a las páginas de memorias virtuales que están en uso. 

La extensión de dirección física (PAE) es la característica de la arquitectura de 32 bits de Intel que expande la dirección de memoria física (RAM) a 36 bits. La PAE no cambia el tamaño del espacio de direcciones virtuales (que sigue siendo de 4 GB), sino el volumen de la RAM real que puede admitir el procesador. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

268363 Extensiones de direcciones físicas (PAE) de Intel en Windows 2000
La traducción entre la dirección de la memoria virtual de 32 bits que usa el código que se ejecuta en un proceso y la dirección de RAM de 36 bits es una tarea que se realiza de forma automática y transparente en el hardware del equipo según las tablas de traducción que mantiene el sistema operativo. Cualquier página de memoria virtual (dirección de 32 bits) puede asociarse con cualquier página de RAM física (dirección de 36 bits).

En la siguiente lista se indica la cantidad de RAM que admiten las diferentes versiones y ediciones de Windows (desde mayo de 2010):
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Archivo de paginación

La memoria RAM es un recurso limitado, mientras que, a efectos prácticos, la memoria virtual es infinita. Pueden existir varios procesos, cada uno con sus 2 GB de espacio de direcciones virtuales privadas. Cuando la cantidad de memoria que usan todos los procesos existentes supera la RAM disponible, el sistema operativo mueve las páginas (piezas de 4 KB) de uno o más espacios de direcciones virtuales a la unidad de disco del equipo. Esto libera ese marco de RAM para darle otros usos. En los sistemas Windows, estas páginas "paginadas" se almacenan en uno o más archivos (archivos Pagefile.sys) en la raíz de una partición. Puede haber solo un archivo de estos en cada partición de disco. La ubicación y el tamaño del archivo de paginación están configurados en Propiedades del sistema (haga clic en  Avanzado, después en Rendimiento y, por último, en el botón Configuración).

Los usuarios suelen preguntar "¿qué tamaño debe tener el archivo de paginación?". No hay una respuesta para esto, porque depende de la cantidad de memoria RAM instalada y la memoria virtual que requiere la carga de trabajo. Si no hay otra información disponible, un buen punto de partida sería usar la cantidad generalmente recomendada de 1,5 veces la memoria RAM instalada. En los sistemas de servidor, suele ser recomendable contar con suficiente memoria RAM para que nunca falte y para que el archivo de paginación prácticamente no se use. En estos sistemas, no tiene sentido mantener un archivo de paginación muy grande. Por otro lado, si el espacio en disco es abundante, un archivo de paginación grande (por ejemplo, 1,5 veces la memoria RAM instalada) no generaría problemas y se evitaría la necesidad de preocuparse por su tamaño.

Rendimiento, límites arquitectónicos y RAM

En cualquier equipo, cuanto mayor sea la carga (la cantidad de usuarios y el volumen de trabajo), menor será el rendimiento, pero de forma no lineal. Cualquier aumento en la carga o en la demanda que supere ese punto hará mella de forma considerable en el rendimiento. Esto significa que algún recurso empieza a ser insuficiente y se convierte en un cuello de botella.

En algún punto, el recurso que es insuficiente no puede aumentarse. Esto significa que se ha alcanzado un límite arquitectónico. Algunos de los límites arquitectónicos más informados en Windows son los siguientes:
  • 2 GB de espacio de direcciones virtuales compartido para el sistema (kernel)
  • 2 GB de espacio de direcciones virtuales privado por proceso (modo de usuario)
  • 660 MB de almacenamiento de PTE del sistema (Windows Server 2003 y versiones anteriores)
  • 470 MB de almacenamiento del bloque paginado (Windows Server 2003 y versiones anteriores)
  • 256 MB de almacenamiento del bloque no paginado (Windows Server 2003 y versiones anteriores) 
Esto se aplica específicamente a Windows Server 2003, pero también puede aplicarse a Windows XP y Windows 2000. Sin embargo, Windows Vista, Windows Server 2008 y Windows 7 no comparten todos estos límites arquitectónicos. Los límites de memoria del usuario y del kernel (números 1 y 2 en este documento) son los mismos, pero los recursos del kernel, como los PTE y los bloques de memoria, son dinámicos. Estas nuevas características permiten el uso de la memoria paginada y no paginada. Esto también permite que los PTE y el grupo de sesiones superen los límites de los que se habló antes, hasta el punto en que se alcance la máxima capacidad del kernel.

Con frecuencia encontramos las siguientes afirmaciones: 
Con un servidor de Terminal Server, los 2 GB de espacio de direcciones compartido se usarán por completo antes de que se utilicen los 4 GB de memoria RAM.”
Esto puede ocurrir en algunos casos. Sin embargo, debe supervisar su sistema para saber si esto se aplica o no a su caso. Ciertas veces, estas afirmaciones son conclusiones de entornos específicos de Windows NT 4.0 o Windows 2000, y no necesariamente se aplican a Windows Server 2003. Se realizaron cambios significativos en Windows Server 2003 para reducir la probabilidad de que se alcancen estos límites arquitectónicos en la práctica. Por ejemplo, algunos procesos que tenían lugar en el kernel se sacaron de allí para usar menos memoria en el espacio de direcciones virtuales compartido.

Supervisión del uso de la memoria RAM y la memoria virtual 

El Monitor de rendimiento es la herramienta principal para supervisar el rendimiento del sistema e identificar la ubicación del cuello de botella. Para iniciar el Monitor de rendimiento, haga clic en Inicio, Panel de control, Herramientas administrativas y, después, doble clic en Monitor de rendimiento. A continuación, encontrará un resumen de contadores importantes y lo que indican:
  • Memoria, Bytes confirmados: este contador es una medida de la demanda de la memoria virtual.

    Aquí se indica la cantidad de bytes asignados por proceso y para qué proceso el sistema operativo confirma un marco de página de RAM o un espacio de página en el archivo de paginación (o quizás ambos). Cuando los bytes confirmados superan la memoria RAM disponible, la paginación aumenta, al igual que lo hace el tamaño del archivo de paginación que se usa. En algún punto, la actividad de paginación empieza a afectar el rendimiento de forma considerable.
  • Proceso, espacio de trabajo, _Total: este contador es una medida de la memoria virtual en uso "activo".

    Este contador muestra la cantidad de memoria RAM requerida para que la memoria virtual que se está usando para todos los procesos esté en la memoria RAM. Este valor siempre es un múltiplo de 4096, que es el tamaño de página que se utiliza en Windows. Cuando la demanda de memoria virtual supera la memoria RAM disponible, el sistema operativo ajusta la cantidad de memoria virtual de un proceso asignada a su espacio de trabajo para optimizar el uso de RAM disponible y minimizar la paginación.
  • Archivo de paginación, % del archivo de paginación en uso: este contador es una medida del total utilizado del archivo de paginación.
    Use este contador para determinar si el archivo de paginación tiene un tamaño adecuado. Si este contador llega a 100, significa que el archivo de paginación está completo y todo deja de funcionar. Según la volatilidad de la carga de trabajo, probablemente sea conveniente que el archivo de paginación sea lo suficientemente grande como para que no se utilice más del 50 al 75 %. Si se utiliza gran parte del archivo de paginación, es probable que el rendimiento aumente si se cuenta con más de uno en los diferentes discos físicos.
  • Memoria, Páginas/s: este contador ofrece una de las medidas que más se malinterpretan.

    Si el contador muestra un valor alto, esto no quiere decir necesariamente que el cuello de botella de rendimiento se deba a una falta de memoria RAM. El sistema operativo usa el sistema de paginación para otros fines aparte del intercambio de páginas debido a la asignación excesiva de memoria.
  • Memoria, Salida de páginas/s: este contador muestra la cantidad de páginas de memoria virtual que se escribieron en el archivo de paginación por segundo para liberar marcos de página de RAM para otros fines.

    Es el mejor contador para hacer un control si sospechas que la paginación es el cuello de botella de rendimiento. Aunque el valor de Bytes confirmados supere la memoria RAM y el de Salida de páginas/s sea inferior o igual a cero la mayor parte del tiempo, no existe un problema de rendimiento importante derivado de tener poca memoria RAM.
  • Memoria, Bytes confirmados,
    Memoria, Bytes de bloque no paginado,
    Memoria, Bytes de bloque paginado,
    Memoria, Total de bytes de código del sistema,
    Memoria, Total de bytes de controladores del sistema:
    La suma de estos contadores indica qué cantidad se está usando realmente de los 2 GB correspondientes a la parte compartida del espacio de direcciones virtuales de 4 GB. Usa este dato para determinar si el sistema está llegando a uno de los límites arquitectónicos de los que se habló antes.
  • Memoria, MBytes disponibles: este contador mide la cantidad de RAM disponible para satisfacer demandas de memoria virtual (ya sea nuevas asignaciones o a fin de restaurar una página a partir de un archivo de paginación).

    Cuando la memoria RAM escasea (por ejemplo, si los bytes confirmados superan la memoria RAM instalada), el sistema operativo intenta mantener disponible una cierta fracción de la memoria RAM instalada para uso inmediato. Para ello, copia páginas de memoria virtual que no están en uso activo al archivo de paginación. Por lo tanto, este contador no llega a cero y no indica necesariamente si al sistema le falta RAM.
Para obtener más información acerca de estos temas, visite los siguientes sitios web y sitios de blog de Microsoft: