llvm-project/compiler-rt/lib/xray
Dean Michael Berris 25d505953a [XRay] Use preallocated memory for XRay profiling
Summary:
This change builds upon D54989, which removes memory allocation from the
critical path of the profiling implementation. This also changes the API
for the profile collection service, to take ownership of the memory and
associated data structures per-thread.

The consolidation of the memory allocation allows us to do two things:

- Limits the amount of memory used by the profiling implementation,
  associating preallocated buffers instead of allocating memory
  on-demand.

- Consolidate the memory initialisation and cleanup by relying on the
  buffer queue's reference counting implementation.

We find a number of places which also display some problematic
behaviour, including:

- Off-by-factor bug in the allocator implementation.

- Unrolling semantics in cases of "memory exhausted" situations, when
  managing the state of the function call trie.

We also add a few test cases which verify our understanding of the
behaviour of the system, with important edge-cases (especially for
memory-exhausted cases) in the segmented array and profile collector
unit tests.

Depends on D54989.

Reviewers: mboerger

Subscribers: dschuff, mgorny, dmgreen, jfb, llvm-commits

Differential Revision: https://reviews.llvm.org/D55249

llvm-svn: 348568
2018-12-07 06:23:06 +00:00
..
tests [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
CMakeLists.txt [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
weak_symbols.txt [XRay][compiler-rt][Darwin] Minimal XRay build support in Darwin 2017-11-28 11:49:22 +00:00
xray_AArch64.cc [XRay][compiler-rt] Add noop patch functions for unsupported arches. 2018-04-17 23:19:23 +00:00
xray_allocator.h [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_always_instrument.txt [XRay][compiler-rt][NFC] Add example always/never instrument files. 2017-06-28 04:44:36 +00:00
xray_arm.cc [XRay][compiler-rt] Add noop patch functions for unsupported arches. 2018-04-17 23:19:23 +00:00
xray_basic_flags.cc [XRay][compiler-rt] Support string-based config for Basic mode. 2018-05-04 06:27:53 +00:00
xray_basic_flags.h [XRay][compiler-rt] Support string-based config for Basic mode. 2018-05-04 06:27:53 +00:00
xray_basic_flags.inc [XRay][compiler-rt] Support string-based config for Basic mode. 2018-05-04 06:27:53 +00:00
xray_basic_logging.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_basic_logging.h [XRay][compiler-rt] Support string-based config for Basic mode. 2018-05-04 06:27:53 +00:00
xray_buffer_queue.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_buffer_queue.h [XRay] Move buffer extents back to the heap 2018-11-20 01:00:26 +00:00
xray_defs.h [XRay][compiler-rt] Disable XRay instrumentation of the XRay runtime. 2016-11-16 01:01:13 +00:00
xray_fdr_controller.h [XRay] Move buffer extents back to the heap 2018-11-20 01:00:26 +00:00
xray_fdr_flags.cc [XRay][compiler-rt] Support string-based config for FDR mode 2018-05-04 06:13:35 +00:00
xray_fdr_flags.h [XRay][compiler-rt] Support string-based config for FDR mode 2018-05-04 06:13:35 +00:00
xray_fdr_flags.inc [XRay][compiler-rt] Support in-memory processing of FDR mode logs 2018-05-14 03:35:01 +00:00
xray_fdr_log_records.h [XRay][compiler-rt] FDRLogWriter Abstraction 2018-09-20 05:22:37 +00:00
xray_fdr_log_writer.h [XRay] Move buffer extents back to the heap 2018-11-20 01:00:26 +00:00
xray_fdr_logging.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_fdr_logging.h [XRay] [compiler-rt] FDR logging arg1 handler 2017-09-28 05:29:59 +00:00
xray_flags.cc [XRay][compiler-rt] Support string-based config for FDR mode 2018-05-04 06:13:35 +00:00
xray_flags.h [XRay][compiler-rt] Support string-based config for FDR mode 2018-05-04 06:13:35 +00:00
xray_flags.inc [XRay][compiler-rt] Support string-based config for Basic mode. 2018-05-04 06:27:53 +00:00
xray_function_call_trie.h [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_init.cc Prioritize the constructor call of __local_xray_dyninit() 2018-11-06 10:59:21 +00:00
xray_interface.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_interface_internal.h Implement trampoline and handler for typed xray event tracing. 2018-04-17 21:28:53 +00:00
xray_log_interface.cc [XRay][compiler-rt] Remove __sanitizer:: from namespace __xray (NFC) 2018-06-05 06:12:42 +00:00
xray_mips.cc [XRay][compiler-rt] Add noop patch functions for unsupported arches. 2018-04-17 23:19:23 +00:00
xray_mips64.cc [XRay][compiler-rt] Add noop patch functions for unsupported arches. 2018-04-17 23:19:23 +00:00
xray_never_instrument.txt [XRay][compiler-rt][NFC] Add example always/never instrument files. 2017-06-28 04:44:36 +00:00
xray_powerpc64.cc [XRay][compiler-rt] Add noop patch functions for unsupported arches. 2018-04-17 23:19:23 +00:00
xray_powerpc64.inc Re-commit r295017, since we have a potential fix of the tests, r295248, landed. 2017-02-15 22:40:29 +00:00
xray_profile_collector.cc [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_profile_collector.h [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_profiling.cc [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_profiling_flags.cc [XRay][profiler] Part 4: Profiler Mode Wiring 2018-06-12 03:29:39 +00:00
xray_profiling_flags.h [XRay][profiler] Part 4: Profiler Mode Wiring 2018-06-12 03:29:39 +00:00
xray_profiling_flags.inc [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_recursion_guard.h [XRay][compiler-rt] Refactor recursion guard for Basic and FDR Mode 2018-06-06 06:07:48 +00:00
xray_segmented_array.h [XRay] Use preallocated memory for XRay profiling 2018-12-07 06:23:06 +00:00
xray_trampoline_AArch64.S Add NO_EXEC_STACK_DIRECTIVE to xray assembly files. 2017-03-15 21:18:47 +00:00
xray_trampoline_arm.S Add NO_EXEC_STACK_DIRECTIVE to xray assembly files. 2017-03-15 21:18:47 +00:00
xray_trampoline_mips.S [Compiler-rt][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:54:09 +00:00
xray_trampoline_mips64.S [Compiler-rt][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:54:09 +00:00
xray_trampoline_powerpc64.cc Re-commit r295017, since we have a potential fix of the tests, r295248, landed. 2017-02-15 22:40:29 +00:00
xray_trampoline_powerpc64_asm.S [XRay] Fix XRay PPC return value bug. 2017-05-10 16:28:21 +00:00
xray_trampoline_x86_64.S [XRay][compiler-rt] Stash flags as well in x86_64 trampoline 2018-08-28 10:32:50 +00:00
xray_tsc.h [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_utils.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_utils.h [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_x86_64.cc [XRay] Support for Fuchsia 2018-11-22 02:00:44 +00:00
xray_x86_64.inc Add Xray instrumentation support to FreeBSD 2018-02-15 14:17:15 +00:00