El Problema de la Fragmentación

Porqué Saber Esto es Importante
Cuando comienzan los problemas de rendimiento y las aplicaciones se hacen cada vez más lentas, el consejo usual es comprar más memoria RAM de modo que se use menos el archivo swap del disco, luego vienen las soluciones de fuerza fruta como cambiarse a un procesador, tarjeta madre (casi siempre estos dos cambios deben ir juntos) o disco duro más nuevos y rápidos.

La recomendación de desfragmentar el disco tradicionalmente se entendía como una medida marginal para mejorar un poco el rendimiento. Sin embargo las últimas investigaciones han mostrado que una medida tan simple y virtualmente cero costo puede lograr mejoras del rendimiento de un PC sobre el 70% corriendo Windows NT, cosa que difícilmente se alcanzará con el reemplazo de componentes o con la adición de memoria.

Lea este artículo con atención porque habla de algunos hechos poco conocidos en cuanto a los factores que afectan en la práctica al rendimiento de un sistema

 

¿Por que los Archivos se Fragmentan?
El actual problema es causado por una decisión de diseño tomada hace más de 30 años en los primeros sistemas de archivo en disco. 

Estos sistemas en equipos monousuario grababan los archivos en piezas completas en el disco, por ejemplo el sistema operativo RT-11 del computador PDP-11, al ir borrando archivos, solo admitía bloques completos en los espacios que iban quedando. De no caber en ninguno de los bloques disponibles, la grabación del archivo era simplemente rechazada por "disco duro lleno". El problema obvio de este sistema es que el disco duro se "llenaba" aún teniendo la mitad de su capacidad vacía o más, especialmente si el archivo a grabar era lo suficientemente grande.

Al diseñar el equipo multiusuario RSX-11  los ingenieros de DEC se enfrentaron al problema que, con varios usuarios creando y borrando archivos simultáneamente este esquema causaba graves problemas de ineficiencia y los mensajes de "disco duro lleno" se hacían inaceptablemente frecuentes, por ello, para este equipo decidieron cambiar la estrategia del diseño; los archivos se fragmentarían en partes del tamaño de los espacios disponibles y cada fragmento llevaría un encabezado con la información necesaria para reconstruirlo. Así es como nació la fragmentación de los archivos, como una estrategia de utilizar mejor el espacio de los discos en una época en que el tamaño de los archivos grandes era significativo con respecto a la capacidad total de almacenamiento.

Este sistema de almacenamiento fragmentado fue adoptado por el sistema  operativo VMS en los computadores VAX, y en los noventas, los principales diseñadores del OpenVMS fueron reclutados por Microsoft para diseñar el Windows NT. No es sorprendente entonces que siguieran el mismo modelo de fragmentacion, tomando en cuenta que en esos años aún no se desarrollaban los discos duros de varios gigabytes y los problemas de la fragmentación no habían escalado a la importancia que hoy tienen.

Pero este problema no es solo de Windows y de OpenVMS, casi todos los sistemas actuales de archivo siguen el mismo modelo y tienen el mismo problema, incluyendo Mac OS, Unix y Linux., aun cuando los sistemas de archivos más recientes se han diseñado para disminuir la fragmentación, el problema original de diseño persiste. Como el mercado de estos sistemas alternativos es menor también hay menos disponibilidad de desfragmentadores sofisticados para ellos. En muchos casos los administradores de sistema simplemente respaldan todo el disco, lo borran y lo vuelven a grabar cada cierto tiempo, lo que es un trabajo bastante bruto y peligroso por decir lo menos

 

El Impacto de La Fragmentación Sobre el Rendimiento
Hasta hace muy poco tiempo nadie se había preocupado de investigar sistemáticamente este problema. No fue hasta noviembre de 1999 que la NSTI condujo las primeras pruebas independientes de fragmentación en máquinas NT y Windows 2000, que determinaron, por ejemplo, que un computador con NT, Outlook y aplicaciones Excel, los programas se abrían y ejecutaban un 74.4% más rápido luego de la desfragmentación. Un servidor usando Exchange messaging system y SQL 7.0 se ejecutaba un 56.1% más rápido luego de la desfragmentación. Con Windows 2000 los resultados fueron aún más significativos, como se puede chequear en http://www.execsoft.com/diskeeper/IDC-White-Paper.pdf  

 

¿Que Desfragmentador Usar?
Para un equipo personal monousuario el desfragmentador que viene incluido en Windows puede ser suficiente. No ocurre lo mismo al desfragmentar una red con varias particiones de disco donde muchos usuarios crean y borran archivos diariamente, en este caso hay algunos utilitarios para desfragmentación de redes que en su versión de prueba pueden bajarse gratis desde los sitios de los vendedores, estos utilitarios son:

Estos programas además de desfragmentar optimizan la colocación de los archivos, es decir, colocan los ocupados con más frecuencia en un lugar estratégico para tener acceso más rápido: Speed Disk y PerfectDisk los colocan cerca del lugar de reposo del cabezal de lectura, Raxco los coloca al medio del disco donde la distancia media de desplazamiento se minimiza.

También es importante la seguridad de no perder información durante el proceso, en este aspecto  Diskeeper y PerfectDisk siguen las recomendaciones de Microsoft al usar las Windows Kernel Defragmentation API, lo que obliga a reiniciar el equipo después de la desfragmentación Symantec en cambio no usa esta API y emplea device drivers especiales que evitan la necesidad de reiniciar el equipo, lo que podría significar riesgo de perder información

 

Créditos e Información Adicional

Gran parte de este artículo fue escrito a partir de "Defragmenting really speeds up Window NT machines" de Drew Robb, aparecido en la sección "The Practical Engineer" (p.74) de la revsita "Spectrum" de septiembre del 2000 

Más Información al respecto puede encontrarse en:

http://www.excecsoft.com/whats-new/benchmarks.asp

http://symantec.com/sdnt/doc/whitepaper.doc

http://www.raxco.com/New/show_details.cfm?NewsItemID=62&type=5

http://www.execsoft.com/tech-support/NT-articles/article.asp?F=1997072327.htm

http://support.microsoft.com/support