-
Notifications
You must be signed in to change notification settings - Fork 4
/
changelog
104 lines (95 loc) · 4.63 KB
/
changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
0.11.0 to 0.11.1 (15/03/2023)
* Enable automatic releasing to GITHub
0.10.1 to 0.11.0 (13/03/2023)
* JITDump support
* Fix crash when using custom stack (example: Fibers)
* Fix tag validation
0.9.3 to 0.10.1 (14/11/2022)
* Allocation profiling - instrument forks
* Universal binary - remove dependency on libc
This allows compatibility with older libc (like centos 7)
* Formalize tracepoint grammar
* Add build-id to mapping information
* Use a temporary file to generate a library to load
* Switch user if failing to read /proc/<pid>/maps
* Changes in instrumentation mechanisms
Periodically check for new loaded libraries
Use GOT override instead of symbol interposition
* Add information on lost events
When ring buffer is full we flag them as "lost events".
* Use jemalloc as default allocator
This prevents a counter-performance on musl compilations
0.8.2 to 0.9.3 (08/08/2022)
* Allocation profiling
Library mode and wrapper mode have an option to instrument allocations with low overhead.
Limitation: This only works for dynamically linked allocators (example: standard allocator) and does not follow forks. If you are concerned by these limitations, please reach out with your requirements.
* Samples are labeled with PID / TID
* Preset option : adds defined presets to simplify configuration of the profiler (cpu_only, alloc_only)
* Catch kernel activity (when permissions allow it)
* Several improvements to unwinding
* Alpine musl (built on 3.16)
0.8.1 to 0.8.2 (14/04/2022)
* Correctly convert Watcher frequency to pprof period (for time-based
frequency)
* Added general tracepoint support, allowing users to attach to uprobes,
kprobes, and other instrumentable tracing interfaces. This feature is
undocumented, pending support in the Datadog Profiling product.
* Apart from software-based CPU time, all other events now get uploaded as a
tracepoint type
0.8.0 to 0.8.1 (18/03/2022)
* Remove dependency on libstdc++ in library mode
0.7.0 to 0.8.0 (09/03/2022)
* Remove usage of libdwfl internals
* Free inconsistent dwfl modules
We can come into situations where DSOs don't match the dwfl objects.
In this situation we can free all of the PID objects to ensure we will
reload all DSOs and all dwfl objects at the next sample
* Minor fixes for global mode
* Multiple updates in build system
Support ninja, import llvm to a third party directory, compile in c++20,
setup third parties during configure step.
* Library mode
Deliver profiler as static and shared libraries. DDProf is embedded in the library.
The library daemonizes ddprof. Check out our internal documentation.
* Ensure we export the data gathered at the end of the process's lifetime
This also ensure we export data for short lived processes
* Improved management of signals
SIGTERM and SIGINT now properly end the application
* ARM support
0.6.4 to 0.7.0 (19/01/2022)
* Asynchronous HTTP exports
- Reduces lost events while exporting
* Support clang builds
* Whole host profiling
- Add support to locate files through /proc
* Support url option
0.6.3 to 0.6.4 (06/10/2021)
* Virtual Base frames : Ensure all frames are attached to a base frame
* Explain Unwinding errors through virtual frames (ex: anonymous regions)
* Unwinding fixes (for all processes that fork / global mode)
- Differentiate dwfl caches per PID
- Link symbol cache entries to the lifetime of a DSO
* Improve instrumentation sequence : avoids missing initial frames
- Wait for instrumentation (perf event open) before launching the process
* Build and test different libc versions : added 2.27
* Unwinding fix : Fix check on dwfl_attach_state result
* Support Tags in profiles
- Add custom tags through input options
- Get information on number of CPUs and hw threads in profile tags
0.6.2 to 0.6.3 (28/09/2021)
* Add LTO to build process
* Add _executable flag to DSO cache
* DSO cache is populated with all regions, not just executable ones
* Add PID-by-PID throttling to DSO backpopulate requests, since these requests
are numerous, expensive, and beyond a single invocation per sample, do not
improve unwinding quality--the throttle limits backpopulate to the soonest
of once very 200 samples or once per export
* Fix bug where the lifetime of an mmap()'d region was bound to the lifetime
of the RegionHolder temporary, causing DSO reads to fail
* Resequence the setuid() mmap maneuver so that an mmap() is attempted with
current UID before switching
* Filter PID 0 before it hits any of the ddprof worker functions, since we
currently don't handle it at all
* Fix buggy exit in application start when an invalid argument is given
* Add an overflow check to the unwinding memory_read interface
* Add some backpopulate and region holder unit tests