ARM improvements in 2020

2020 has seen quite a few developments with the ARM architecture. For MariaDB things are no different. First we have expanded our testing infrastructure to cover more Linux distributions (Debian, Ubuntu, Fedora, CentOS, RedHat) on ARM and we are now building packages for all of them. The next MariaDB release will include additional binary tarballs for ARM distributions, in addition to the already existing RPM and DEB packages.

All this could not be accomplished without the help of Huawei, who have donated several ARM builders to our effort. We strongly believe that only by testing on as many different platforms as possible, with as many different compilers as possible we can guarantee MariaDB’s performance and stability. Side note, we are still missing SPARC hardware, if you happen to have one available, let us know. 😉

Additionally we want to thank Krunal Bauskar, Gu Yuqi and Tsahi Zidenberg for contributing performance enhancements and bug fixes targeting ARM.

To get the best possible performance, code should be written taking into account the underlying hardware. This is why performance critical code makes use of native instructions where possible. Such a case is computing crc32c checksums, contributed through PR 772 by Gu Yuqi. Krunal’s work of PR 1558 builds on top of that by unifying crc32 libraries and ensuring efficient SIMD (Single Instruction, Multiple Data) wrappers where possible. Additionally, certain tasks such as instrumenting code or timing related function calls require very precise timers. With the addition of native ARM code, my_timer_cycles() implements a precise hardware timer. This was contributed through PR 1620, alongside compiler flags to improve atomic operations performance.

With this said, we appreciate the community’s involvement in making sure MariaDB takes advantage of all hardware features available and we look forward to getting many more!

Thank you!