¿Por qué copiar en mi unidad USB es tan lento en Linux (y más rápido en Windows)?
Motivo 1. El almacenamiento en caché de archivos puede hacer que las escrituras parezcan más lentas o más rápidas
El problema que parece ver en la interfaz gráfica de usuario es que la barra de progreso llega al 90% casi instantáneamente, se completa al 100% un poco más lento y luego se cuelga allí durante 10 minutos.
Una cosa que debe comprender es el almacenamiento en caché de archivos. Linux (y Windows) usará RAM, por lo demás "vacía", para almacenar en caché las operaciones de lectura / escritura y hacerlas más rápidas en accesos posteriores. El almacenamiento en caché de las operaciones de copia en dispositivos lentos da como resultado el comportamiento que ve: la "finalización rápida" en realidad está escribiendo en la memoria caché, y luego se ralentiza y se detiene porque el enjuague real de los datos en la memoria caché (sincronización) al dispositivo lento es Tomando mucho tiempo. Si aborta en ese punto, los datos están dañados (como notó) ya que la sincronización nunca terminó.
Dicha copia en Windows puede parecer más rápida (incluidas las velocidades de MB / seg informadas) porque a veces Windows no esperará la sincronización y declarará que el trabajo se completó tan pronto como los datos se escriben en la memoria caché.
Motivo 2. La escritura de muchos archivos, especialmente los pequeños, es lenta
Para copiar 1.8GB
Debido a la forma en que funcionan la memoria flash y los sistemas de archivos, el rendimiento (velocidad) más rápido se logra al escribir archivos muy grandes. Escribir muchos archivos pequeños, o incluso datos mixtos que contengan varios archivos pequeños, puede ralentizar mucho el proceso. Esto también afecta a los discos duros, pero en menor medida.
Motivo 3. No se pueden comparar las velocidades de escritura de una memoria USB y una SSD
Tengo un SSD USB de 32 GB súper talento en el puerto vecino y funciona a las velocidades esperadas.
Una memoria USB de gran variedad de jardín generalmente consta de chips de memoria flash que se escriben en serie (secuencialmente) y no tienen caché propia.
Un SSD, por otro lado, contiene un controlador que escribe en los chips de memoria flash en paralelo , aumentando el rendimiento en un factor de 2 o más sobre la memoria USB.
- Si su SSD de 32GB tuviera chips 4x8GB, aún sería 4 veces más rápido que el dispositivo USB en cualquier operación de escritura.
- El SSD también contiene memoria caché RAM (como discos duros), por lo que puede almacenar rápidamente los datos entrantes en la memoria caché y decirle al sistema operativo que está listo, mientras que aún tiene que escribir esos datos en la memoria flash.
Entonces, con un archivo grande, su GB de 32 GB con la estructura 4x que asumimos sería 4 veces más rápido; con muchos archivos pequeños, sería 10 veces más rápido porque podría almacenarlos de forma inteligente en su caché.
En resumen , estas son las razones por las cuales la copia de archivos a memorias USB puede parecer más lenta en Linux. ¿Es realmente más lento debido a un problema de hardware / controlador o lo que sea ...
Hacer una comparación adecuada de las velocidades de escritura entre Linux y Windows
- Antes que nada, olvídate del SSD por la razón 3. Es como las naranjas y las manzanas.
- Para negar los efectos de la razón 1 (almacenamiento en caché) y la razón 2 (archivos pequeños), debe probar con un solo archivo grande, mayor que la cantidad de RAM en el sistema de prueba.
- En Linux puedes crearlo con
dd if=/dev/urandom of=largetest bs=1M count=7500
, lo que te da un archivo de prueba de 7500 MB. Suponiendo que su sistema tiene menos de 4 GB de RAM, es lo suficientemente bueno. Copie eso en un dispositivo Sandisk de 8GB recién formateado y cronometre.
- Reinicie en Windows y copie
largetest
desde la memoria USB a su disco duro. Reinicie nuevamente (para eliminarlo de la caché). Luego formatee el dispositivo USB (¡el mismo vfat / FAT32!) Y cópielo largetest
desde el disco duro al dispositivo .
- ¿Cómo se comparan los tiempos?
sync
y ver si no acelera el proceso. <- no probado pero posible