RPi4B - throughput limits are probably down

I’ve been running IPFire on a RP4 for around a year now. It works well, with no problems so far.

The built-in ethernet port is being used for the uplink (red) subnet. I added three 1Gb/s USB/Eth adaptors to provide the green, blue and orange ports. (Generic RPi-compatible adaptors.)

The four networks each support 1GB/s and the unit has a 1Gb/s uplink. Under those conditions, the RPi4 can maintain a maximum transfer rate (red ↔ green) of 250Mb/s. So it’s good for uplink connections up to about 0.25Gb. Above that, it may limit throughput.

CPU load average sits around 0.17, so the throughput limits are probably down to the limitations of the RPI4 USB subsystem. (This was apparently improved on the RPi5, so it’d probably see a higher sustained throughput.)

The hardware sensors seem to be working ok - I see the ACPI Thermal-Zone and HWTemp readings, although they are identical.

Back when I installed IPFire it required the system disk/mSD card to be USB-connected rather than placed in the built-in mSD slot. I don’t know whether that’s still the case.

This sounds like the maximum effective throughput of a USB 2.0 port to me.

3 Likes

The RPi4B has 2 USB 3.0 ports and 2 USB 2.0 ports.

The USB 2.0 ports will slow things down.

The blue colored USB ports are 3.0.

Well I haven’t tried ipfire with rp4 but the same trick I do with multiple usb 3 hard drives on a usb3 hub would work. Which adjusting the swiotlb buffer size until maximum throughput is achieved.

This requires that all usb ethernet is connected to the hub. The built in ethernet will be ok with adjusting these settings.

Also I find I get a 50% improvement on the built in ethernet when I put a heatsink on it.
Same with the RP5