¿Por qué la velocidad de mi unidad flash disminuye cuando copio?

27

Después de unos minutos de copia, se vuelve cada vez más lento. ¿Por qué?

Por ejemplo, comienza con 20 MByte / seg, y cuando termina con él, es @ 10 MByte / s.

Varios archivos, grandes, pequeños, etc.

ACTUALIZACIÓN: la pregunta se refiere a varios sistemas operativos, por lo que es una "pregunta general"

LanceBaynes
fuente
¿Cuánto está copiando versus cuánta memoria libre tiene en su computadora?
KCotreau
PC -> unidad USB-FLASH: varios cientos de GBytes gratis -> pocos GBytes gratis
LanceBaynes
1
Sospecho que tiene archivos almacenados en la memoria caché al principio, por lo que se transfieren rápidamente, y luego, una vez que comienzan a moverse del disco duro, se ralentiza. Sin embargo, no puedo estar seguro en su caso.
KCotreau
¿Me estás recomendando que use el comando "sincronizar" con más frecuencia?
LanceBaynes
No entiendo lo que quieres decir con el comando de sincronización. No diste contexto a la pregunta. Ni siquiera estoy seguro de qué sistema operativo.
KCotreau

Respuestas:

25

Este comportamiento no es específico de su unidad flash, también puede verlo con los discos duros. Tiene que ver con el mecanismo de almacenamiento en caché que la mayoría de los sistemas operativos y discos emplean para acelerar las pequeñas escrituras.

Los 20 mb / s que ves son los datos que se escriben en la memoria caché del disco (generalmente memoria rápida pero pequeña). Una vez que este caché está lleno, debe volcarse al disco, y ahora el disco más lento lo está obstruyendo.

Ejemplo 1: El efecto es realmente pronunciado cuando tiene un controlador con una memoria caché grande (como un buen controlador RAID5) donde ~ 500 mb de datos se pueden almacenar en caché rápidamente antes de que se descarguen en el disco.

Ejemplo 2: puede ver el caché en reproducción si extrae la unidad flash al mismo tiempo que la copia del archivo "terminó". En este momento, su archivo se divide entre el disco y el caché, por lo que la copia está "terminada" en lo que respecta al sistema operativo, pero el controlador de disco aún necesita escribir lo que queda en el caché en el disco. Si vuelve a colocar la unidad flash e inspecciona el archivo, verá que no está todo allí.

Descargo de responsabilidad: estos ejemplos no funcionarán si no tiene habilitado el almacenamiento en caché de escritura en su sistema operativo / en el disco.

Además, si no se trata del almacenamiento en caché de disco en el trabajo, es probable que lo que esté viendo sea un efecto de fragmentación. A medida que el disco se llena cada vez más, hay menos espacio libre contiguo disponible y el sistema de archivos tiene que trabajar más para encontrar lugares para colocar sus archivos.

ta.speot.is
fuente
También tenga en cuenta que es una unidad flash. Su hardware nunca fue optimizado para la velocidad, sino más bien la asequibilidad.
surfasb
No creo que eso explique por qué el rendimiento disminuiría durante las copias de archivos largos. Más bien el rendimiento disminuiría durante la vida útil del disco, ¿sí?
ta.speot.is
Tiene mucho sentido Están optimizados para velocidades de ráfaga, no para operaciones sostenidas. Piense en el tamaño promedio de los archivos que se cargan en unidades flash. ¿Optimizarías para una transferencia de archivos de 30 segundos u optimizarías para una transferencia de 2 segundos? Agregue eso a sus dos ejemplos, y esto explica mucho.
surfasb
Es como cuando intentas meter a dos personas por una puerta promedio a la vez. Al principio, puedes calcular. Wow, pasé de cero personas por esa puerta a dos a la vez. Mi velocidad es genial Luego, la línea se alarga y su muestreo mejora y finalmente se da cuenta de que una muestra pequeña = mala matemática. . .
surfasb
@ ta.speot.is Supongo que este caché de disco que mencionaste es manejado por el sistema operativo en el disco duro y es diferente del caché de hardware que los discos duros tienen internamente, ¿verdad?
sep
1

Si bien el almacenamiento en caché causa algo de esto, no es el único factor. Si el almacenamiento en caché fuera el único factor, entonces esperaríamos que la velocidad de escritura caiga rápidamente de varios cientos de MB / s a ​​la velocidad de escritura real de la unidad muy rápidamente, y permanezca allí durante el resto de la escritura. Sin embargo, esto no es lo que he observado al realizar transferencias grandes desde y hacia el disco (por ejemplo, grabar imágenes de arranque). En cambio, lo que observo es que la velocidad disminuye gradualmente a lo largo de toda la operación.

Esta desaceleración es causada por la remanencia de datos en los chips flash utilizados para almacenar los datos, lo que requiere que algunos de los bloques se escriban en más de una vez.

Dentro de un chip flash, hay un bloque de datos en el que se puede escribir. Al escribir, solo hay dos cosas que la computadora puede hacer: puede borrar un bloque completo o cambiar algunos (o todos) los bits de un bloque de 0 a 1.

Sin embargo, algunos de esos bloques son mejores que otros, especialmente en unidades flash de menor calidad, y como resultado al escribir nuevos datos en él, algunos de los bits a veces pueden volver a 0 por sí mismos justo después de ser escritos, y no No cambies. Por lo tanto, al escribir en un bloque, el sistema operativo debe verificar para asegurarse de que todos los datos se escribieron correctamente, y si no fue así, debe rehacer el bloque escribiendo los mismos datos en el mismo bloque dos o tres veces hasta que los datos se peguen.

Entonces, cuando su computadora está escribiendo un montón de datos en la unidad flash, aquí hay una explicación (no completamente precisa, pero lo suficientemente buena) de cómo lo hace:

  1. Tome el primer conjunto de bloques para escribir y escríbalos todos.
  2. Lea todos los bloques que acabamos de escribir y haga una lista de los que no coinciden.
  3. Escriba el siguiente conjunto de bloques, junto con los que no se escribieron correctamente la última vez.
  4. Repita 2-3 hasta que todos los bloques se hayan escrito correctamente.

Cuando la computadora escribe en el disco, informa la velocidad a la que escribe bloques en el disco por primera vez. Como también tendrá que reescribir bloques anteriores al mismo tiempo, el rendimiento total que se puede usar para bloques vírgenes disminuye a medida que aumenta el número de reescrituras que también deben suceder. Por lo tanto, la velocidad de escritura aparente disminuye con el tiempo.

AJMansfield
fuente
Estoy escribiendo un archivo 12 Gig 7zip en una nueva unidad flash USB 3.0 formateada como NTFS. Iba a unos 100 MB / s durante el primer minuto, luego bajó a 25ish MB / s durante aproximadamente un minuto, luego bajó a 11 más o menos durante aproximadamente 10 minutos. No fue una pendiente descendente gradual, fueron 3 mesetas distintas.
Eric
Estaba copiando el archivo de mi vieja computadora portátil i7 con 16 Gigas de RAM. Copiar este mismo archivo 7zip de la misma unidad de memoria en mi nueva computadora portátil Xeon con 32 Gigas de RAM tomó 2 minutos y no hubo disminución de velocidad.
Eric
0

Cuando el archivo se escribe en una unidad, ya sea una unidad flash USB o un disco duro, los datos NO se leen / NUNCA se leen para ver si coinciden. Eso tomaría para siempre. El hardware realiza la verificación de la escritura (verificación de redundancia cíclica) y, si se produce un error, se vuelve a publicar en la aplicación desde que el hardware detectó un error. El bloqueo que ocurre y se ralentiza (incluso hasta una pausa) es causado por la escritura de la CPU más rápido de lo que el dispositivo puede manejarlo. No encontrará que esto suceda en los discos duros internos. Nunca verá lo que realmente está sucediendo en un sistema operativo Windows, pero en Linux puede ver que la CPU se detiene hasta que el hardware USB dice OK para continuar

stevedonato
fuente
La diferencia en las velocidades de escritura de diferentes dispositivos de almacenamiento puede ser extrema; por ejemplo, compare la velocidad de escritura de una tarjeta SD antigua con la velocidad de escritura de una SSD SATA III.
karel
3
Abstenerse de insultos personales. Si bien su publicación puede ser correcta, debe editarla para cumplir con los estándares de nuestra comunidad.
Ben N