Benchmark for embedded boards

I’ve recently spent a bit of time benchmarking few possible solutions for the embedded boards.

So far I’ve compared three basic configurations:

So, here’s some results:

First, for creating and sending a packet:

Then, for the whole read/write sync loop for the position/speed/load:

And finally, the CPU usage:

All the details of the results can be found as iPython notebooks.

To sum up those results:

  1. On an average PC or a board such as the odroid Pypot is rather light and fast.
  2. Even if everything works on the raspberry pi, it kind reaches the limit of what this board can do.
  3. PyPy seems to improve quite significantly pypot’s performance. It could be an option to consider!

All scripts used in those benchmarks are available and can be used to test other boards. The data can be downloaded here. So don’t hesitate to complete those bench with other boards!

4 Likes

Very good index to choose an hardware architecture.
Concerning read\write benchmark, is it only for 1 servocontrol ?

In the first plot it’s with only one motor, in the second one it’s with an entire bus on Poppy - so 25 motors.

Cubietruck Benchmark:

Testing with pypot read/write…
Done in 4.45884299278ms (STD=0.882047581831)
Testing with pref-forged packed…
Done in 2.85709762573ms (STD=0.874964667771)
Testing with direct serial read/write…
Done in 2.02617764473ms (STD=0.395869009249)

Kinda faster than rpi but slower than odroid…

Error while running run-all.py in samples/benchmarks folder:

linaro@cubietruck:~/Downloads/pypot-master/samples/benchmarks$ python run-all.py
usage: run-all.py [-h] -l LOG_FOLDER -c CONFIG
run-all.py: error: argument -l/–log-folder is required

As printed by the usage function, you need to specify a log folder and a config file. So you will have to do something like:

python run-all.py -l my_log_folder -c path_to_my_poppy_config.json

I’ve only used this benchmark script on a poppy humanoid but it shouldn’t need much modifications to run on any other poppy creatures.