El archivo de paginación y la memoria virtual en Windows XP

El archivo de paginación es un espacio de intercambio utilizado habitualmente por cualquier sistema operativo cuando este se queda sin memoria RAM física. Windows utiliza un espacio en el disco duro para crear este archivo y poder simular la memoria RAM necesaria para poder ejecutar aplicaciones con soltura.
En este artículo damos respuesta a que es el archivo de paginación, para qué se utiliza y lo que es más importante: cómo optimizar su rendimiento

 

La memoria en Windows XP

Windows XP es capaz de direccionar hasta 2^32 direcciones de memoria, es decir, 4294967296 (4GB). Esto lo hace independientemente de la memoria RAM que tengamos instalado (de la cual XP es capaz de gestionar hasta 4GB). Puesto que nuestra memoria RAM puede ser menor que esos 4GB, es necesario tener un espacio para alojar dichas direcciones de memoria, en caso de que fuesen necesarias. Ese espacio extra lo proporcionará el archivo de paginación. Por tanto, vemos cómo en XP tenemos dos tipos de memoria: la propia RAM y un “añadido” procedente del disco duro. Pues bien, esos dos tipos es lo que se conoce como memoria virtual. Aunque parezcan “iguales” no lo son en absoluto. De hecho, el acceso a la memoria RAM es mucho más rápido comparado con el acceso al disco duro.  En Windows XP, el archivo de paginación se llama pagefile.sys. Suele estar localizado en la partición en la que tengamos instalado el sistema operativo, habitualmente C:\, aunque veremos que esto puede cambiarse.

De los 4GB aludidos, Windows XP se guarda 2GB para los procesos privados del sistema operativo, y deja los otros 2GB para el resto de proceso aunque si fuese necesario podría disponer de ellos. Veamos muy brevemente cómo funciona el acceso a la memoria.

Supongamos que la CPU necesita acceder a una determinada dirección de memoria. Pueden suceder dos cosas:

 

  • que la dirección solicitada esté en la RAM, en ese caso de accede y ya está.

 

 

  • que dicha dirección no esté en la RAM. En ese caso, el sistema operativo realiza una interrupción, habitualmente llamada fallo de página (“page fault” en inglés). Solicita al archivo de paginación la página (que suele tener un tamaño de 4KB)  que contenga dicha dirección. Si algo falla, el sistema operativo podría dar una pantalla azul con el mensaje “Invalid Page Fault”.

 

 

Todo esto suele ocurrir de forma invisible y silencio, aunque como hemos visto se pueden producir pantallas azules. Igualmente los puede producir una zona de la RAM llamada área no paginada (“non-paged area”). Son los datos de la RAM que el sistema operativo mantiene siempre ahí, y no los pagina en el disco duro. Una fallo del tipo “Page Fault in non-paged area”, puede indicar un fallo en algún módulo de la RAM, o quizá un código dañado por daños en el disco duro.

Viendo, modificando y configurando el archivo de paginación

Como ya he dicho, el archivo de paginación suele estar en el directorio raíz, C:\ y se llama pagefile.sys. Puesto que es un archivo oculto y de sistema, para verlo hacemos lo siguiente: Inicio > Panel de control > Herramientas > Opciones de carpeta > Ver y ahí:

marcamos “Mostrar todos los archivos y carpetas ocultos”
marcamos “Mostrar el contenido de las carpetas de sistema”
desmarcamos “Ocultar archivos protegidos del sistema operativo (recomendado)”.

Veremos que, en principio, el archivo de paginación suele tener un tamaño variable.
 

¿Puedo eliminarlo?

Directamente, el archivo no puede eliminarse porque está siempre en uso por el sistema. Ni siquiera puede hacerse en modo seguro. No es conveniente eliminar el archivo de paginación por lo que luego se dirá, pero hay veces que podría corromperse (dando las correspondientes pantallas azules) y en ese caso puede ser útil eliminarlo para que el sistema cree uno nuevo. Esto puede hacerse así: click derecho sobre Mi PC > Propiedades > Opciones avanzadas, pinchamos sobre Configuración  en el apartado “Rendimiento” y nos vamos a la pestaña “Opciones avanzadas”. Abajo veremos un botón llamado “Cambiar”. Pinchamos sobre él y en la nueva ventana, elegimos Sin archivo de paginación. A continuación (esto es importante), pinchamos sobre Establecer y luego sobre “Aceptar” y reiniciamos. A continuación eliminamos el archivo, volvemos a la pestaña anterior, ponemos el archivo de paginación como lo teníamos y volvemos a reiniciar.
 

¿Por qué no conviene eliminarlo?

Aun cuando tengamos “suficiente” memoria RAM, como vemos el sistema operativo es capaz de direccionar hasta 4GB de memoria. Si no tuviésemos archivo de paginación y el sistema operativo necesitase más memoria de nuestra RAM, tendría que esperar a liberar de la memoria los datos ya usados o innecesarios para hacer espacio a los nuevos necesitados, con lo que se produciría una pérdida en el rendimiento.

Es más, si quitamos completamente el archivo de paginación, el sistema operativo no podrá crear un archivo de volcado de memoria (dump) en caso de error. Al menos tendríamos que darle un tamaño mínimo al archivo de paginación, por ejemplo, de 200MB o del tamaño de la RAM.
 

¿Dónde debe estar el archivo de paginación?

Esta cuestión es algo discutida ya que parece que la información disponible y la experiencia parece que dicen algo distinto.

El artículo de la KB en el que se alude a la localización del archivo de paginación es este:

http://support.microsoft.com/?kbid=314482

Veamos algunos puntos importantes de él:

Para mejorar el rendimiento, mueva el archivo de paginación a otra partición. Cuando el archivo de paginación está en la partición de inicio, Windows debe realizar las solicitudes de lectura y escritura del disco tanto en la carpeta del sistema como en el archivo de paginación. Cuando el archivo de paginación se mueve a una partición diferente, hay menos enfrentamiento entre las solicitudes de lectura y de escritura.

La experiencia dice que, si tenemos un solo disco duro, el archivo de paginación no debería moverse de su ubicación, es decir, de C:\ Y esto es porque los cabezales del disco duro tendrían que moverse a partes más alejadas del disco, con lo que éste sufriría más. Si tenemos dos discos duros (o más), lo recomendable es situar el archivo de paginación del sistema operativo que esté en un disco duro en el otro disco. Con eso, la mejora en el rendimiento será notable. En cualquier caso, como dice el artículo de la KB anterior, convendría dejar en la partición del sistema operativo un archivo de paginación mínimo para cuestiones de depuración (es decir, tener dos archivos). En presencia de dos archivos de paginación, mediante un algoritmo interno, Windows XP determinará qué archivo de paginación usar.

Cuando se coloca un archivo de paginación en su propia partición, éste no se fragmenta, lo que supone otra ventaja decisiva. Si un archivo de paginación reside en una partición que contiene otros datos, puede que se fragmente al ampliarse para satisfacer la necesidad de memoria virtual adicional. Un archivo de paginación sin fragmentaciones implica un acceso más rápido a la memoria virtual y una mayor probabilidad de capturar el archivo de volcado sin ningún error importante.
 

Esto puede servir para lo anteriormente citado en caso de que tengamos más de un disco duro. En ese caso, sí es conveniente, tal y como se ha dicho, tener el archivo de paginación en una partición propia para evitar la aludida fragmentación.
 

¿Qué tamaño debe tener el archivo de paginación?

También es otra cuestión, si no discutida, por lo menos abierta. Suele ser habitual tenerlo con un tamaño mínimo de 1.5 veces la RAM y máximo de 3 veces la RAM. Es decir, si nuestra RAM es, por ejemplo, de 512MB, el tamaño del archivo de paginación podría ser:

mínimo = 1.5 x 512 = 768MB
máximo = 3 x 512 = 1536 MB

Sin embargo, depende de nuestras necesidades podremos cambiar el tamaño.

Por ejemplo, si dedicamos nuestro ordenador a trabajo con textos (procesadores de textos y cosas sencillas) y a leer el correo electrónico, seguro que vamos a necesitar un tamaño mínimo del archivo. Aquí hay que hacer la salvedad de que si usamos el Cambio rápido de usuario el archivo de paginación debe ser mayor porque tendremos varios usuarios.

Si nos dedicamos a tratamiento de gráficos, obviamente el archivo de paginación tendrá que ser más grande. ¿Cómo establecer dicho tamaño? Se puede partir del tamaño anterior, es decir, entre 1.5 veces la RAM y tres veces, y desde ahí observar las necesidades, sobre todo en cuanto al tamaño máximo. Para ello, pues por ejemplo, acudimos al Administrador de tareas (Ctrl+Alt+Supr) y estudiar el apartado Historial de uso del archivo de página en la pestaña “Rendimiento”. Ahí podemos observar los picos que nos aparezcan cuando estemos trabajando con distintas aplicaciones que consuman distintos recursos. En ese caso, si es necesario podríamos aumentar el tamaño. En cualquier caso, y si vamos a hacer un uso normal de nuestro ordenador, nos basta con un mínimo de 1.5 la RAM y un máximo de 3 veces.

 

El archivo de paginación en el registro de Windows

En el registro de Windows, como no podía ser menos, también encontramos información y datos sobre la memoria virtual. Por ejemplo, Inicio > Ejecutar y escribimos regedit. Navegamos hasta la clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

y pinchamos sobre ella. A la derecha nos aparecerán distintos valores. Por ejemplo., el llamado PagingFiles (de tipo REG_MULTI_SZ) contiene los archivos de paginación que tengamos configurados, sus localizaciones y tamaños máximo y mínimo. También a destacar el valor ClearPageFileAtShutdown. Tiene que ser de tipo REG_DWORD y, si está puesto a “1”, cada vez que apaguemos el ordenador se eliminará el archivo de paginación (y se creará otro en el siguiente reinicio). Esto no es algo que suela hacer falta, e incluso podría hacer que el apagado se demorase más de lo debido. Lo habitual es tenerlo a “0”. Si no se tiene así, click derecho sobre él, elegimos “Modificar” y lo cambiamos.
 

¿Son necesarios liberadores de memoria RAM?

No, en absoluto. Como hemos visto, Windows hace un gran uso de la memoria RAM casi todo el tiempo. Es más, tiende a usar toda la memoria RAM incluso de una forma trivial. Un liberador de memoria hará que Windows no pueda gestionar de esa forma la memoria, con lo que más que liberarla conseguiremos una pérdida de rendimiento.
 

Errores relacionado con la memoria

Algunas veces podemos obtener algún error del tipo Out of memory o bien del tipo El sistema tiene una memoria virtual baja. En ese caso, podemos estar el presencia de dos situaciones: o bien nuestra memoria RAM es insuficiente (recordar que la memoria virtual era la RAM más el archivo de paginación), o bien el archivo de paginación no está bien configurado, con los límites demasiado bajos o no existe. Habría que revisarlo como se ha descrito en las secciones ¿Qué tamaño tiene que tener el archivo de paginación? y ¿Dónde debe estar el archivo de paginación?

Software que afecta a la memoria virtual

Hay ciertos softwares (que digamos no tienen por qué consumir recursos aparentemente) que afectan a la memoria virtual, ya sea “comiéndosela” o desconfigurándola. Una pequeña lista es:

 

 

  • algún Norton Antivirus (reportado en la versión 2004)

 

  • hay casos en que nos aparece el mensaje de memoria virtual baja sólo al apagar el sistema. Si tenemos algo de Symantec instalado, es un error reportado y corregido. Bastaría con bajarse la última versión del archivo “LRsetup.exe” de aquí. 

 

  • “Application Accelerator” de algunas placas madres con chipset Intel. En este caso, puede haber dos situaciones: que no lo tengamos instalado (siempre que nuestra placa madre tenga chipset Intel) y haya que instalarlo o bien, que tengamos una versión antigua del mismo y haya que actualizarla. Puede descargarse de aquí.

 

 Una lista de los chipsets soportados es esta.

 

  • problemas de permisos: si el usuario “System” no tiene Control Total (“Full control”) sobre la partición en la que tengamos el archivo de paginación no podrá crearlo.

 

 

  • como ya he dicho, ese tipo de mensaje no tiene por qué indicar problemas con el archivo de paginación en sí sino con la escasez de memoria RAM.

 

Top