¿Por qué la velocidad de eliminación en Windows a menudo es periódica?

12

Solo por interés, ¿cuál es la razón por la cual los tiempos de eliminación son periódicos a menudo? En Windows 8, la ventana de diálogo de eliminación muestra la velocidad de eliminación en un diagrama.

Ventana de diálogo de eliminación de Windows 8

Si no hay razón, por supuesto, esa sería una respuesta también.

danijar
fuente
44
tiene 100,000 archivos en la carpeta, todos son de diferentes tamaños, la medida es Elementos por segundo, por lo que cuanto más pequeños sean los elementos, más rápido se eliminarán.
Ramhound
3
@Ramhound, no parece que esto esté relacionado con diferentes tamaños de archivo. La naturaleza sinusoidal del gráfico es demasiado regular.
GaTechThomas
1
Windows no pone a cero los bloques ocupados al eliminar archivos. Eliminar un archivo grande no debería llevar más tiempo que eliminar uno pequeño. El culpable es más probable la gran cantidad de artículos. ¿Están en muchas subcarpetas? Hay una sobrecarga considerable cuando se trata con muchos archivos (grandes o pequeños), independientemente de si está eliminando, copiando o moviendo.
abstrask
2
Almacenamiento en caché de algún tipo? ¿Un montón de solicitudes de eliminación se vacían en los picos del gráfico?
Jesse Slicer
1
También he visto esto, a veces con olas mucho más grandes.
Moshe Katz

Respuestas:

5

Hay unas pocas razones:

  1. Continuidad de datos: NTFS se implementa donde escribe secuencialmente en un disco, por lo que si edita un archivo, NTFS puede tener que almacenar los cambios en un sector no contiguo en su disco duro. Eso significa que para eliminar un archivo, es posible que deba pasar del sector 2 al sector 100,000 (hipotéticamente, por supuesto) y luego regresar para finalizar el archivo. Luego encuentra el siguiente sector del siguiente archivo para eliminar y nuevamente podría repetir ese proceso.

  2. Tipos de datos: supongamos que está eliminando una carpeta temp, puede contener archivos grandes y archivos pequeños. Algunos de ellos serán rápidos de procesar y otros pueden ser más lentos (ya sea el tamaño o la complejidad de los datos, es decir, cuántos sectores deben procesarse para terminar un "elemento")

  3. @Ramhound mencionó la pieza "elementos por segundo", que parece confirmada por el cuadro de diálogo de eliminación ( Speed: 1.082 items/s). Por lo tanto, eliminar un archivo enorme, un archivo no contiguo o un archivo pequeño juega un papel importante en la cantidad de elementos por segundo.

  4. Priorización de CPU: esto se realiza en ciclos de reloj, por lo que es probable que su CPU esté ejecutando otros procesos durante el ciclo y que esto pueda afectar la velocidad (esto es una conjetura de mi parte)

nerdwaller
fuente
3
Windows / NTFS no pone a cero los bloques ocupados al eliminar archivos. Grande o pequeño, contiguo o no contiguo no importa.
abstrask
@abstrask: no dije que no hiciera nada. Sin embargo, tiene que saltar alrededor del $BitMap(archivo) a cada clúster y marcarlo como de uso gratuito (es decir, "eliminado"). Abrir y editar un archivo (en cualquier nivel) requiere recursos y tener que saltar dentro de él requiere una sobrecarga y puede ralentizarlo por completo. Si el archivo es grande, se tarda más en editar, si el archivo no es contiguo, se tarda un poco más en buscarlo.
nerdwaller
1
Cada grupo está representado por un bit en el archivo $ Bitmap. Suponiendo que el tamaño de la unidad de asignación predeterminada es de 4 KB, la referencia de asignación para un archivo de 100 KB representa aproximadamente 3 bytes en el archivo $ Bitmap. Un archivo grande, digamos 1 GB, ocupa 32 KB en el archivo $ Bitmap. Incluso si $ Bitmap estaba muy fragmentado, el disco duro solo tendría que saltar entre 32 KB / 4 KB / cluster = 8 grupos, para marcar los grupos de archivos de 1 GB para su eliminación. Sí, se deben voltear más bits para eliminar un archivo grande, pero es difícil de medir y definitivamente no causaría las grandes protuberancias visuales que se muestran en la captura de pantalla.
abstrask