Major memory performance decline from u-boot to barebox
Enrico Scholz
enrico.scholz at sigma-chemnitz.de
Mon Jul 8 03:22:52 PDT 2024
Hello,
I have a karo tx6s module (imx6s, 512 MiB RAM) which is shipped with an
ancient u-boot 2015 bootloader.
barebox 2024.07 works out-of-the box on it. But under the booted linux
system a see a major regression in memory performance.
E.g. u-boot has
| # hdparm -tT /dev/mmcblk3
| Timing cached reads: 1236 MB in 2.00 seconds = 618.46 MB/sec
while barebox shows only
| Timing cached reads: 574 MB in 2.00 seconds = 287.08 MB/sec
Running tinymembench[1] shows that pure memory read operations are not
affected; e.g. both variants report around
| NEON read : 1398.5 MB/s
But write operations differ by a factor of 4-5:
| standard memset : 2054.4 MB/s
on u-boot vs. barebox with
| standard memset : 472.7 MB/s
I modified barebox to use the same DCD like u-boot; resulting MMDC
registers are nearly identical[2]. /sys/kernel/debug/clk/clk_summary
is also nearly the same (only LVDS1_SEL (unused) has another parent).
TZASC is not used. GPRx registers are identical.
Systems are running with linux 6.6 and master on an initrd.
Disabling L2 cache in linux slows down things, but the relative results
are similar (no difference in read, memset 322.3 MB/s -> 728.5 MB/s).
Building barebox with CONFIG_MMU disabled makes no difference.
Looking at another iMX6 system shows similar bad numbers for barebox.
E.g. an iMX6QP has a memset rate of 613.6 MB/s. But I do not have
u-boot available for comparision.
What could be the reason the u-boot is so much faster? Which memory
related settings are carried over from the bootloader to linux? What
could I test else?
Enrico
Footnotes:
[1] https://github.com/ssvb/tinymembench, from OE scarthgap
[2] -0x021b0848: 0x484c494b
+0x021b0848: 0x474b4a4b
-0x021b084c: 0x2a2d2b2c
+0x021b084c: 0x2a2c2c2c
-0x021b0868: 0x791a7e18
+0x021b0868: 0x7a1a7e18
-0x021b086c: 0x7a177e1a
+0x021b086c: 0x78177c1a
- --> barebox, + --> u-boot
More information about the barebox
mailing list