¿Cuál es la configuración de hardware de mayor rendimiento?

35

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.

  1. La tarjeta SD
  2. Una unidad flash USB
  3. 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

Dan B
fuente
1
Para su información, los respondedores pueden usarlo sudo hdparm -t /dev/sdxcomo una herramienta útil para la evaluación comparativa.
Jivings
2
No tengo puntos de referencia, pero es de conocimiento común: ssd> hdd> flash> sd> medios ópticos
Alexander - Reinstalar Monica
+1 - Buen punto sobre el puerto SD: ¿está en el mismo bus que el USB / ethernet? ¿Compartir la carga en SD y el almacenamiento USB conectado funciona mejor?
Jon Egerton
@XAleXOwnZX seguro de que si los buses en los que están esos dispositivos pueden coincidir con el rendimiento máximo del dispositivo, ese es el orden, pero apuesto a que, dado que el Raspberry Pi solo tiene USB, su pedido será más como ssd = hdd = flash> óptico y SD puede residir en cualquier lugar de esa lista en función de si tiene su propio bus separado de los puertos USB.
Dan B
Ese es un buen punto, pero HDD> Flash seguro. Mi disco duro USB recibe 30 MB / s en comparación con el de mi unidad flash 5-10
Alexander - Restablecer Mónica

Respuestas:

35

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 ingrese la descripción de la imagen aquí

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,

ingrese la descripción de la imagen aquí

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).

ingrese la descripción de la imagen aquí

¿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.

  1. ¿Qué tan rápido maneja el USB interno los datos de SD?
  2. ¿Cuánta CPU se usa para leer / escribir en SD y luego en LAN?
  3. ¿Cuánta CPU se usa para leer / escribir en una memoria USB?
  4. ¿Copiar algún dato influye directamente en el uso de la CPU?
  5. ¿Qué tan bien el chip USB / LAN incorporado maneja la lectura de datos de 2 fuentes nuevamente en el puerto LAN y afecta la CPU proporcionalmente?
  6. No hay necesidad de probar si lan obtendrá 10mb / s completos debido a que el estado en el que se encuentra el concentrador USB tiene un cuello de botella.

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.

ingrese la descripción de la imagen aquí

Piotr Kula
fuente
1
+1 Gran respuesta. Sin embargo, ¿puede proporcionar fuentes para sus imágenes?
Jivings
1
Esta respuesta hace un excelente trabajo al agregar detalles a la pregunta que explica por qué cada uno de los diferentes medios de almacenamiento podría tener números de rendimiento muy diferentes. Gracias por la información adicional que debería haber agregado a la pregunta yo mismo en primer lugar.
Dan B
1
El USB sigue siendo de alrededor de 30 MB / s, es decir, mucho de sobra para una red de 100 Mbit.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen sí, eso es cierto. Pero una de mis preguntas se relaciona con el rendimiento del hub USB incorporado. Haw rápido es realmente? y depende de la CPU ARM, también de lo que sucede cuando copia fuentes de formulario 2 a través de LAN ... Eso es algo que vale la pena comparar. No estoy diciendo que no lo hará, pero ciertamente podría ser un problema en algunas situaciones.
Piotr Kula
Parece que tienes experiencia en el campo. ¿Podrías hacer mediciones reales?
Thorbjørn Ravn Andersen
3

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.

Chris Stratton
fuente
No necesita una tarjeta para arrancar. ¡El sistema operativo / cargador de arranque lo requiere! Puede arrancar desde la interfaz serial o LAN si cambió el gestor de arranque para hacerlo. Si fuera lo suficientemente técnico, podría agregar 3 GB de RAM al RPI, pero eso está totalmente fuera de tema. ¡El hecho es que todo pasa por un estúpido hub USB! bleeeh
Piotr Kula
¿No está el gestor de arranque, al menos el que podría cambiar, ubicado en la tarjeta SD? Sin embargo, es posible que pueda obtener una rom de arranque interna para cargar desde otra fuente si cambia algunas correas de configuración.
Chris Stratton
Estoy casi seguro de que el chip BCM ... igual que Arduino, por ejemplo, tiene un gestor de arranque ... (como BIOS en PC) Tiene que haber algún programa inicial para cargar el siguiente programa, etc. cambiando el bootlaoder en RPi ... espere un año o dos.
Piotr Kula
El ATMEGA de un arduino es un ejemplo de un microcontrolador diseñado para funcionar solo, con flash interno. Un booloader allí es personalizable por el usuario. El SOC del pi, por otro lado, parece ser de la clase de partes del sistema más grandes que requieren memorias externas. Por lo general, tienen un cargador de arranque, pero es una rom de máscara que no se puede modificar una vez que salen de la fábrica. En un producto tradicional basado en algo así, habría un chip flash externo de 4 a 8 MB. Pero el pi parece usar la tarjeta SD extraíble en su lugar, evitando el problema de que alguien corrompa un flash soldado.
Chris Stratton el
Eso es interesante. Entonces, ¿es la partición FAT que contiene estos datos de arranque? o se almacena en otro lugar en una parte oculta de la SD? En theroy, en un intento aún más fácil, intente redirigir el proceso de carga a otro "pirateado" en el dispositivo ...
Piotr Kula
0

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.

Angel Genchev
fuente
CADA SD de clase 10 que he probado es> 19mb / s de escritura. Tuve una clase 6 que hizo 14mb / s. Los SD SanDisk Extreme que afirman que 45mb / s logran 50mb / s de lectura y 47mb / s de escritura, lo cual fue una sorpresa. Las Lexar 400x SD son las más rápidas que he probado a 70mb / s de lectura, pero escriben alrededor de 30mb / s. En USB 2.0, prácticamente no hay diferencia entre tarjetas SD rápidas, HDD y SSD. Todas las interfaces USB 2.0 con las que me he metido tienen un límite de 35mb / s. He visto unidades de memoria USB 2.0 que tienen un límite de alrededor de 10 mb / sy algunas incluso más bajas que eso. Muchas unidades de memoria USB 3.0 tienen velocidades de escritura limitadas a 10-20 mb / s, ¡incluso en puertos USB 3.0!
Therealstubot
0

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 :-(

NookaV
fuente
Creo que tiene un problema de configuración / red porque puedo cargar un archivo directamente a mi memoria USB de hasta 24 Mbps. Y creo que podría hacerlo mejor con Ethernet en lugar de Wi-Fi. He estado usando vsftpd.
Morgan Courbet