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

Versión original del producto:   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) mediante 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 que requieren 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 aplicación) que se ejecutan en versiones de 32 bits de Windows se les asignan 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 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 Lector de Acrobat) 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 de 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 la controla automáticamente y de forma transparente el hardware del equipo de acuerdo con 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 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

Pagefile

La 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 privadas. Cuando la memoria que usan todos los procesos existentes supera la RAM disponible, el sistema operativo mueve las páginas (fragmentos 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 más archivos (Pagefile.sys) en la raíz de una partición. Puede haber un archivo de este tipo 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, en Rendimiento y, a continuación, en el botón Configuración).

Con frecuencia, los usuarios preguntan ¿en qué tamaño debo crear el archivo de paginación? No hay una única 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 se desea tener suficiente RAM para que nunca haya una escasez y para que no se utilice el archivo de paginación. En estos sistemas, puede no servir para mantener un archivo de paginación grande. Por otro lado, si el espacio en disco es amplio, el mantenimiento de un archivo de paginación 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 de 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 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 de los límites de arquitectura que se notifican con frecuencia en Windows son 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ágina (Windows Server 2003 y versiones anteriores)

Esto se aplica específicamente a Windows Server 2003, pero esto 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 de arquitectura. Los límites de memoria de usuario y kernel (números 1 y 2 aquí) son los mismos, pero los recursos de kernel, como las PTE y varios grupos de memoria, son dinámicos. Esta nueva funcionalidad permite 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 que se trataron anteriormente, hasta el punto en que todo el kernel está agotado.

Instrucciones con frecuencia encontradas y entrecomilladas, como las siguientes:

Con terminal Server, los 2 GB de espacio de direcciones compartido 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 afirmaciones 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 arquitectónicos 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 virtual compartido.

Supervisión del uso de memoria RAM y memoria virtual

El 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 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 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 paginación (o quizás ambos). A medida que los bytes confirmados crecen más que la RAM disponible, la paginación aumentará y también aumentará el tamaño del archivo de paginación que se está utilizando. 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 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, %archivo de paginación en uso: este contador es una medida de la cantidad del archivo de paginación que se está utilizando realmente.

    Use este contador para determinar si el archivo de paginación tiene un tamaño adecuado. Si este contador alcanza 100, el archivo de paginación está lleno y las cosas dejarán de funcionar. Según la inestabilidad de la carga de trabajo, probablemente desee que el archivo de paginación sea lo suficientemente grande como para que no se utilice más del 50-075 por ciento. Si se usa gran parte del archivo de paginación, tener más de uno en discos físicos diferentes, puede mejorar el rendimiento.

  • Memoria, páginas/seg: 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 falta de RAM. El sistema operativo usa el sistema de paginación para otros fines que no son el intercambio de páginas debido al exceso de compromiso de la memoria.

  • Memoria, resultados de páginas/s: este contador muestra cuántas páginas de memoria virtual se escribieron en el archivo de paginación 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 su cuello de botella de rendimiento. Incluso si los bytes confirmados son mayores que la RAM instalada, si la salida de páginas/s es baja o cero la mayor parte del tiempo, no hay ningún problema de rendimiento significativo de la memoria RAM insuficiente.

  • Memoria, bytes de caché, memoria, bytes no paginados del grupo, memoria, bytes paginados del grupo, memoria, bytes totales del 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 virtual de 4 GB se está utilizando realmente. Úse estos para determinar si el sistema está alcanzando uno de los límites de arquitectura que se trataron 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 paginación).

    Cuando la RAM es breve (por ejemplo, Bytes confirmados es mayor que la RAM instalada), el sistema operativo intentará mantener una fracción determinada de RAM instalada disponible para su uso inmediato copiando las páginas de memoria virtual que no están en uso activo en el archivo de paginación. 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