Sé que los números de referencia exactos variarán entre los fabricantes, pero en general, si solo considera unidades flash, tarjetas SD y discos duros USB de gama alta y su Raspberry Pi está conectada a una red a través de un conmutador Ethernet, ¿cuál es la configuración más rápida de una red? punto de vista de transferencia de datos? Solo estoy buscando respuestas en las que las personas hayan probado las configuraciones que se enumeran a continuación y tengan resultados reales, no teóricos.
Obviamente, se debe usar una tarjeta SD porque es necesaria durante al menos parte del ciclo de arranque, pero supongamos que tiene una partición de datos adicional en cada uno de los dispositivos enumerados a continuación que tiene las velocidades de transferencia de red más altas en la Raspberry Pi.
- La tarjeta SD
- Una unidad flash USB
- Un disco duro USB
Esta pregunta no es trivial porque en algún momento la sobrecarga de procesamiento asociada con uno de los dispositivos de almacenamiento junto con la comunicación de Ethernet puede afectar la velocidad de transferencia, también el puerto de Ethernet en la Raspberry Pi está controlado por el bus USB, por lo que en general el rendimiento debería verse afectado por la coordinación de transferencia de datos de ethernet y transferencia de datos de medios USB. No sé si la tarjeta SD está en el mismo bus USB compartido que los puertos USB y el puerto Ethernet, pero si no es así, supongo que sería un beneficio bastante grande en términos de rendimiento.
Editado para incluir la transferencia de red como requisito de referencia
sudo hdparm -t /dev/sdx
como una herramienta útil para la evaluación comparativa.Respuestas:
En la evaluación comparativa siempre debe establecer cuáles son sus límites. ¡Porque si esperas obtener 100mbs de ese lan, entonces solo te estás engañando a ti mismo!
Mira este diseño de bloque de RaspberryPI Modelo-B
Entonces establecemos un hecho muy importante aquí. Ethernet tiene un cuello de botella por el controlador USB porque desde el bloque de digram establecemos que está conectado al concentrador USB. (¿No hay una indicación clara de si usa otro bus o simplemente USB2?)
Oh, mira, otro diagrama de bloques,
Ahora que arroja aún más luz sobre la situación. El controlador 10/100 está conectado al concentrador USB; desafortunadamente, una vez más, en ninguna parte de la especificación dice qué tan rápido se comunica el concentrador con el controlador LAN: espere el hecho clave que dice que se negocian la velocidad usb y el lan para entornos usb de velocidad mixta.
¿Dónde está la tarjeta SD?
Resulta que la tarjeta SD está conectada directamente al BCM2835 (página 65) y explican en detalle cómo se ve afectado el rendimiento de varios niveles de configuración. Una cosa importante a tener en cuenta es que si la tarjeta SD tiene un reloj dedicado, puede ejecutarse independientemente de la CPU / GPU central a toda velocidad (de cualquier tarjeta y estándar que se use, puede ver que admite algunos estándares).
¿Entonces que significa eso?
Significa que si compara la tarjeta SD más rápida y el pen drive de memoria (4gb / 8gb), lo más probable es que obtenga grandes diferencias de rendimiento. Entonces, ahora surge la pregunta, ¿cómo maneja la CPU / GPU la comunicación con este maravilloso dispositivo integrado (chip usb / lan) y a qué velocidad es capaz de comunicarse?
¿Ves hasta dónde puede llegar la teoría antes de que hagamos una evaluación comparativa? Otro punto clave aquí es: ¿Cómo controla la CPU el flujo de datos? ¿Utiliza el canal de reloj separado como se recomienda?
En un mundo ideal, pensarías que esta LAN / USB lo manejaría. Pero eso requiere un MCU ... ¿vemos un MCY en algún lugar de ese diagrama de bloques ... NO!
Por lo tanto, la CPU tiene que solicitar que IO DATA le envíe el puerto USB y luego vaya al puerto LAN (a través del mismo HUB USB) Sí ... así que eso causará algunos problemas de velocidad en algún lugar.
También es bueno tener en cuenta lo que sucede cuando copia a un pen drive USB y desde la tarjeta SD todo a través de LAN ... va a causar algo de tráfico.
Necesitamos comparar varios aspectos
Al establecer lo que estamos tratando de comparar podemos hacer una pregunta del mundo real.
Ahora que sabes por qué estás luchando, te desafío a que respondas a ti mismo.
Puede que este sea un muy buen punto de partida.
Referencias
Pero principalmente,
mis propios conocimientos técnicos y evaluaciones que he realizado en base a mi propia experiencia integrada. El OP hizo una muy buena pregunta, pero le falta entender que sin la comprensión teórica de un sistema está condenado a tratar de evaluar / resolver los problemas prácticos.
Resultados
(4) Esta respuesta muestra algunas pruebas piratas con los pies en la tierra. Y demuestra que realizar transacciones de datos intensas influye directamente en la CPU (solo que no estoy seguro si es la tarjeta SD o el proceso de transferir datos dentro del chip BCM al chip USB / LAN)
(6) Se ha demostrado que el único cuello de botella será la fuente (por ejemplo, una tarjeta SD lenta) El concentrador USB logra bombear datos al 90% o más, pero la respuesta a las preguntas 4 y 5 puede influir directamente en este rendimiento.
Entonces, haciendo algunas investigaciones y contribuciones de otros usuarios , estamos comenzando a establecer y obtener resultados preliminares.
Aquí hay un buen cuadro para ayudar a visualizar con qué estamos tratando.
fuente
Obviamente, el rendimiento más alto sería con un disco RAM.
Eso no será de mucha utilidad para un dispositivo de almacenamiento conectado a la red, pero entonces, el pi no es necesariamente la mejor opción para esa aplicación fija.
Para algunas cosas en las que la flexibilidad del pi es especialmente adecuada, los requisitos de almacenamiento reales pueden ser lo suficientemente pequeños como para ejecutarse explícitamente desde un disco RAM, o tal vez implícitamente desde el RAM a través del mecanismo de almacenamiento en caché de disco (los discos ram de Linux son solo cachés de disco sin un disco de respaldo de todos modos).
Aún necesitaría una tarjeta para arrancar, pero como beneficio adicional de ejecutar desde ram, podría mantener la tarjeta de solo lectura y minimizar el riesgo de corromperla.
fuente
USB HDD o USB SSD debería proporcionarle el rendimiento más rápido. Las tarjetas SD escriben alrededor de 12 MB / s para dispositivos de clase 10 y el USB puede obtener hasta 30 MB / s.
No estoy de acuerdo con que el concentrador USB esté bloqueando la red Ethernet en RPi, porque el HUB puede soportar 400 Mbit / sy la red Ethernet es 100. Entonces, en teoría, puede soportar hasta 4 puertos Fast Ethernet 100Mb / s.
fuente
Obtengo un máximo de 4 Mb / s con una unidad flash USB y lo mismo para USD HDD. Esto mientras simplemente deja caer los archivos a través de la red de Windows 'grupo en el hogar' al dispositivo conectado a la Frambuesa.
Esperaba al menos 10 veces eso, pero no he logrado acelerar la transferencia. Intenté la transferencia FTP directamente a un disco duro USB (este dispositivo se transfiere a + 60Mb / s cuando está conectado a mi computadora portátil) pero los resultados son muy pobres. 100KiB / s! Resultando en horas de tráfico por solo unos 100 MB.
Ahora muevo el HDD entre la computadora portátil y Raspberry Pi para la transferencia de datos :-(
fuente
vsftpd
.