sábado, 3 de marzo de 2012

Velocidad real de un Pen Drive USB 3.0

Hace poco perdí la paciencia con un pen drive que ya tiene sus años. Los tamaños de las cosas que copiamos, han crecido. Es normal copiar varios cientos de megas, a diario, o si tenés que mover un disco duro de una máquina virtual, estamos hablando incluso de gigas que copiar o mover.
La velocidad de la que hablan los fabricantes, en términos de ancho de banda, tiene algo que ver con la velocidad real, la que a la mayoría nos interesa. Como cualquier velocidad de transferencia, hay varios factores que considerar, algunos relacionados con la calidad de los materiales del dispositivo y de la calidad del equipo que lo va a leer.
Si los equipos son de mala calidad, pueden tener el sello de USB 3.0, pero si su tasa de error es alta o el tiempo de respuesta de las operaciones de E/S es muy lento, la velocidad que publicita el fabricante sirve sólo "para la foto". Me viene a la memoria, esos teléfonos inalámbricos de principios de los 90, que decían tener un alcance de 100m., pero en ningún lado decía que eso era sólo en caso de que estés usando el teléfono en una sabana.  
En el ancho de banda también hay algo "escondido", ningún fabricante aclara que dentro de ese ancho de banda, hay un porcentaje que se destina a la comprobación de lo que se transfiere. No te están mintiendo, pero tampoco te están diciendo toda la verdad.
¿Alguna vez calculaste en una planilla electrónica la velocidad teórica de tu conexión de internet, y te preguntaste por qué nunca obtienes lo que dice la teoría?
Uno de los motivos, es por la comprobación/correción de errores, una funcionalidad básica de cualquier protocolo de transferencia de datos.
Si sólo estás descargando algo, y tienes 1Mbit. la teoría dice que deberías obtener aprox. 122KBytes/s, pero la realidad dice otra cosa. Ese porcentaje "perdido", se utiliza en realidad para la comprobación/detección/corrección de errores. Por eso es que aunque sólo estés descargando algo, siempre hay un tráfico de subida, de todos los acknowledgement de recepción que tienen que enviarse, durante la transferencia  (aún en el siguiente escenario teórico, en el que no tengas errores de transferencia o estos sean insignificantes).
El USB 2.0 estándar, puede tardar hasta 5 minutos para llenar un pen drive de 1GB.
Eso es aprox. 30Mbit/s, si le sumamos un porcentaje aprox. de 5% utilizado para la comprobación de errores.
Eso es más que el USB Full Speed (12Mbit/s) y bastante menos que el USB 2.0 Hi-Speed (480 Mbit/s), cuyo ancho de banda se supone de 60MB/s. Más información en : http://en.wikipedia.org/wiki/List_of_device_bit_rates#Peripheral 
La última notebook que compré, ya viene equipada con un puerto USB 3.0, que lo puedo experimentar a diario porque tengo un disco duro externo USB 3.0. En la búsqueda por un pen drive USB 3.0, que me dé una relación interesante de costo/beneficio, investigué las opciones.
De las marcas que encontré, con buenos reviews las opciones eran: Patriot, LaCie, Corsair, Kingston y Transcend.
La característica principal, que me hizo decidir por uno u otro, fue el tamaño. Al ver las fotos en los reviews, los únicos que tenían las dimensiones para no obstaculizar los puertos aledaños que quedaron de la lista fueron dos: Patriot y Trascend. Los demás eran o muy anchos, o muy gordos para que pueda ser ocupado el puerto usb, en la posición que fuera este ubicado horizontales o verticales, lo cuál me hubiera obligado a tener que usar con un cable de extensión.
Finalmente me decidí por un Transcend TS16GJF760 JetFlash 760 16GB USB 3.0 Flash Drive.
La otra opción era un Patriot Supersonic 32 GB USB 3.0 High Performance Shock Resistant Flash Drive PEF32GSUSB , de aluminio, bastante más costoso, pero no tenían en stock para la venta en Amazon, y el tiempo de espera era de 1 a 4 semanas.
Aquí están los resultados de los benchmarks en el puerto USB 3.0:


Aprox. 54MBytes/s para lectura; y para escritura 22.7MBytes/s como máximo y  un promedio de 7.4 MBytes/s.
Este es el gráfico de rendimiento del mismo pen drive, en un puerto USB 2.0

Pero lo más interesante, fue una prueba de la vida real.
Lo que te muestra el programa que copia, es una cosa, pero el tiempo en que tarda realmente en hacer toda la copia al dispositivo, es otra.
Para eso, en linux se puede hacer la copia, y luego desmontar el dispositivo, y recién cuándo el comando de "umount" termina, es que la copia fue terminada.
Para eso hice este pequeño script:

--inicio script--

cp -v disk1.vdi /media/pen-16G
umount /media/pen-16G

--fin script--

Tamaño del archivo: 2185252864 bytes (2084 MB)

user@host ~/prueba $ sudo time sh -x test
+ cp -v disk1.vdi /media/pen-16G
`disk1.vdi' -> `/media/pen-16G/disk1.vdi'
+ umount /media/pen-16G
0.01user 6.85system 2:11.39elapsed 5%CPU (0avgtext+0avgdata 4272maxresident)k
1234608inputs+4272288outputs (0major+923minor)pagefaults 0swaps

Velocidad real. 2min. 11 seg. para copiar 1 Archivo de 2G:  15.86 MB/s

No hay comentarios: