SuperFetch (II de IV)
SuperFetch no es una tecnología que parta de cero, sino que complementa a otra ya existente en Windows XP llamada Prefetch y que en español vendría a significar "precarga".
Prefetch es un término usado en diferentes ámbitos de la informática, por ejemplo se habla de prefetch refiriéndose a las capacidades de los microprocesadores de cargar anticipadamente datos en la cache L1 durante la ejecución de una instrucción con el fin de acelerar al ejecución de aplicaciones, en el ámbito de los navegadores WEB se conoce como Prefetch (concretamente como Link Prefetching) a la capacidad de estos de cargar en caché información de las páginas WEB enlazadas cuando el navegador esta inactivo con el fin de acelerar la navegación (pudiendo realizar esto de manera agresiva o solo cuando le es indicado en el código html de link), en programación se hace referencia a este termino apuntando a la precarga de información en memoria antes de que sea necesaria con el fin de ganar tiempo de ejecución y por último en sistemas hablamos de Prefetch como un sistema de gestión de memoria usado en varios sistemas operativos (también esta disponible en Linux) que permite optimizar notablemente la carga de aplicaciones y servicios especialmente al arranque del equipo precargando la información de estos en memoria y reduciendo por tanto el tiempo de inicio.
Windows XP y Vista guardan la información de traza de Prefetch en la carpeta %Windir%\prefetch en unos archivos con extensión .pf cuyo nombre esta compuesto por el nombre de la aplicación, un guión y un hash en hexadecimal de la ubicación de dicho archivo, como por ejemplo "NOTEPAD.EXE-2F2D61E1.pf" ("NTOSBOOT-B00DFAAD.pf" en el caso del archivo de arranque) y cuyo contenido no es más que una serie de referencias a los ficheros y directorios que leen las aplicaciones al iniciar, así como sus metadatos. Para crear estos archivos de traza el sistema de gestión memoria comprueba las consultas a las entradas de la MFT (Master File Table) del sistema de archivos NTFS sabiendo de este modo qué archivos son los que se intentan cargar y de esta manera poder precargarlos previamente a la próxima apertura de la aplicación. Así mismo Prefetch se combina con el programador de tareas para realizar una defragmentación y colocación de manera contigua y según el orden de uso de aquellos archivos que vayan a ser utilizados al iniciar las aplicaciones o durante el arranque del equipo; estos ficheros a colocar de manera contigua vienen señalados en el archivo layout.ini de la propia carpeta Prefetch realizándose la labor de defragmentación con una periodicidad de 3 días en momentos de baja actividad del equipo.

Sobre la carpeta Prefetch y sus propiedades existen diferentes leyendas urbanas en forma de trucos para mejorar el rendimiento de Windows, podéis echar un vistazo a algunas de ellas en el siguiente enlace:
http://mywebpages.comcast.net/SupportCD/XPMyths.html#Optimization
Este sistema de Prefeth de XP combinado con SuperFetch es el usado por Windows Vista si disponemos de menos de 700MB de memoria RAM, si disponemos de una mayor cantidad de memoria se continua usando el sistema Prefetch y SuperFetch pero añadiendo a le ecuación el sistema ReadyBoot (no confundir con ReadyBoost).
ReadyBoot es otro añadido al rendimiento de Windows vista y es el sistema utilizado para reducir el tiempo de arranque en caso de disponer de más de 700MB de RAM. ReadyBoot guarda su información en una carpeta con ese mismo nombre dentro del directorio Prefetch de Windows Vista y realiza un seguimiento de los 5 últimos arranques cuyos archivos de traza (de extensión .fx) guarda en el directorio anteriormente citado con el objetivo de usarlos posteriormente para generar un plan de arranque optimizado. Los parámetros de configuración de ReadyBoot los podemos encontrar en la siguiente clave de registro:
HKLM\System\CurrentControlSet\Services\Ecache\Parameters
Bueno, a toda esta ecuación sobre precargas en memoria habría que añadir la inclusión en la carpeta prefetch de archivos de traza de aplicaciones enteras en función del comportamiento del usuario, es decir: SuperFetch.
SuperFetch es un servicio disponible en todas las versiones de Windows Vista y hace un uso intensivo de la memoria partiendo del concepto de que es muy común hoy en día trabajar con gran cantidad de memoria libre en los equipos modernos, para resolver este desaprovechamiento de memoria Windows Vista carga en esta toda aquella información que probablemente utilizará el usuario, para ello mantiene un historial de su comportamiento por días de la semana e incluso por horas de tal manera que cuando desee abrir alguna aplicación concreta esta se encuentre ya cargada en memoria y el proceso de apertura sea mucho más rápido, aun que como es obvio para uso efectivo de SuperFetch se requiere memoria libre suficiente (de ahí las recomendación de 1GB de RAM). Superfetch está completamente integrado con Prefetch y con el layout.ini, interviene en los procesos de suspensión e hibernación y es un proceso de baja prioridad y consumo que no repercute negativamente en el rendimiento del equipo sino que lo mejora gracias a la innovadora gestión de memoria que realiza. Los archivos de traza de Superfetch se guardan como Ag*.db en el directorio Prefetch.
Superfetch también esta relacionada con la gestión de la memoria virtual relacionándose y gestionando otras dos tecnologías referentes en Windows Vista: el READY BOOST y el READY DRIVE que describiré en mi próximo post.
Publicado:
10/2/2007 18:10
por
Juan Francisco Arrabé Murillo
con
45 comment(s)