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

Se aplica a:   Windows 7 Service Pack 1, Windows Server 2012 R2
Número 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. Las direcciones de memoria virtual se traducen automáticamente a direcciones reales (RAM) por el hardware. Solo las partes principales del kernel del sistema operativo omiten esta traducción de direcciones y usan direcciones de memoria real 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 que se instala en el sistema.

Procesos y espacios de direcciones

Todos los procesos (por ejemplo, ejecutables de aplicaciones) que se ejecutan en versiones de 32 bits de Windows tienen asignadas direcciones de memoria virtual (un espacio de direcciones virtual), 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 Windows predeterminada, 2 gigabytes (GB) de este espacio de direcciones virtuales se designan 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) solo usan una fracción de los 2 GB de espacio de direcciones privados. 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 virtual (que permanece en 4 GB), sino solo el volumen de RAM real que puede abordar el procesador.

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 se controla automáticamente y de forma transparente por 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) se puede asociar a cualquier página de RAM física (dirección de 36 bits).

En la siguiente lista se describe la cantidad de RAM que admiten Windows versiones y ediciones anteriores (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

Pagefile

La memoria RAM es un recurso limitado, mientras que para la mayoría de los propósitos prácticos, la memoria virtual es ilimitada. Puede haber muchos procesos y cada proceso tiene sus propios 2 GB de espacio de direcciones virtuales privados. Cuando la memoria que usan todos los procesos existentes supera la RAM disponible, el sistema operativo mueve las páginas (partes 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 Windows, estas páginas paginadas se almacenan en uno o más 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 Avanzadas, haga clic en Rendimiento y, a continuación, haga clic en el Configuración página).

Los usuarios preguntan con frecuencia qué tamaño debo hacer el archivo de página. No hay una sola respuesta 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 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 desea tener suficiente RAM para que nunca haya escasez y para que no se utilice el archivo de página. En estos sistemas, puede que no sirva para mantener un archivo de página grande. Por otra parte, si el espacio en disco es abundante, el mantenimiento de un archivo de página grande (por ejemplo, 1,5 veces la RAM instalada) no causa ningún problema, y esto también elimina la necesidad de preocuparse por el tamaño 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 algún recurso tiene un suministro muy corto y se ha convertido en un cuello de botella.

En algún momento, no se puede aumentar el recurso que está en suministro corto. Esto significa que se ha alcanzado un límite de arquitectura. Algunos límites de arquitectura notificados con Windows incluyen los siguientes:

  • 2 GB de espacio de direcciones virtuales compartido 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 de grupo paginado (Windows Server 2003 y versiones anteriores)
  • 256 MB de almacenamiento de grupo sin páginas (Windows Server 2003 y versiones anteriores)

Esto se aplica a Windows Server 2003 específicamente, pero esto 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 de arquitectura. Los límites de la memoria de usuario y kernel (números 1 y 2 aquí) son los mismos, pero los recursos del kernel como PTEs y varios grupos de memoria son dinámicos. Esta nueva funcionalidad habilita la memoria paginada y no paginada. Esto también permite que las PTE y el grupo de sesiones crezcan más allá de los límites mencionados anteriormente, hasta el punto en que se agotó todo el kernel.

Instrucciones encontradas y entrecomilladas con frecuencia, como las siguientes:

Con Terminal Server, los 2 GB de espacio de direcciones compartidos se usarán completamente antes de usar 4 GB de RAM.

Esto puede ser cierto en algunos casos. Sin embargo, debe 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 realizaron cambios significativos en Windows Server 2003 para reducir la probabilidad de que estos límites de arquitectura se alcancen en la práctica. Por ejemplo, algunos procesos que estaban en el kernel se movieron a procesos que no son kernel para reducir la memoria usada en el espacio de direcciones virtuales compartido.

Supervisión del uso de memoria RAM y virtual

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, 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 se asignaron por 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 los bytes confirmados crezcan más que la RAM disponible, la paginación aumentará y el tamaño del archivo de página que se está utilizando también aumentará. En algún momento, la actividad de paginación empieza 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 4.096, que es el tamaño de página que se usa en Windows. A medida que aumenta la demanda de memoria virtual 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á utilizando realmente.

    Use este contador para determinar si el archivo de página tiene un tamaño adecuado. Si este contador alcanza 100, el archivo de página está lleno y las cosas dejarán de funcionar. Dependiendo de la inestabilidad de la carga de trabajo, probablemente desee que el archivo de página sea lo suficientemente grande para que no se utilice más del 50-075 por ciento. 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 incomprendidas.

    Un valor alto para este contador no implica necesariamente que el cuello de botella de rendimiento se deba a una escasez de RAM. El sistema operativo usa el sistema de paginación para fines distintos de intercambiar 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 el resultado de páginas/s es bajo o cero la mayor parte del tiempo, no hay ningún problema de rendimiento significativo por la ram insuficiente.

  • Memoria, Bytes de caché, Memoria, Bytes no paginados del grupo, Memoria, Bytes paginados del 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á utilizando realmente. Úsese estos elementos para determinar si el sistema está alcanzando uno de los límites de arquitectura analizados anteriormente.

  • Memoria, MBytes disponibles: este contador mide la cantidad de RAM 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 es corta (por ejemplo, Bytes confirmados es mayor que la RAM instalada), el sistema operativo intentará mantener una determinada 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