m-lab / ndt-server

docker native ndt5 and ndt7 server with prometheus integration
https://www.measurementlab.net/
Apache License 2.0
99 stars 40 forks source link

The inconsistency exists between the download/upload values. #405

Open omerfatih opened 4 months ago

omerfatih commented 4 months ago

Hello,

I'm running ndt-server on Ubuntu 24.04(Desktop), and I have ndt-go-client-minimal binary on my Linux ARM device. When I perform a speed test on the ARM device ./main -locate=false -ssl=false -download=ws://192.168.2.6/ndt/v7/download -upload=ws://192.168.2.6/ndt/v7/upload, I get around 1.8Gbit for upload and 1.2Gbit for download. Both devices are directly connected to each other via a 2.5Gbit port using a CAT 6 cable. BBR is enabled on the server side, and I'm not encountering any errors. Do you have any idea what might be causing this imbalance? note: When I tested with iperf3, the results were parallel and approximately 1.8Gbit.

bassosimone commented 4 months ago

I have two suggestions here. Can you attempt enabling BBR also on the client side? What is the CPU utilization of both the ARM device and your desktop while running the experiment? I wonder if the CPU might be the bottleneck.

cleitonmoya commented 4 months ago

Another suggestion / comment: I experienced a similar behaviour (limitation in the download throughput) using Raspberry PI (arm device) with ndt-client and 32 bits OS (the default image for Raspberry PI OS is 32-bit). After changing to 64 bits OS, this limitation disappeared. 

omerfatih commented 4 months ago

Hi, I use Armv7 processor, uname -r: 4.19.235 uanme -r: armv7l I checked cpu usage -> client side max %30, server side max %29

And I enabled BBR (in kconfig), the download speed is the same, but the upload speed was reduced to ~500Mbps.

sysctl net.ipv4.tcp_congestion_control net.ipv4.tcp_congestion_control = bbr