Benchmark für SBC

Phoronix Test Suite

Hier stellt Phoronix eine Suite für ARM-SBCs vor https://www.phoronix.com/scan.php?page=article&item=16-armlinux-sep2018&num=1 In diesem Benchmark werden folgende Einzel-Benchmarks durchgeführt - Tinymembench, memcopy, memset - TTSIOD - 7-ZIP Compression - C-RAY (Floating Point) - PrimeSieve - AOBench - FLAC Audi encoding - Lame Encoding - Perl-Benchmark - Redis - PyBench - PHPBench - Git

Thomas Kaiser (Armbian) hat eine eigene Test-Suite, die etwas weniger Benchmarks bietet https://github.com/ThomasKaiser/sbc-bench

Sind diese Tests ausreichend und aussagekräftig genug? Wo kommen SBCs üblicherweise zum Einsatz?

Caffee

sudo apt install protobuf-compiler libgflags-dev libgoogle-glog-dev libleveldb-dev liblmdb-dev libsnappy-dev libhdf5-serial-dev libatlas-dev libatlas-base-dev

https://www.anandtech.com/show/10353/investigating-cavium-thunderx-48-arm-cores/17 https://www.phoronix.com/scan.php?page=article&item=odroid-xu4-arm&num=1

https://openbenchmarking.org/result/1812226-SP-1809111RA67



Boards

Nano Pi M4

https://www.friendlyarm.com/index.php?route=product/product&product_id=234 RockPro64 https://www.pine64.org/?page_id=61454

Raspberry Pi Ubuntu 18.04

http://qoe6rdttrncugsow.myfritz.net/bike/public/raspberrypi-ubuntu-rpi3Bplus/

 ROS installieren

sudo apt-get install dirmngr
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
sudo rosdep init
rosdep update
mkdir -p ~/ros_catkin_ws
cd ros_catkin_ws/
rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
wstool init src kinetic-desktop-wet.rosinstall
rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:stretch
swapon /dev/sda1
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2

Zeit messen, wie lange ROS übersetzt

Phoronix-Test-Suite C-Ray, CacheBench, OpenCV,

Für Caffe müssen folgende Pakete (unter Ubuntu 16.04) installiert sein.

sudo apt install protobuf-compiler libgflags-dev libgoogle-glog-dev libleveldb-dev liblmdb-dev libsnappy-dev libhdf5-serial-dev libatlas-dev libatlas-base-dev

Auf dem Rapberry Pi muss man anschließend noch Symlinks für libhdf5.so und libhdf5_hl setzen, weil die Dateien unter Debian alle das Postfix “serial” im Namen enthalten

cd /usr/lib/arm-linux-gnuabihf
sudo ln -s libhdf5_serial.so libhdf5.so
sudo ln -s libhdf5_serial_hl.so libhdf5_hl.so



Phoronix MakeBench

für Single-Board-Computer Anleitung

Installieren Phoronix Test Suite (Debian auf deutsches Layout: setxkbmap de )

git clone https://github.com/phoronix-test-suite/phoronix-test-suite.git
sudo apt-get install php-cli php-xml
cd phoronix-test-suite
sudo ./install-sh    
phoronix-test-suite

Die Suite benötigt OpenCV3, die etwa unter Ubuntu 16.04 oder Debian 9 nicht über Paket-Manager installierbar ist

Weg a) ROS Kinetic installieren, Anleitung oben

Achtung: Debian Stretch für Armhf bringt keinen Lisp-Compiler sbcl mit, das Auflösen der Dependancies funktioniert unter Umständen nicht und der rosdep-Befehl endet mit einem Fehler Unter http://www.sbcl.org/platform-table.html findet man die Binaries für armhf, um sbcl zu installieren. Allerdings findet rosdep dann trotzdem kein Paket sbcl, weshalb man den Befehl mit der Option --skip-keys='sbcl' aufrufen muss, also

rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:stretch --skip-keys='sbcl'

Weg b) OpenCV3 einzeln installieren exakter weg hier Installation in Linux

git clone https://github.com/Itseez/opencv.git --branch 3.3.0
cd opencv
mkdir release
cd release 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j2
sudo make install

dann

cd ~/.phoronix-test-suite/test-suites
a) git clone https://github.com/dabmake/MakeBench.git
b) wget https://raw.githubusercontent.com/dabmake/MakeBench/master/single-board-computer/suite-definition.xml
phoronix-test-suite benchmark single-board-computer



xml-File for Test Suite

<?xml version="1.0"?>
<!--Phoronix Test Suite v8.6.0m1-->
<PhoronixTestSuite>
  <SuiteInformation>
    <Title>Singe Board Computer</Title>
    <Version>1.0.0</Version>
    <TestType>Other</TestType>
    <Description>Benchmarks for Single Board Computer like Pi, Odroid and Tinker Board</Description>
    <Maintainer>dab/Make</Maintainer>
  </SuiteInformation>
  <Execute>
    <Test>pts/pybench-1.1.2</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>system/openssl-1.11.0</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/opencv-bench-1.0.0</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/c-ray-1.2.0</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/encode-mp3-1.7.2</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/x264-2.5.0</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/dbench-1.0.0</Test>
    <Arguments>1</Arguments>
    <Description>Client Count: 1</Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/cachebench-1.1.2</Test>
    <Arguments>-b</Arguments>
    <Description>Test: Read / Modify / Write</Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/tinymembench-1.0.2</Test>
    <Arguments></Arguments>
    <Description></Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/iozone-1.9.5</Test>
    <Arguments>-r 64k -s 512M -i0 #WRITE</Arguments>
    <Description>Record Size: 64Kb - File Size: 512MB - Disk Test: Write Performance</Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
  <Execute>
    <Test>pts/iozone-1.9.5</Test>
    <Arguments>-r 64k -s 512M -i0 -i1 #READ</Arguments>
    <Description>Record Size: 64Kb - File Size: 512MB - Disk Test: Read Performance</Description>
    <OverrideTestOptions></OverrideTestOptions>
  </Execute>
</PhoronixTestSuite>



Tests vergleichen

phoronix-test-suite benchmark 1901228-SP-PINE64MAK24 1901161-SP-TINKERBOA31 1901154-SP-LPAMAKEBE51 1901200-SP-UPBOARDMA49 1901184-SP-PI3BMAKEB62

Option: local per merge result



compare

phoronix-test-suite benchmark 1901275-SP-TINKERBOA65 1901263-SP-ROCK64MAK84 1901258-SP-ROCK64MAK52 1901184-SP-PI3BMAKEB62 1901200-SP-UPBOARDMA49 1901228-SP-PINE64MAK24 1901166-SP-TINKERBOA71 1901140-SP-LATTEPAND17

https://openbenchmarking.org/result/1901275-SP-TINKERBOA65,1901263-SP-ROCK64MAK84,1901258-SP-ROCK64MAK52,1901184-SP-PI3BMAKEB62,1901200-SP-UPBOARDMA49,1901228-SP-PINE64MAK24,1901166-SP-TINKERBOA71,1901140-SP-LATTEPAND17,1901273-SP-ORANGEPIP99