Challenges with accurate embedded speedtest

I have tried out various ways to run a program on an OpenWRT router which measures ISP speed accurately. My benchmark for comparison is result run from user's browser connected to the same router.

  1. A custom multi-threaded C program using sockets; using test data servers. Values do match. However I am having a tough time making this program run on all architectures.

  2. A shell program speedtest-lite (; uses servers. Values reported are always less.

  3. Set up a dedicated server and just fired off a curl program from router and watched the speed. Tried running multiple instances of curl simultaneously to better use router's CPU and summed up speed values from all threads. Final result is still less than the benchmark.

Would like to hear opinions from forum members on why the values are not matching up to the benchmark.

Am I hitting router's CPU bottleneck when running the program? As per 'top' command output, it doesn't appear that's the case always.
Besides, why an user, connected to the same router is able to get better speed reported in the browser?

Wouldn't router's CPU load be the same in both cases?

You might read the discussion in Speedtest: new package to measure network performance and test the speedtest script there.

Running the speedtest itself on the router will cause CPU load that may affect the results.

1 Like

@hnyman Thanks for the pointer. Very useful thread.
I am going ahead with that script with private netperf server for the most accurate result I have got from an embedded speedtest so far!

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.