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 }"
Further Readings
umpf - Git on a New Level
Modern software development is commonly accompanied by a version control system like Git in order to have changes to the source code being documented in a traceable manner. Furthermore, any version state should be easily reproducible at any time. However, for work on complex projects such as the BSP ("Board Support Package") of an embedded system with its multiple development aspects, the simple stacking of the individual changes on top of each other does not scale.
Pengutronix Kernel Contributions in 2021
2022 has started, and although Corona had a huge impact on our workflow, the Pengutronix team again made quite some contributions to the Linux kernel. The last kernel release in 2020 was 5.10, the last one in 2021 was 5.15, so let's have a look at what happened in between.
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