El cuello de botella de la Raspberry Pi

Basado ampliamente en otro original de Uroboros

Todas las Raspberry Pi en general tienen a día de hoy mismo problema a la hora de copiar ficheros al PC de sobremesa: la lentitud del proceso. La pregunta por qué las RPi son más lentas que otras placas dotadas de un puerto Ethernet de la misma velocidad (10/100 MB). Sin entrar a compararlas con las ODROID-C1 o la Banana Pro, que incorporan un puerto Ethernet Gigabit (10/100/1000 MB). La diferencia en estos casos, lógicamente, es enorme.

La respuesta a esa pregunta es la siguiente: el puerto Ethernet de la RPi no sólo es que va a 100 MB frente al Gigabit de la competencia, es que ni siquiera es un auténtico puerto Ethernet, sino que usa el bus USB de la placa (compartiendo su ancho de banda) mediante un sistema de conversión. Se trata de un SMSC LAN9514.

raspberry-pi-SMSC LAN9514

Cuando se lanzó la RPi podía tener sentido por la búsqueda de componentes que fueran lo más barato posible; pero ahora, con el paso del tiempo, padecemos sus consecuencias.

Así que los 4 puertos USB + el puerto Ethernet pasan todos por un mismo chip, un HUB USB interno y luego van al procesador y a la RAM

El lanzamiento de la Raspberry Pi 2 y lo mismo sigue pasando con la Raspberry Pi 3 demuestra que en la Fundación Raspberry Pi no están dispuestos a corregir este problema todavía. ¿Cuándo será el momento oportuno, en la próxima revisión o en la siguiente?

La decisión de continuar con este puerto supone, como decíamos, un auténtico cuello de botella para la placa, de modo que las mejoras que incorporó la Raspberry Pi 2 o la Raspberry Pi 3 no palían en absoluto el problema. El añadir una CPU quad core y aumentar la RAM hasta 1 GB lo que hacen es proporcionar mayor velocidad de proceso y mayor rendimiento a la hora de ejecutar aplicaciones, pero la transmisión de esos datos fuera de la placa ha de seguir haciéndose a través del mismo falso y lento puerto Ethernet, con lo que la conexión de la placa al exterior, ya sea por medio de SSH o usándolo como NAS casero, seguirá adoleciendo de la misma lentitud que tenían los modelos anteriores. Os marco en rojo en el esquema del controlador SMSC LAN9514 dónde estaría el famoso cuello de botella de las Raspberry.

SMSC_LAN9514-esquema

Pruebas con iperf con router TP-Link a 100Mbits

Hay una aplicación Linux que nos permitirá demostrar esto, se trata de iperf. Necesitamos dos ordenadores con Linux a cada lado de la conexión a probar, unos harán de servidor y otro de cliente:

Y estos son los resultados:

UG802 Beelink X2 Raspberry Pi 3
Banana PRO 43.4 Mbit/s 95.2 Mbit/s 95.2 Mbit/s
Lenovo Yoga 11.5 Mbit/s 31.2 Mbit/s 30.9 Mbit/s

Como veis, tampoco es que sea una locura, pero al atacar un un PC más potente como cliente empieza a perder velocidad, creo que la clave es que al tener una red de 100Mbits con un router malillo, es ahí donde tengo el cuello de botella, es cuestión de probar en cada caso y en cada casa.

Más información en:

iperf-cuello-01

iperf-cuello-02