Raspberry Pi 3: 32-Bit vs. 64-Bit

Der Raspberry Pi 3 besitzt bekanntlich eine 64-Bit CPU. Von Raspbian gibt es bisher (noch) kein Image mit 64-Bit Kernel. Ich habe zwei Images mit 32-Bit Kernel und drei Images mit 64-Bit Kernel getestet.

  • Raspbian Stretch Lite 2017-11-29 (Kernel 4.9)
  • Raspbian Stretch Lite 2017-11-29 (Kernel 4.14.16-v7+ armv7l)
  • Raspbian Stretch Lite 2017-11-29 (Kernel 4.14.16-v8+ aarch64)
  • Debian Stretch arm64 Unoffical (Kernel 4.9.0-4-arm64 aarch64)

Hinweis: Die beiden Kernel 4.14.16 habe ich in einer VM kompiliert (Stichwort Cross Compiling) und in ein vorhandenes Raspbian Stretch Lite Image intigriert.

Getestet habe ich mit sysbench und dem nachfolgenden Befehl:

sysbench --test=cpu --num-threads=4 --cpu-max-prime=20000 run

Nachfolgend die Ergebnisse:

Raspbian Stretch Lite 2017-11-29 (Kernel 4.9)

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          92.5824s
    total number of events:              10000
    total time taken by event execution: 370.2478
    per-request statistics:
         min:                                 36.89ms
         avg:                                 37.02ms
         max:                                130.52ms
         approx.  95 percentile:              37.08ms

Threads fairness:
    events (avg/stddev):           2500.0000/5.52
    execution time (avg/stddev):   92.5620/0.01

Raspbian Stretch Lite 2017-11-29 (Kernel 4.14.16-v7+ armv7l)

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          92.7889s
    total number of events:              10000
    total time taken by event execution: 371.1020
    per-request statistics:
         min:                                 36.89ms
         avg:                                 37.11ms
         max:                                132.37ms
         approx.  95 percentile:              37.30ms

Threads fairness:
    events (avg/stddev):           2500.0000/9.82
    execution time (avg/stddev):   92.7755/0.01

Raspbian Stretch Lite 2017-11-29 (Kernel 4.14.16-v8+ aarch64)

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          93.8743s
    total number of events:              10000
    total time taken by event execution: 375.4413
    per-request statistics:
         min:                                 37.42ms
         avg:                                 37.54ms
         max:                                 95.34ms
         approx.  95 percentile:              37.58ms

Threads fairness:
    events (avg/stddev):           2500.0000/1.73
    execution time (avg/stddev):   93.8603/0.01

Debian Stretch arm64 Unoffical (Kernel 4.9.0-4-arm64 aarch64)

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          15.2979s
    total number of events:              10000
    total time taken by event execution: 61.1687
    per-request statistics:
         min:                                  6.03ms
         avg:                                  6.12ms
         max:                                 21.37ms
         approx.  95 percentile:               6.29ms

Threads fairness:
    events (avg/stddev):           2500.0000/46.67
    execution time (avg/stddev):   15.2922/0.00

Interessant ist für uns ist hierbei die Total Time. Diese liegt bei den Raspbian Stretch Images, welche die armhf Pakete nutzen, immer über 90 Sekunden. Bei dem Image welches die arm64 Pakete nutzt beträgt die Total Time knapp über 15 Sekunden. Hierfür gibt es eine, zu mindest nach meiner Ansicht, logische Erklärung:

Der Raspberry Pi 1 A/B/B+, Raspberry Pi Zero (W) und der Raspberry Pi 2 B besitzen alle einen 32-Bit Prozessor auf Basis von ARMv6 oder ARMv7 (nur Raspberry Pi 2 B v1.1). Der Raspberry Pi 3 und der Raspberry Pi 2 B v1.2 besitzen jedoch eine 64-Bit CPU, unter Raspbian läuft diese aber nur im 32-Bit Modus und es werden die armhf Pakete verwendet. Dies wird wahrscheinlich (noch) aus Kompatibilitätsgründen gemacht und um unerfahrene Nutzer nicht zu verwirren welche Version sie von Raspbian benötigen. Wie man aber sieht ist es möglich den Raspberry Pi 3 im 64-Bit Modus zu betreiben. Ein Image speziell für den Raspberry Pi 3 bereitzustellen, welches einen 64-Bit Kernel besitzt und die arm64 Pakete nutzt, sollte eigentlich nicht so schwer sein, denn der Support seitens Debian und dem Linux Kernel ist hierfür vorhanden. Wie man sieht kann man so der 64-Bit CPU des Raspberry Pi 3 ihr volles Potenzial „entlocken“. Die Frage ist nur ob dies auch sinnvoll ist.

Wie seht ihr das? Lasst uns gerne in den Kommentaren darüber reden.

Anzeige


wallpaper-1019588
“MANHWA – Klassiker für Kids” erscheinen bei Ullmann Medien
wallpaper-1019588
Quality Assurance in Another World: Konkreter Starttermin bekannt + Interpreten der Theme-Songs
wallpaper-1019588
[Comic] Geschichten aus dem Hellboy Universum [13]
wallpaper-1019588
Ikoku Nikki: Anime-Adaption angekündigt + Teaser