Si cargas un programa, Windows tiene que copiar el ejecutable en la memoria para poder ejecutarlo. Si cierra la aplicación, el programa sigue existiendo en la RAM. Si ejecuta el programa de nuevo, Windows no tendrá que cargar nada desde el disco – todo estará en la RAM.

Toda la RAM utilizada se convierte en una caché del disco duro. Dado que el disco es seis órdenes de magnitud más lento que la RAM, usted quiere que la mayor parte de sus programas y archivos de datos estén en la RAM. Su RAM no utilizada se convierte en un caché. Eso es lo que es la memoria de reserva. Es la memoria que se da de inmediato a cualquier aplicación que lo necesita, pero en su lugar es de espera en caso de que el contenido se necesita:

  • https://i.imgur.com/NQwFGoB.png

Así que ahora mismo en mi equipo tengo 8 GB de memoria que no está haciendo nada más que ser un caché para el disco duro.

Ahora, si un programa necesita algo de memoria, Windows le dará un poco de memoria. Pero antes de que pueda entregar la memoria a un programa, tiene que asegurarse de poner a cero la memoria primero.

Cuestionario del lector: ¿Por qué Windows debe poner a cero la memoria antes de poder dársela a otro proceso?

Windows mantiene algo de memoria que ha sido puesta a cero perezosamente, y está lista para entregarla a una aplicación en cualquier momento. En el Gestor de Recursos, esta memoria lista para funcionar se llama *Memoria libre; puede verla en la captura de pantalla anterior.

También se conoce como lista de páginas libres, porque la memoria ha sido puesta a cero y no está haciendo nada útil en el ordenador:

  • https://i.imgur.com/47xDkzT.png

¿Qué es SuperFetch?

Lo que hace SuperFetch es trabajar con el gestor de memoria para cargar proactiva y perezosamente los datos en la memoria libre para que ya esté en la caché cuando vayas a ejecutarla. SuperFetch sabe qué aplicaciones, juegos, herramientas de desarrollo, que suele cargar, y perezosamente pre-fetch en la memoria RAM en caso de que se necesitan.

Así que cuando voy a cargar WoW en 3 minutos, los 8 GB de texturas del juego ya estará en la memoria RAM. Puedes utilizar una herramienta como RAMMap para ver qué archivos está almacenando actualmente toda la RAM de tu ordenador.

Cualquiera que te diga que desactives SuperFetch es un idiota, no entiende de ordenadores, y está forzando a Windows a ser más lento porque no entiende la diferencia entre:

  • Memoria libre en espera
  • Memoria libre en Zerod

Y esa persona necesita un golpe en la nuca por hacer su ordenador lento intencionadamente.

Las aplicaciones utilizan la memoria; no la RAM

Otra cosa que la mayoría de la gente no entiende es la diferencia entre conjunto comprometido y conjunto de trabajo. Esto es más fácil de entender en la época en que Windows 95 se ejecutaba en 4 MB de memoria.

  • En una máquina monstruosa con 16 MB de RAM
  • puedo tener un programa que ha comprometido 1,5 GB de memoria
  • pero que sólo está utilizando 117 KB de RAM

Eso es porque todo lo que el programa necesita para funcionar puede caber completamente en 117 KB. El resto se ha escrito en el archivo de intercambio, o era una copia de un archivo ya (por ejemplo, puedo asignar un archivo de datos de 1,5 GB en mi espacio de direcciones, y han comprometido 1,5 GB de memoria, mientras que el consumo de RAM no)

Por ejemplo, uno de los gadgets en el Windows Vista/7 Sidebar tenía una fuga de memoria.. Esto significaba que el proceso Sidebar.exe seguía comprometiendo memoria (hasta el límite de 2 GB para un proceso de 32 bits), hasta que el proceso se bloqueaba porque se quedaba sin memoria. Pero Sidebar.exe sólo consumía como 700 KB de RAM, porque toda esa memoria filtrada se escribía en el archivo de intercambio (porque nadie la usaba para nada).

Esta es una razón por la que no se desactiva el archivo de intercambio. Window puede copiar páginas de RAM al disco duro. Si las páginas de RAM no se están utilizando realmente, pueden ser reutilizadas para otras cosas (como una caché de disco), porque la copia de seguridad de esos datos está en el archivo de intercambio. Si sidebar alguna vez pide esa memoria de nuevo (que nunca lo haría, porque se olvidó de ella), Windows puede intercambiar esos contenidos de RAM de nuevo desde el disco duro.

tl;dr: tengo 8.5 GB de memoria libre:

  • 8 GB están haciendo algo útil para que mi máquina sea más rápida
  • 0,5 GB se están desperdiciando al no hacer nada

Quieres que SuperFetch utilice tu memoria – hace que la máquina sea más rápida. No lo apagues.

Esta gente es como mi padre. Cree que sabe lo justo para ser peligroso. Me llamó quejándose de que su máquina con Windows 7 tarda 3 minutos en arrancar. Le digo:

  • Es toda la mierda de antivirus que ejecuta
  • Consigue un SSD; arrancará en 13 segundos

Consigue un SSD, y Windows sigue tardando 3 minutos en arrancar. Le digo que es su mierda de antivirus. Rechaza de plano mis opiniones. Seis meses después reinstala Windows de nuevo, y ahora arranca en 13 segundos.

Desactivar SuperFetch es como desactivar tu archivo de intercambio, o instalar un desdoblador de RAM, o usar un limpiador de registro: te hace parecer un idiota. En persona sonrío y asiento con la cabeza. A tus espaldas hablo mal de ti en reddit.

Lectura extra

Más sobre el tema antes:

  • /r/ProgrammerHumor/comments/68ker6/ultimate_in_garbage_collection/dh071ep/
  • /r/technology/comments/1xbofp/ramdrive_to_improve_performance_and_prolong_ssd/cf9wbmf/
  • /r/programming/comments/4nvimz/john_carmack_on_memory_mapped_gpu_assets/d4818ep/

Actualización – No podría la E/S del disco duro SuperFetch perjudicar mi juego?

Alguien preguntó, yo respondí, pero lo copiaré aquí para que sea visible y para ayudar a difundir la información.

De verdad, ¿podría afectar al rendimiento de los juegos?

Simplemente, no lo hará.

Tu mayor preocupación puede ser que SuperFetch revuelva tu disco duro, leyendo cosas mientras intentas jugar a tu juego. Y toda esta E/S del disco duro perjudicará a las cosas «reales» del disco duro que necesitas para jugar a tu juego.

No lo hará.

Comprueba el Monitor de Recursos, la pestaña Disco. Windows 7 ha añadido una función en la que las aplicaciones pueden indicar que quieren realizar operaciones de E/S en una prioridad «de fondo».

  • Un SSD tiene un tiempo de respuesta de alrededor de 1-2 ms
  • Un HDD de plato giratorio tiene un tiempo de respuesta de alrededor de 10-20 ms

Y así, en el Monitor de recursos, puedes ver cuánto tiempo está tardando en atender la E/S del disco duro. Y en los discos duros giratorios, normalmente verá entre 10 y 30 ms:

  • https://i.imgur.com/m4ogUc5.png

Pero mientras eso ocurre, hay otras operaciones de E/S del disco duro que se ejecutan en prioridad de fondo. Windows se asegurará de que las operaciones de E/S en segundo plano nunca interfieran con la E/S normal. La E/S en segundo plano puede ser castigada tanto que puede tomar 500-1000ms para atender una lectura en segundo plano:

  • https://i.imgur.com/3SATs9M.png

Así que tenemos:

Tiempo de lectura-respuestaSSD1 msHDD10 msPrioridad de E/S en segundo plano500 ms

Es una pena que más desarrolladores no conozcan la prioridad de E/S en segundo plano, te estoy mirando a ti:

  • Descargador de Steam
  • uTorrent
  • Battle.net updater
  • Windows Update(!!)

Porque realmente ayuda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.