Benchmark d'un serveur Web Raspberry PI 2 B+ vs Raspberry PI 3

  • apache
  • benchmark
  • raspberry
  • ruby

Publié le 2017-10-15

IntĂ©ressĂ© pour crĂ©er un API avec Ruby on Rails? Jette un coup d'Ɠil Ă  mon livre: API on Rails 6. Tu peux tĂ©lĂ©charger une version gratuite au format PDF sur Github. Si tu aimes mon travail tu peux acheter un version payante sur Leanpub.

L’occasion de la migration de mon serveur Apache depuis mon Raspberry PI 2 B+ vers mon Raspberry PI 3 est l'occasion de mettre ma pierre Ă  l'Ă©difice des Benchmarks existants. Je n'ai pas la prĂ©tention d'apporter un comparatif complet mais juste de proposer mes rĂ©sultats.

Sortie à un an d'intervalle, la principale amélioration du RPI3 est d'amener une arcitecture 64 bits.

Ma configuration

Cette comparaison ne se base pas uniquement sur le Hardware car les software installĂ©s sur l'un ou sur l’autre sont diffĂ©rents (notamment pour la base de donnĂ©s dont l'un est sur MySQL et l'autre sur MariaDB). Sinon tous les deux sont des serveurs Apache faisant tourner des applications web Ruby on Rails avec RVM (gestionnaire de version Ruby) & Passenger (bibliothĂšque permettant de faire fonctionner des applications Ruby sous Apache).

  • Raspberry PI 2 B+
    • Raspbian GNU/Linux 8.0 (jessie)
    • Linux 4.1.19-v7+ armv7l GNU/Linux
    • Apache/2.4.10 (Raspbian)
    • Phusion Passenger 5.1.2
    • MySQL 5.5.57-0+deb8u1 (Raspbian)
  • Raspberry PI 3
    • Raspbian GNU/Linux 9.1 (stretch)
    • Linux 4.9.41-v7+ armv7l GNU/Linux
    • Apache/2.4.25 (Raspbian)
    • Phusion Passenger 5.1.8
    • MariaDB 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

Le script

Pour le script, je me suis basé sur un script bash trouvé sur internet qui utilise un simple curl repété plusieurs fois.

#!/bin/bash

# on spécifie l'URL
URL="$1"
# on spĂ©cifie le nombre de requĂȘtes
MAX_RUNS="$2"
SUM_TIME="0"

i="0"
while [ $i -lt $MAX_RUNS ]; do
  # on lance la requĂȘte en rĂ©cupĂ©rant le temps de rĂ©ponse
  TIME=`curl $URL -o /dev/null -s -w %{time_total}`
  # on ajoute le résultat au précédent
  TIME="${TIME/,/.}"
  SUM_TIME=`echo "scale=5; $TIME + $SUM_TIME" | bc`
  i=$[$i+1]
done
# on fait la moyenne et on affiche
TIME_AVERAGE=`echo "scale=5; $SUM_TIME / $MAX_RUNS" | bc`
echo "Sum: $SUM_TIME"
echo "Avg: $TIME_AVERAGE"

Les résultats

Voici donc le rĂ©sultat avec mon Raspberry PI 2 B+ avec 50 requĂȘtes.

./average_reponse_time.sh http://raspberry-cook.fr/recipes 50
Sum: 38.278
Avg: .76556
./average_reponse_time.sh http://raspberry-cook.fr/recipes 50
Sum: 34.014
Avg: .68028

Voici donc le rĂ©sultat avec mon Raspberry PI 3 B+ avec 50 requĂȘtes.

./average_reponse_time.sh http://192.168.1.103/recipes 50
Sum: 19.812
Avg: .39624
./average_reponse_time.sh http://192.168.1.103/recipes 50
Sum: 19.766
Avg: .39532

Conclusion

Je ne m'attendais pas à une différence aussi importante. Dans mon cas, le RPI3 répond 1,7 fois plus rapidement que le RPI2!

Néanmoins, ces résultats ne sont pas uniquement dus à la différence au niveau du matériel mais aussi à la différence des logiciels installés.

Articles liés