RAM, memoria virtual, archivo de página y administración de memoria en Windows

Se aplica a: Windows Server 7 Service Pack 1, Windows Server 2012 R2
Número de KB original: 2160852

Resumen

Este artículo contiene información básica sobre la implementación de memoria virtual en versiones de 32 bits de Windows.

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

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

Procesos y espacios de direcciones

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

En la configuración predeterminada de Windows, se designan 2 gigabytes (GB) de este espacio de direcciones virtuales para el uso privado de cada proceso y los otros 2 GB se comparten entre todos los procesos y el sistema operativo. Normalmente, 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 ram solo a las páginas de memoria virtual que se usan.

La extensión de dirección física (PAE) es la característica de la arquitectura Intel de 32 bits que expande la dirección de memoria física (RAM) a 36 bits. PAE no cambia el tamaño del espacio de direcciones virtuales (que permanece en 4 GB), sino solo el volumen de RAM real que puede abordar el procesador.

El hardware del equipo controla de forma automática y transparente la traducción entre la dirección de memoria virtual de 32 bits que usa el código que se ejecuta en un proceso y la dirección RAM de 36 bits según las tablas de traducción que mantiene el sistema operativo. Cualquier página de memoria virtual (dirección de 32 bits) se puede asociar a cualquier página ram física (dirección de 36 bits).

En la lista siguiente se describe la cantidad de RAM que admiten las distintas versiones y ediciones de Windows (a partir de mayo de 2010):

Versión de Windows RAM
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

Paginación

La RAM es un recurso limitado, mientras que para fines más prácticos, la memoria virtual es ilimitada. Puede haber muchos procesos y cada proceso tiene sus propios 2 GB de espacio de direcciones virtuales privadas. Cuando la 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 al disco duro del equipo. Esto libera ese marco de RAM para otros usos. En los sistemas Windows, estas páginas paginadas se almacenan en uno o varios archivos (archivos Pagefile.sys) en la raíz de una partición. Puede haber uno de estos archivos en cada partición de disco. La ubicación y el tamaño del archivo de página se configuran en Propiedades del sistema (haga clic en Opciones avanzadas, haga clic en Rendimientoy, a continuación, haga clic en el botón Configuración ).

Los usuarios suelen preguntar qué tamaño debo hacer del archivo de página? No hay ninguna respuesta única a esta pregunta porque depende de la cantidad de RAM instalada y de la cantidad de memoria virtual que requiere la carga de trabajo. Si no hay ninguna otra información disponible, la recomendación típica de 1,5 veces la RAM instalada es un buen punto de partida. En los sistemas de servidor, normalmente quiere tener suficiente RAM para que nunca haya una escasez y para que no se use el archivo de página. En estos sistemas, puede que no tenga ningún propósito útil para mantener un archivo de página grande. Por otro lado, si el espacio en disco es abundante, mantener un archivo de página grande (por ejemplo, 1,5 veces la RAM instalada) no causa un problema, y esto también elimina la necesidad de preocuparse por el tamaño que tiene para hacerlo.

Rendimiento, límites de arquitectura y RAM

En cualquier sistema informático, a medida que aumenta la carga (el número de usuarios, el volumen de trabajo), el rendimiento disminuye, pero de forma no lineal. Cualquier aumento en la carga o la demanda, más allá de un punto determinado, provoca una disminución significativa del rendimiento. Esto significa que algunos recursos están en una oferta críticamente corta y se ha convertido en un cuello de botella.

En algún momento, no se puede aumentar el recurso que está en breve suministro. Esto significa que se ha alcanzado un límite arquitectónico . Algunos límites de arquitectura notificados con frecuencia en Windows incluyen lo siguiente:

  • 2 GB de espacio de direcciones virtuales compartidas para el sistema (kernel)
  • 2 GB de espacio de direcciones virtuales privadas por proceso (modo de usuario)
  • 660 MB de almacenamiento PTE del sistema (Windows Server 2003 y versiones anteriores)
  • 470 MB de almacenamiento del grupo paginado (Windows Server 2003 y versiones anteriores)
  • 256 MB de almacenamiento de grupo 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 a Windows 2000. Sin embargo, Windows Vista, Windows Server 2008 y Windows 7 no comparten estos límites arquitectónicos. Los límites de memoria de usuario y kernel (números 1 y 2 aquí) son los mismos, pero los recursos del kernel, como los PTE y varios grupos de memoria, son dinámicos. Esta nueva funcionalidad habilita la memoria paginada y no paginada. Esto también permite que los PTE y el grupo de sesiones crezcan más allá de los límites que se trataron anteriormente, hasta el punto en que se agota todo el kernel.

Instrucciones entrecomilladas y encontradas con frecuencia, como las siguientes:

Con Terminal Server, los 2 GB de espacio de direcciones compartidas se usarán por completo antes de usar 4 GB de RAM.

Esto puede ser cierto en algunos casos. Sin embargo, tiene que supervisar el sistema para saber si se aplican a su sistema en particular o no. En algunos casos, estas instrucciones son conclusiones de entornos específicos de Windows NT 4.0 o Windows 2000 y no se aplican necesariamente a Windows Server 2003. Se han realizado 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 estaban en el kernel se trasladaron a procesos que no son del kernel para reducir la memoria usada en el espacio de direcciones virtuales compartidas.

Supervisión del uso de RAM y memoria virtual

Monitor de rendimiento es la herramienta principal para supervisar el rendimiento del sistema y para identificar la ubicación del cuello de botella. Para iniciar Monitor de rendimiento, haga clic en Inicio, haga clic en Panel de control, en Herramientas administrativasy, a continuación, haga doble clic en Monitor de rendimiento. Este es un resumen de algunos contadores importantes y lo que le dicen:

  • Memoria, bytes confirmados: este contador es una medida de la demanda de memoria virtual.

    Esto muestra cuántos bytes asignaron los procesos y a los que el sistema operativo ha confirmado un marco de página RAM o una ranura de página en el archivo de página (o quizás ambos). A medida que bytes confirmados aumentan más que la RAM disponible, la paginación aumentará y también aumentará el tamaño del archivo de página que se usa. En algún momento, la actividad de paginación comienza a afectar significativamente al rendimiento.

  • Proceso, conjunto de trabajo, _Total: este contador es una medida de la memoria virtual en uso activo .

    Este contador muestra la cantidad de RAM necesaria para que la memoria virtual que se usa para todos los procesos esté en RAM. Este valor siempre es un múltiplo de 4096, que es el tamaño de página que se usa en Windows. A medida que la demanda de memoria virtual aumenta más allá de la RAM disponible, el sistema operativo ajusta la cantidad de memoria virtual de un proceso en su conjunto de trabajo para optimizar el uso de RAM disponible y minimizar la paginación.

  • Archivo de paginación, %pagefile en uso: este contador es una medida de la cantidad del archivo de página que se está usando realmente.

    Use este contador para determinar si el archivo de página es un tamaño adecuado. Si este contador llega a 100, el archivo de página está lleno y las cosas dejarán de funcionar. En función de la volatilidad de la carga de trabajo, probablemente quiera que el archivo de página sea lo suficientemente grande como para que no se use más del 50-075 %. Si se usa gran parte del archivo de página, tener más de uno en discos físicos diferentes puede mejorar el rendimiento.

  • Memoria, páginas/s: este contador es una de las medidas más mal entendidas.

    Un valor alto para este contador no implica necesariamente que el cuello de botella de rendimiento se derive de una escasez de RAM. El sistema operativo usa el sistema de paginación para fines distintos del intercambio de páginas debido al exceso de compromiso de memoria.

  • Memoria, salida de páginas/s: este contador muestra cuántas páginas de memoria virtual se escribieron en el archivo de página para liberar marcos de página RAM para otros fines cada segundo.

    Este es el mejor contador para supervisar si sospecha que la paginación es el cuello de botella de rendimiento. Incluso si bytes confirmados es mayor que la RAM instalada, si la salida de Pages/s es baja o cero la mayor parte del tiempo, no hay ningún problema de rendimiento significativo debido a una RAM insuficiente.

  • Memoria, bytes de caché, memoria, bytes no paginados del grupo, memoria, bytes paginados de grupo, memoria, bytes totales de código del sistema, memoria, bytes totales del controlador del sistema:

    La suma de estos contadores es una medida de cuánto de los 2 GB de la parte compartida del espacio de direcciones virtuales de 4 GB se está usando realmente. Úselos para determinar si el sistema está alcanzando uno de los límites arquitectónicos descritos anteriormente.

  • Memoria, MBytes disponibles: este contador mide cuánta RAM está disponible para satisfacer las demandas de memoria virtual (ya sea nuevas asignaciones o para restaurar una página desde el archivo de página).

    Cuando la RAM está en suministro corto (por ejemplo, Bytes confirmados es mayor que la RAM instalada), el sistema operativo intentará mantener una cierta fracción de RAM instalada disponible para su uso inmediato copiando páginas de memoria virtual que no están en uso activo en el archivo de página. Por lo tanto, este contador no alcanzará cero y no es necesariamente una buena indicación de si el sistema no tiene memoria RAM.

Referencias

Extensiones de ventana de direcciones