mercredi 20 avril 2016

Rasberry Pi2 vs Pi3

Faut-il remplacer les Raspberry Pi2 B de  notre cluster par des  Raspberry Pi3 ?

Voici 3 réflexions:

1) La première est que l’utilisation de 64 bits (ARMv8)  induit automatiquement l’utilisation de plus de mémoire aussi bien pour le code que les données. Le classique index de boucle
for (int i=0 ; i<1000 ; i++) { … } 
prenait 32 bits (alors que 16 suffisaient largement) maintenant il en faudra 64 sans aucun gain. Sur un serveur avec 16 Go de RAM on ne s’inquiète pas de ce genre de détail, mais sur une RPi avec seulement 1 Go (dont une partie est prise par la vidéo) on fait beaucoup plus attention. 

Notez que :
- Avec des pointeurs sur 32 bits on peut adresser 4 Go. Donc 32 bits sont largement suffisant pour un RPi.
- Si on écrit "for ( int16 i=0 …)" c’est le code qui est plus lent.
- Cette inflation des besoins en mémoire induite par le passage de 16 à 32 puis à 64 bits coûte tellement cher pour les applications embarquées qu’ARM a développé un jeu d’instructions 16 bits (Thumb et Thumb-2).


2) Le deuxième réflexion est que, pour le moment, on n’a pas de distributions Linux 64 bits (aarch64) utilisant le nouveau jeu d’instruction de ARMv8.  Or ce qui fait l’intérêt de l’architecture ARMv8 c’est que son jeu d’instructions a été conçu sans la contrainte de compatibilité avec le jeu d’instructions 32 bits. La performance ne vient pas des 64 bits mais de ce design moderne et sans compromis. (Le travail est en cours avec CentOS-7)

3) Comparaison des vitesses de calcul:

Note: Chaque RPi2 de notre cluster est légèrement over-clocké (1GHz) sans jamais avoir de plantages (mais alimenté en 5.2V) . Dans le fichier /boot/config.txt on a :

arm_freq=1000
core_freq=600
sdram_freq=500
over_voltage=2
over_voltage_sdram_p=4
over_voltage_sdram_i=0
over_voltage_sdram_c=0


Pour faire cette comparaison entre RPi2 à 1GHz et RPi3 à 1.2GHz (et avec un Intel i7) on va utiliser la commande “openssl speed rsa -multi x” où x est le nombre de threads à utiliser.
On devrait avoir un gain de 20% en faveur du RPi3.


Voici les résultats obtenue avec openssl 1.0.1


**** Résultats sur un RPi3 ****

[rpi3 ~]# openssl speed rsa -multi 1
================= RPi3 1x1.2Ghz ====================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000775s 0.000067s   1290.0   15000.4
rsa 1024 bits 0.003928s 0.000198s    254.6    5038.5
rsa 2048 bits 0.024988s 0.000704s     40.0    1419.6
rsa 4096 bits 0.172203s 0.002684s      5.8     372.6


[rpi3 ~]# openssl speed rsa -multi 4
================= RPi3 4x1.2Ghz ====================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000195s 0.000019s   5115.2   53333.3
rsa 1024 bits 0.001344s 0.000073s    744.3   13746.1
rsa 2048 bits 0.009693s 0.000283s    103.2    3535.3
rsa 4096 bits 0.071341s 0.001157s     14.0     864.3



**** Résultats sur un des RPi2 du cluster ****

[rpi2 ~]# openssl speed rsa -multi 1
================= RPi2 1x1Ghz ======================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.001373s 0.000109s    741.4    9259.0
rsa 1024 bits 0.006555s 0.000340s    152.5    2940.4
rsa 2048 bits 0.043712s 0.001256s     22.9     797.4
rsa 4096 bits 0.312812s 0.004840s      3.2     206.6


[rpi2 ~]# openssl speed rsa -multi 4
================= RPi2 4x1Ghz ======================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000342s 0.000027s   2923.9   36613.4
rsa 1024 bits 0.001644s 0.000085s    608.1   11721.2
rsa 2048 bits 0.010966s 0.000315s     91.2    3179.8
rsa 4096 bits 0.078496s 0.001213s     12.7     824.4



On constate que le RPi3 apporte bien un gain de vitesse souvent de plus de 20% sur le calcul pur. Donc avec un Linux 32 bits (ARMv7) on a l'avantage de la vitesse sans avoir besoin de plus de mémoire. Il n'est donc pas sur qu'un linux 64 bits (ARMv8) soir vraiment utile. 
Le gain en calcul pur est malheureusement noyé dans le fait que tout le reste est à la même vitesse sur un RPi2 et RPi3. On aurait plus besoin de 2 Go de RAM et d'un port Giga Ethernet. (Comme sur le ODROID-C2). 

Donc, si on devait faire un upgrade ce serait plus pour un odroid-c2 qu'un RPi3 !


**** Résultats sur un intel i7 3.1Ghz ****

[i7 ~]# openssl speed rsa -multi 1
================= i7-4770S 1x3.1Ghz ================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000041s 0.000003s  24187.4  297005.8
rsa 1024 bits 0.000162s 0.000009s   6158.7  114694.3
rsa 2048 bits 0.000980s 0.000029s   1020.9   34625.3
rsa 4096 bits 0.007335s 0.000108s    136.3    9241.4



[i7 ~]# openssl speed rsa -multi 4
================= i7-4770S 4x3.1Ghz ================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000012s 0.000001s  86956.5 1000000.0
rsa 1024 bits 0.000046s 0.000003s  21831.1  400000.0
rsa 2048 bits 0.000273s 0.000008s   3659.7  120320.9
rsa 4096 bits 0.002098s 0.000032s    476.6   31564.4



[i7 ~]# openssl speed rsa -multi 8
================= i7-4770S 8x3.1Ghz ================
                  sign    verify    sign/s  verify/s
rsa  512 bits 0.000011s 0.000001s  93570.5 1089285.7
rsa 1024 bits 0.000047s 0.000003s  21498.2  400000.0
rsa 2048 bits 0.000276s 0.000008s   3617.7  125000.0
rsa 4096 bits 0.002074s 0.000030s    482.1   33773.2


Pour voir la fréquence d'horloge en temps réel:
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq


Benchmarks officiels: https://www.raspberrypi.org/magpi/raspberry-pi-3-specs-benchmarks/

1 commentaire:

Markus a dit…

Bonjour, je viens de découvrir votre blog que je trouve intéressant et merci du partage.
Je possède une rpi2 avec lequel j'apprends et découvre plein de chose (en ce moment c'est apache2, html et css en mode bac a sable).. le cluster j'geek mais j'ignore complètement se que sa apporte de façon concrète. Sa permet d'aller (par exemple) sur ubuntu mate et de lancer des applications de façon plus fluide? ..
Si je devrais changer de modèle, je pencherai plus sur la OrangePi Plus2 car elle possède un port sata qui peux être intéressant. Vous en penser quoi? un prochain article? :p

Enregistrer un commentaire