Skip to content

Commit

Permalink
Remove unneeded async-profiler functionality (1/n)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbachorik committed Dec 14, 2022
1 parent 81ce34d commit edbc556
Show file tree
Hide file tree
Showing 79 changed files with 221 additions and 4,548 deletions.
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ trigger_internal_build:
AP_SHORT_COMMIT_SHA: ${CI_COMMIT_SHORT_SHA}
AP_COMMIT_TAG: ${CI_COMMIT_REF_NAME}
trigger:
project: DataDog/async-profiler-build
project: DataDog/java-profiler-build
strategy: depend
branch: $DOWNSTREAM_BRANCH
328 changes: 1 addition & 327 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,328 +1,2 @@
# Changelog

## [2.8.3] - 2022-07-16

### Improvements
- Support virtualized ARM64 macOS
- A switch to generate auxiliary events by async-profiler or FlightRecorder in jfrsync mode

### Bug fixes
- Could not recreate perf_events after the first failure
- Handle different versions of Zing properly
- Do not call System.loadLibrary, when libasyncProfiler is preloaded

## [2.8.2] - 2022-07-13

### Bug fixes
- The same .so works with glibc and musl
- dlopen hook did not work on Arch Linux
- Fixed JDK 7 crash
- Fixed CPU profiling on Zing

### Changes
- Mark interpreted frames with `_[0]` in collapsed output
- Double click selects a method name on a flame graph

## [2.8.1] - 2022-06-10

### Improvements
- JFR to pprof converter (contributed by @NeQuissimus)
- JFR converter improvements: time range, collapsed output, pattern highlighting
- `%n` pattern in file names; limit number of output files
- `--lib` to customize profiler library path in a container
- `profiler.sh list` command now works without PID

### Bug fixes
- Fixed crashes related to continuous profiling
- Fixed Alpine/musl compatibility issues
- Fixed incomplete collapsed output due to weird locale settings
- Workaround for JDK-8185348

## [2.8] - 2022-05-09

### Features
- Mark top methods as interpreted, compiled (C1/C2), or inlined
- JVM TI based allocation profiling for JDK 11+
- Embedded HTTP management server

### Improvements
- Re-implemented stack recovery for better reliability
- Add `loglevel` argument
- Do not mmap perf page in `--all-user` mode
- Distinguish runnable/sleeping threads in OpenJ9 wall-clock profiler
- `--cpu` converter option to extract CPU profile from the wall-clock output

## [2.7] - 2022-02-14

### Features
- Experimental support for OpenJ9 VM
- DWARF stack unwinding

### Improvements
- Better handling of VM threads (fixed missing JIT threads)
- More reliable recovery from `not_walkable` AGCT failures
- Do not accept unknown agent arguments

## [2.6] - 2022-01-09

### Features
- Continuous profiling; `loop` and `timeout` options

### Improvements
- Reliability improvements: avoid certain crashes and deadlocks
- Smaller and faster agent library
- Minor `jfr` and `jfrsync` enhancements (see the commit log)

## [2.5.1] - 2021-12-05

### Bug fixes
- Prevent early unloading of libasyncProfiler.so
- Read kernel symbols only for perf_events
- Escape backslashes in flame graphs
- Avoid duplicate categories in `jfrsync` mode
- Fixed stack overflow in RedefineClasses
- Fixed deadlock when flushing JFR

### Improvements
- Support OpenJDK C++ Interpreter (aka Zero)
- Allow reading incomplete JFR recordings

## [2.5] - 2021-10-01

### Features
- macOS/ARM64 (aka Apple M1) port
- PPC64LE port (contributed by @ghaug)
- Profile low-privileged processes with perf_events (contributed by @Jongy)
- Raw PMU events; kprobes & uprobes
- Dump results in the middle of profiling session
- Chunked JFR; support JFR files larger than 2 GB
- Integrate async-profiler events with JDK Flight Recordings

### Improvements
- Use RDTSC for JFR timestamps when possible
- Show line numbers and bci in Flame Graphs
- jfr2flame can produce Allocation and Lock flame graphs
- Flame Graph title depends on the event and `--total`
- Include profiler logs and native library list in JFR output
- Lock profiling no longer requires JVM symbols
- Better container support
- Native function profiler can count the specified argument
- An option to group threads by scheduling policy
- An option to prepend library name to native symbols

### Notes
- macOS build is provided as a fat binary that works both on x86-64 and ARM64
- 32-bit binaries are no longer shipped. It is still possible to build them from sources
- Dropped JDK 6 support (may still work though)

## [2.0] - 2021-03-14

### Features
- Profile multiple events together (cpu + alloc + lock)
- HTML 5 Flame Graphs: faster rendering, smaller size
- JFR v2 output format, compatible with FlightRecorder API
- JFR to Flame Graph converter
- Automatically turn profiling on/off at `--begin`/`--end` functions
- Time-to-safepoint profiling: `--ttsp`

### Improvements
- Unlimited frame buffer. Removed `-b` option and 64K stack traces limit
- Additional JFR events: OS, CPU, and JVM information; CPU load
- Record bytecode indices / line numbers
- Native stack traces for Java events
- Improved CLI experience
- Better error handling; an option to log warnings/errors to a dedicated stream
- Reduced the amount of unknown stack traces

### Changes
- Removed non-ASL code. No more CDDL license

## [1.8.4] - 2021-02-24

### Improvements
- Smaller and faster agent library

### Bug fixes
- Fixed JDK 7 crash during wall-clock profiling

## [1.8.3] - 2021-01-06

### Improvements
- libasyncProfiler.dylib symlink on macOS

### Bug fixes
- Fixed possible deadlock on non-HotSpot JVMs
- Gracefully stop profiler when terminating JVM
- Fixed GetStackTrace problem after RedefineClasses

## [1.8.2] - 2020-11-02

### Improvements
- AArch64 build is now provided out of the box
- Compatibility with JDK 15 and JDK 16

### Bug fixes
- More careful native stack walking in wall-clock mode
- `resume` command is not compatible with JFR format
- Wrong allocation sizes on JDK 8u262

## [1.8.1] - 2020-09-05

### Improvements
- Possibility to specify application name instead of `pid` (contributed by @yuzawa-san)

### Bug fixes
- Fixed long attach time and slow class loading on JDK 8
- `UnsatisfiedLinkError` during Java method profiling
- Avoid reading `/proc/kallsyms` when `--all-user` is specified

## [1.8] - 2020-08-10

### Features
- Converters between different output formats:
- JFR -> nflx (FlameScope)
- Collapsed stacks -> HTML 5 Flame Graph

### Improvements
- `profiler.sh` no longer requires bash (contributed by @cfstras)
- Fixed long attach time and slow class loading on JDK 8
- Fixed deadlocks in wall-clock profiling mode
- Per-thread reverse Flame Graph and Call Tree
- ARM build now works with ARM and THUMB flavors of JDK

### Changes
- Release package is extracted into a separate folder

## [1.7.1] - 2020-05-14

### Features
- LBR call stack support (available since Haswell)

### Improvements
- `--filter` to profile only specified thread IDs in wall-clock mode
- `--safe-mode` to disable selected stack recovery techniques

## [1.7] - 2020-03-17

### Features
- Profile invocations of arbitrary Java methods
- Filter stack traces by the given name pattern
- Java API to filter monitored threads
- `--cstack`/`--no-cstack` option

### Improvements
- Thread names and Java thread IDs in JFR output
- Wall clock profiler distinguishes RUNNABLE vs. SLEEPING threads
- Stable profiling interval in wall clock mode
- C++ function names as events, e.g. `-e VMThread::execute`
- `check` command to test event availability
- Allow shading of AsyncProfiler API
- Enable CPU profiling on WSL
- Enable allocation profiling on Zing
- Reduce the amount of `unknown_Java` samples

## [1.6] - 2019-09-09

### Features
- Pause/resume profiling
- Allocation profiling support for JDK 12, 13 (contributed by @rraptorr)

### Improvements
- Include all AsyncGetCallTrace failures in the profile
- Parse symbols of JNI libraries loaded in runtime
- The agent autodetects output format by the file extension
- Output file name patterns: `%p` and `%t`
- `-g` option to print method signatures
- `-j` can increase the maximum Java stack depth
- Allocaton sampling rate can be adjusted with `-i`
- Improved reliability on macOS

### Changes
- `-f` file names are now relative to the current shell directory

## [1.5] - 2019-01-08

### Features
- Wall-clock profiler: `-e wall`
- `-e itimer` mode for systems that do not support perf_events
- Native stack traces on macOS
- Support for Zing runtime, except allocation profiling

### Improvements
- `--all-user` option to allow profiling with restricted
`perf_event_paranoid` (contributed by @jpbempel)
- `-a` option to annotate method names
- Improved attach to containerized and chroot'ed JVMs
- Native function profiling now accepts non-public symbols
- Better mapping of Java thread names (contributed by @KirillTim)

### Changes
- Changed default profiling engine on macOS
- Fixed the order of stack frames in JFR format

## [1.4] - 2018-06-24

### Features
- Interactive Call tree and Backtrace tree in HTML format (contributed by @rpulle)
- Experimental support for Java Flight Recorder (JFR) compatible output

### Improvements
- Added units: `ms`, `us`, `s` and multipliers: `K`, `M`, `G` for interval argument
- API and command-line option `-v` for profiler version
- Allow profiling containerized JVMs on older kernels

### Changes
- Default CPU sampling interval reduced to 10 ms
- Changed the text format of flat profile

## [1.3] - 2018-05-13

### Features
- Profiling of native functions, e.g. malloc

### Improvements
- JDK 9, 10, 11 support for heap profiling with accurate stack traces
- `root` can now profile Java processes of any user
- `-j` option for limiting Java stack depth

## [1.2] - 2018-03-05

### Features
- Produce SVG files out of the box; flamegraph.pl is no longer needed
- Profile ReentrantLock contention
- Java API

### Improvements
- Allocation and Lock profiler now works on JDK 7, too
- Faster dumping of results

### Changes
- `total` counter of allocation profiler now measures heap pressure (like JMC)

## [1.1] - 2017-12-03

### Features
- Linux Perf Events profiling: CPU cycles, cache misses, branch misses, page faults, context switches etc.
- Kernel tracepoints support
- Contended monitor (aka intrinsic lock) profiling
- Individual thread profiles

### Improvements
- Profiler can engage at JVM start and automatically dump results on exit
- `list` command-line option to list supported events
- Automatically find target process ID with `jps` tool
- An option to include counter value in `collapsed` output
- Friendly class names in allocation profile
- Split allocations in new TLAB vs. outside TLAB

### Changes
- Replaced `-m` modes with `-e` events
- Interval changed from `int` to `long`

## [1.0] - 2017-10-09

### Features
- CPU profiler without Safepoint bias
- Lightweight Allocation profiler
- Java, native and kernel stack traces
- FlameGraph compatible output
!TODO!

0 comments on commit edbc556

Please sign in to comment.