Performance Measurement on ARM
After working mostly with different ARM processors in the 200...400 MHz range in lots of Embedded Linux projects over the last years, we have seen an interesting development in the market recently:
- ARM cpus, having been known for their low power consumption, are becoming faster and faster (example: OMAP3, Beagleboard, MX51/MX53).
- x86, having been known for its high computing performance, is becoming more and more SoC-like, power friendly and slower.
If you read the marketing stuff from the chip manufacturers, it sounds like if ARM is the next x86 (in terms of performance) and x86 is the next ARM (in terms of power consumption). But where do we stand today? How fast are modern ARM derivates?
The Pengutronix Kernel team wanted to know, and so we measured, in order to get some real numbers. Here are the results, and they turn up some interesting questions. Don't take the "observations" below too scientifically - I try to sum up the results in short claims.
As ARM is explicitly a low power architecture, it would have been interesting to measure some "performance vs. power consumption" data. However, as we have done our experiments on board level products, this couldn't be done. Some manufacturers tend to put more peripheral chips on their modules than others, so we would have only measured the effects of the board BoMs.
Test Hardware
In order to find out more about the real speed of today's hardware, we collected some typical industrial hardware in our lab, so this is the list of devices we have benchmarked:
Test Hardware | CPU | Freq. | Core | RAM | Kernel |
---|---|---|---|---|---|
phyCORE-PXA270 | PXA270 (Marvell) | 520 MHz | XScale (ARMv5) | SDRAM | 2.6.34 |
phyCORE-i.MX27 | MX27 (Freescale) | 400 MHz | ARM926 (ARMv5) | DDR | 2.6.34 |
phyCORE-i.MX35 | MX35 (Freescale) | 532 MHz | ARM1136 (ARMv6) | DDR2 | 2.6.34 |
O3530-PB-1452 (Texas Instruments) | OMAP3530 | 500 MHz | Cortex-A8 (ARMv7) | DDR | 2.6.34 |
Beagleboard C3 | OMAP3530 | 500 MHz | Cortex-A8 (ARMv7) | DDR | 2.6.34 |
phyCORE-Atom | Z510 (Intel) | 1100 MHz | Atom | DDR2 | 2.6.34 |
LMbench command lines
lat_ops
root@target:~ lat_ops 2>&1
filtered by
grep "^float mul:" | cut -f3 -d" "
bw_mem
root@target:~ list="rd wr rdwr cp fwr frd bzero bcopy"; \
for i in $list; \
do echo -en "$i\t"; done; \
echo; \
for i in $list; \
do res=$(bw_mem 33554432 $i 2>&1 | awk "{print \$2}"); \
echo -en "$res\t"; done; \
echo MB/Sec
filtered by
awk "/rd\twr\trdwr\tcp\tfwr\tfrd\tbzero\tbcopy/ { getline; print \$3 }"
Weiterführende Links
umpf - Git on a New Level
Moderne Softwareentwicklung ohne begleitende Versionsverwaltung wie Git ist heutzutage unvorstellbar - Änderungen am Quellcode sollen schließlich nachvollziehbar dokumentiert und beliebige Verssionsstände jederzeit einfach reproduziert werden können. Für Arbeiten an komplexeren Projekten wie etwa dem BSP ("Board Support Package") eines eingebetteten Systems mit mehreren Entwicklungssträngen skaliert ein bloßes Aufeinanderstapeln der einzelnen Änderungen jedoch nicht.
Die Pengutronix Kernel-Beiträge in 2021
2022 hat begonnen, und obwohl Corona unsere Workflows stark verändert hat, hat das Pengutronix Team auch in diesem Jahr wieder etliche Beiträge zum Linux-Kernel geleistet. Das letzte Kernel-Release in 2020 war 5.10, das letzte in 2021 war 5.15 - schauen wir also, was sich dazwischen bei uns getan hat.
Pengutronix at FOSDEM 2021
"FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. In 2021, they will gather online." -- FOSDEM