Go to file
Thomas De Schampheleire b7939fe2a0 core: introduce BR2_ENABLE_RUNTIME_DEBUG
Some packages have optional runtime assertions, extra traces, or other
elements that can help in debugging problems. However, such runtime elements
can negatively influence performance.

In a test program performing 100K gRPC calls from a client to a local server
and receiving the returned response, we see following execution time:

    - runtime debug enabled: 1065 seconds
    - runtime debug disabled:  48 seconds

This is more than a factor 20 (!) difference. Analysis shows that the
problem mostly stems from libabseil-cpp (a dependency of gRPC) which enables
mutex deadlock analysis when the preprocessor flag 'NDEBUG' is not set,
which adds a 'backtrace()' call on every lock/unlock.  Potentially worse,
when libunwind is enabled and linked with the test program, 'backtrace()' is
not provided by glibc but by libunwind itself.

For production systems, users expect good performance out-of-the-box. In the
example above, the difference is huge and unless explicitly tested and
analyzed, users may not realize that the performance could be much better.

Address this problem by introducing a new option BR2_ENABLE_RUNTIME_DEBUG,
which can be used by packages or package infrastructures to set the
necessary flags.

Note that BR2_ENABLE_RUNTIME_DEBUG is orthogonal to BR2_ENABLE_DEBUG: the
former changes runtime behavior, while the latter is only expected to add
debug symbols to the build. Today, the cmake build system does introduce a
runtime impact when BR2_ENABLE_DEBUG is set, but that will be rectified in a
subsequent commit.

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Reviewed-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2021-06-01 22:39:23 +02:00
arch
board board/raspberrypi: add Compute Module 4/IO Board support (64 Bit) 2021-05-20 09:53:30 +02:00
boot boot/arm-trusted-firmware: bump to version 2.5 2021-05-21 11:43:54 +02:00
configs boot/arm-trusted-firmware: bump to version 2.5 2021-05-21 11:43:54 +02:00
docs Update for 2021.05-rc1 2021-05-12 10:49:31 +02:00
fs fs/cpio: add zstd as compression option 2021-01-16 22:45:34 +01:00
linux {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 11, 12}.x series 2021-05-10 08:31:58 +02:00
package package/{hostapd,wpa_supplicant}: alphabetical order to select openssl features 2021-05-27 17:35:52 +02:00
support support/testing: add python-dbus-next test 2021-05-19 16:41:10 +02:00
system
toolchain toolchain: introduce BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 2021-04-26 21:52:34 +02:00
utils utils/scanpypi: use python3 explicitly 2021-02-20 17:42:46 +01:00
.defconfig
.flake8
.gitignore
.gitlab-ci.yml
CHANGES Update for 2021.05-rc1 2021-05-12 10:49:31 +02:00
Config.in core: introduce BR2_ENABLE_RUNTIME_DEBUG 2021-06-01 22:39:23 +02:00
Config.in.legacy package/monkey: drop package 2021-05-08 23:16:45 +02:00
COPYING
DEVELOPERS package/python-pymupdf: new package. 2021-05-26 22:04:36 +02:00
Makefile Update for 2021.05-rc1 2021-05-12 10:49:31 +02:00
Makefile.legacy
README

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches