lunes, febrero 05, 2007

Sobre el desfragmentador de Windows Vista

Reproduzco una consulta que recibí de un usuario:

Daniel, el desfragmentador de Windows Vista pienso que es bastante malo, ¿qué han hecho los chicos de MS? No hay barra de progreso y, lo que es más importante, si analizo una partición desfragmentada desde Vista aún sigo viendo mucha fragmentación. ¿Cómo lo han empeorado tanto?

Aunque le parezca lo contrario, el desfragmentador incluido en Windows Vista es mucho mejor que el de su predecesor. En este artículo discutiré cómo funciona internamente, centrándome en las quejas más frecuentes que he ido recibiendo.

¿Por qué no hay barra de progreso al desfragmentar?

Una barra de progreso en un proceso de desfragmentación es una incorrección. Todo proceso de desfragmentación del espacio en disco es un proceso en el cual se siguen múltiples fases: una para desfragmentar archivos, otra para consolidar el espacio libre en disco, etc. Cada una de estas fases puede durar un tiempo variable, por lo que la barra de progreso del desfragmentador de Windows XP carece de sentido práctico.

Los resultados del desfragmentador difieren de los del de XP

En efecto, el desfragmentador de Windows Vista utiliza un algoritmo distinto del de Windows XP. Es mucho más eficiente. El algoritmo empleado en Windows XP podría simplificarse del modo siguiente: Todo archivo del disco que esté en, al menos, dos posiciones no contiguas del disco se marca como "fragmentado". El desfragmentador obtendrá ese dato y unirá todas las partes para, posteriormente, compactar el espacio libre en disco. Esto supone dos puntos negativos:
  • Se requiere de un cierto espacio libre en disco para poder realizar la desfragmentación. En el caso de Windows XP este espacio mínimo es de un 15%. En Windows Vista no hay espacio libre mínimo necesario.
  • Si los fragmentos son "demasiado grandes" el tiempo empleado en mover los bloques es superior a la ganancia en rendimiento obtenida.
Quiero precisar sobre el último punto: En un volumen NTFS, el salto de un fragmento a otro consume un bajísimo porcentaje de tiempo en comparación con el tiempo que se tarda en leer un bloque no fragmentado. Partiendo de bloques de 64 MB o más, no merece la pena mantenerlos contiguos, el "esfuerzo" necesario para ello no compensa la ganancia de rendimiento. Debido a esta optimización, el desfragmentador de Vista reduce el consumo de CPU de manera considerable.

El desfragmentador hace uso de la característica "Low-priority I/Os" de Windows Vista

Una de las nuevas posibilidades del núcleo de Windows Vista que más me gusta son las "low-priority I/Os". Así, un desarrollador, que antes podía ejecutar procesos con baja prioridad, ahora puede realizar entradas/salidas igualmente con baja prioridad. En Windows Vista el servicio de indizado, Windows Defender, las aplicaciones que se inician con Windows, y el desfragmentador (entre otros) hacen uso de entradas/salidas de baja prioridad.

El objetivo de Microsoft es que el usuario pueda desfragmentar el disco mientras utiliza cómodamente el PC. Todo el proceso de desfragmentación se hace empleando entradas/salidas de baja prioridad en el momento que se detecte actividad en el sistema. La única excepción es la fase en la que se desfragmenta la MFT del disco. Puede hacer la prueba, inicie el proceso de desfragmentación, deje el sistema sin usarlo y observe el consumo de recursos. Efectivamente es alto, pero ahora realice tareas en el sistema, verá como el consumo disminuye (aumentará lógicamente el tiempo de desfragmentado).

Hay una tarea programada que desfragmenta el disco

Windows Vista incorpora una tarea programada para desfragmentar el disco. Puede acceder a ella desde Administración de equipos, Herramientas del sistema, Programador de tareas, Biblioteca del Programador de tareas, Microsoft, Windows, Defrag. Esta tarea sólo se realiza cuando el sistema está inactivo, por lo que si despliega la pestaña Historial quizá observe que la tarea se ha iniciado, detenido e iniciado de nuevo un sinfín de veces. Es normal, se detectó actividad en el equipo y la tarea se detuvo, para continuarse tan pronto como el sistema vuelva a estar inactivo.

Así pues, ya ve que el desfragmentador incluido en Windows Vista es mucho más eficiente y menos intrusivo que el de Windows XP, a pesar de que la interfaz gráfica sea demasiado "simple" y esto pueda confundir a los usuarios.

Una última optimización del desfragmentador de Windows Vista que no quiero dejar sin comentar tiene que ver con el almacén de copias sombra ("shadow copies"): El nuevo algoritmo de desfragmentación está diseñado del tal forma que se reduce el número de operaciones copy-on-write en el disco. Si esto no fuera así, el almacén de copias sombra y puntos de restauración de Windows Vista vería acelerado su llenado, perdiéndose por tanto el contenido más antiguo del mismo.

17 comentarios:

Anónimo dijo...

?Que dice sobre la falta de opción de la unidad de disco a ser defragmentada?
Por favor, enviame una respuesta.

Anónimo dijo...

(Sobre la Desfragmentacion en Vista) ¿Por que despues de desgrafmentar tengo menos espacio libre? ¿Como puedo desfragmentar y no perder esta espacio que en algunos casos es bastante?

n0y dijo...

¿Como, que todavía hace falta un programa de desfragmentación en pleno siglo XXI? Pensé que MS solucionaría el tema en esta versión.

No es por nada, pero el añadir un programa para desfragmentar, sigue siendo una solución bastante chapucera.

En un buen SO no tiene por que haber fragmentación.... (ni virus, ni DRM...)

En fin, que cada cual cave su fosa...

Anónimo dijo...

"Se requiere de un cierto espacio libre en disco para poder realizar la desfragmentación. En el caso de Windows XP este espacio mínimo es de un 15%. En Windows Vista no hay espacio libre mínimo necesario."

Correcto pero olvidas que se vale del el archivo de paginacion para realizar esa tarea.

Otra cuestión es olvidar que por defecto al menos en las versiones Home de vista

Anónimo dijo...

la desfragmentacion viene programada en segundo plano cosa que el usuario no sabe y he oido más de una queja de usuarios a los que se les cuelgan juegos etc... mientras este prodigio del bajo consumo corre en segundo plano.
Aparte ya que Vista realiza estimaciones de tiempo para cualquier copia de archivos por ínfima que sea, no entiendo como no pone un mísero contador de tiempo aunque sea inexacto o poco aproximado, para que el usuario se haga una idea de lo que tarda el desfragamentador.

En contra de lo que dice n0y creo q es necesaria la desfrag. pero si es cierto y como administrador de linux/unix lo certifico que estos gestionan mejor el espacio en disco, al menos con ext3 y reiser.

Sin embargo vista usa NTFS 3.1 que nadie lo olvide, el mismo que XP con las limitaciones que eso supone.

Esperemos arreglen todo esto con el service pack 1 en breve.

Guerritas dijo...

es cierto, no hay opción de la unidad a desfragmentar, tengo un disco duro externo, cosa muy popular hoy en dia y no tengo como desfragmentarlo!

soluciones? alguien?

Unknown dijo...

es cierto q el desfragmentador de vista es malo,y por si ya se estaba enojando, leera la leyenda "esta operacion puede tardar VARIAS HORAS"
(o algo asi). sin duda hay muchos desfrag gratiutos mejores q el q trae por defecto windows.
uno muy liviano es auslogics disk defrag

n0y dijo...

Me parece increible!

De verdad que en Windoz todavia hay que desfragmentar el disco?
Chicos, pagar cientos de euros por esto es una ESTAFA.

Mi equipo es seguro, sin virus, no se cuelga NUNCA, no tengo ningun programa pirateado (y tengo todo lo que necesito, y más), nunca tengo que reiniciar después de instalar un programa, es raro que llegue a usar más de 400 Mb de RAM, y además, mi disco NUNCA se fragmenta ni se fragmentará (porque este problema se solucionó en los 90)... y todo ello gratis.

Anónimo dijo...

un favor, defragmente mi lap con windows vista, para cuando termino ya tenia 15 gb menos, y cada que defragmento va perdiendo mas, que paso ahi o como hago para recuperar ese espacio

Anónimo dijo...

tengo windows vista, y puse a desfragmentar mi disco a las 5 am. y es la 1 pm!!! teniendo en cuenta que ayer le quite la opcion de desfragmentarse automaticamente... es normal que se tarde tanto?! digo... lleva mas de 7 horas...
? y como dices que jala eso de que yo puedo usar mi pc mientras se desfragmenta? hay alguna desventaja?

JC dijo...

Prefiero usar Linux y no tener que preocuparme por desfragmentar ni demás chorradas.

Anónimo dijo...

Buen artículo :)

Anónimo dijo...

a mi me pasa lo mismo que algunos comentan pierdo gigas del DD cuando desfragmento...como puedo recuperarlos??? att lizp18@hotmail.com

Anónimo dijo...

Contrariamente a lo que mencionan varios usuarios aquí, Linux si desfragmenta los discos duros, y también lo hace en segundo plano. Sólo que ellos no lo llaman desfragmentar, pero ordenar los archivos de acuerdo a un algoritmo al momento de crearlos y distribuirlos para su eficiente funcionamiento no es desfragmentar no sé que puede ser. El procedimiento es muy bueno y no se siente prácticamente, pero cuando el disco duro empieza a sobrepasar el 80% de su espacio entonces sí que puede notarse un bajón en el rendimiento.
Lamentablemente no tengo el artículo a mano, donde hacía una excelente explicación de las diferencias entre un procedimiento de desfragmentación en Linux y Windows, pero yo lo encontré en Google, busquen con las palabras "Linux" "desfragmentar" y seguramente lo encontrarán.

Anónimo dijo...

POR FAVOR! Alguien podría decirnos a los varios que preguntamos lo mismos, porque al desfragmentar se pierden gigas y como recuperarlos!!

En mi caso interrumpi la desfragmentación porque ya me habia comido 10 gigas!

help
saludos
Iris

Victoria Ct dijo...

como que ya habia visto este articulo en alguna otra pagina y dejenme decir que es exactamente igual, no se quien se lo copio a quien o si son del mismo autor pero pues er raro.

Mirragemelkyr dijo...

Quiten los puntos de restauración del sistema... eso quita... las cuestiones de las gigas perdidas...