276 lines
11 KiB
Plaintext
276 lines
11 KiB
Plaintext
build 11421629 (Feb 8, 2024)
|
|
inject command:
|
|
Support converting LBR profiles to AutoFDO format
|
|
list command:
|
|
Use event_table.json to config raw events supported on different cpu models, and read
|
|
/proc/cpuinfo to know cpu models on device. As a result, we can precisely report raw
|
|
events supported on different cpu cores.
|
|
record/stat command:
|
|
Support monitoring different events on different cores using --cpu
|
|
Use thousand groups when reporting sample counts
|
|
record command:
|
|
Add --delay to delay recording samples
|
|
Add --record-timestamp and --record-cycles to record timestamps and cpu-cycles with ETM data
|
|
Add --cycle-threshold for ETM cycle count packets
|
|
Support reading symbols from DEX files in memory
|
|
Support starting simpleperf at early-init when boot profiling, as in android_platform_profiling.md
|
|
stat command:
|
|
Add --tp-filter and --kprobe to improve tracepoint event counting
|
|
app_profiler.py:
|
|
Add app versioncode in record file
|
|
Add --launch to start an app with its package name
|
|
report scripts:
|
|
Add --cpu to filter samples based on CPUs
|
|
Add ipc.py to capture instructions per cycle of the system
|
|
Support profiles generated by the report-sample command
|
|
Add sample_filter.py to split large record files
|
|
gecko_profile_generator.py:
|
|
Add --percpu-samples to show samples grouped by CPUs
|
|
report_html.py:
|
|
Support parsing kernel disassembly in scripts
|
|
Speed up generating disassembly
|
|
Sort functions by names in flamegraph
|
|
|
|
|
|
build 10661963 (Aug 16, 2023)
|
|
report-sample command: Remove small stack gaps to get a smoother view in Stack Chart.
|
|
Use prebult libsimpleperf_readelf (provided by Android clang prebuilts) for reading ELF files.
|
|
report_html.py: Speed up disassembling many functions in a binary.
|
|
|
|
|
|
build 10306210 (Jun 12, 2023)
|
|
record cmd: Add --decode-etm to decode ETM data while recording.
|
|
It saves the space storing raw ETM data.
|
|
Store lost/cut record info in recording file.
|
|
Report lost samples in kernel space and user space.
|
|
inject cmd: Accept missing aux data.
|
|
Add build id in AutoFDO output.
|
|
gecko_profile_generatory.py: color off-cpu frames blue and jit app cache frames green.
|
|
|
|
|
|
build 9796343 (March 22, 2023)
|
|
Fix dozens of security bugs detected by fuzzer.
|
|
record cmd:
|
|
Increase the default user buffer size from 64M to 256M for devices having >= 4G memory. This is
|
|
to reduce lost samples and incomplete callchains.
|
|
Add --user-buffer-size to adjust the user buffer size.
|
|
record/stat cmd:
|
|
Support using process name regex to select processes via the -p option.
|
|
Raise file desciptors limit to better support "stat --per-thread -a".
|
|
report:
|
|
Support demangling rust symbols.
|
|
Suppress read symbol warnings for not-ELF files.
|
|
Improve deobfuscating Java symbols (ndk issue 1836).
|
|
In report scripts, add --aggregate-threads to merge samples for selected threads.
|
|
In binary_cache_builder.py, support searching for binaries having different names from those
|
|
recorded in perf.data. Also fix a bug supporting native libs embedded in apk.
|
|
In gecko_profile_generator.py, remove small stack gaps to get a smoother view in Stack Chart.
|
|
doc:
|
|
Update doc on the broken DWARF call graph issue.
|
|
Add doc for trying the latest simpleperf builds and scripts.
|
|
|
|
|
|
build 9042912 (Sep 8, 2022)
|
|
Fix adhoc codesign for darwin binaries.
|
|
Release protobuf files in proto directory.
|
|
stat cmd: Update to work with CPU cores having different numbers of PMU counters.
|
|
doc: Update collect_etm_data_for_autofdo.md.
|
|
|
|
|
|
build 8355685 (March 25, 2022)
|
|
1. Add doc for getting boot-time profile, add doc view_the_profile.md.
|
|
2. Share report lib options between scripts.
|
|
|
|
|
|
build 8121221 (Jan 26, 2022)
|
|
1. On Android >= 13, allow an app profiling itself even after device reboot.
|
|
The permission expiration time can be set by --days in api_profiler.py.
|
|
2. Improve --trace-offcpu in record cmd to support multiple report modes: pure on cpu samples,
|
|
pure on-cpu samples, or both on-cpu and off-cpu samples.
|
|
3. Add --add-counter in record cmd to add additional event counts in samples.
|
|
4. Add --filter-file in report cmds and scripts to filter samples based on timestamps.
|
|
5. On Android >= 13, add boot-record cmd to record boot-time profiles on userdebug/eng devices.
|
|
6. For AutoFDO/ETM support, support multiple input files in inject cmd to speed up processing and
|
|
combine output.
|
|
|
|
|
|
build 7848450
|
|
record cmd:
|
|
Add support for new perf ETE files.
|
|
report cmd:
|
|
Extend --percent-limit to report entries.
|
|
scripts:
|
|
Add gecko_profile_generator.py, which generates reports for firefox profiler.
|
|
Add stackcollapse.py, which generates reports to Folded Stacks.
|
|
Improve support of proguard mapping file.
|
|
Improve logging.
|
|
pprof_proto_generator.py:
|
|
Add thread, threadpool, pid, tid labels.
|
|
Set units of common events.
|
|
Add comments.
|
|
app_profiler.py: Kill app process for current user.
|
|
report_sample.py: add --header and --comm options.
|
|
doc:
|
|
Add introduction slide.
|
|
Use auto-generated tables of contents.
|
|
test: Fix flaky tests.
|
|
|
|
|
|
build 7649958
|
|
Build arm simpleperf for armv7-neon instead of armv8.
|
|
Support JIT method name with signature.
|
|
Doc improvement.
|
|
|
|
|
|
build 7549687
|
|
Use multithreading to speed up line annotation.
|
|
Add doc/debug_dwarf_unwinding.md.
|
|
Add doc/collect_etm_data_for_autofdo.md.
|
|
Move to file2 feature section.
|
|
|
|
|
|
build 7414587
|
|
Drop python2 support, scripts are tested on python3.8 and python3.9.
|
|
Refactor debug unwinding:
|
|
1. Add --keep-failed-unwinding-result and --keep-failed-unwinding-stack options
|
|
in record cmd, to generate additional records for failed unwinding cases.
|
|
2. Refactor debug-unwind cmd and debug_unwind_reporter.py to report failed
|
|
unwinding cases.
|
|
Support recording and converting kernel ETM data in record cmd and inject cmd.
|
|
Support using proguard mapping file for reporting.
|
|
Support vmlinux file when building binary_cache.
|
|
Support showing disassembly of vmlinux file in report_html.py. Use multithreading
|
|
to speedup disassembling.
|
|
Add app_type, android_sdk_version and android_build_type in meta_info of recording file.
|
|
|
|
|
|
ndk r23
|
|
build 7173446
|
|
Add visualization tool purgatorio.
|
|
Switch to llvm-objdump and llvm-readelf.
|
|
|
|
build 7119240
|
|
Reduce prepare recording time.
|
|
Add --kprobe option in record cmd.
|
|
Add --cpu option in report cmd.
|
|
Add -i option in dump cmd.
|
|
Add --exclude-perf option in inject cmd.
|
|
Add merge cmd to merge recording files recorded in the same environment using
|
|
the same event types.
|
|
Add monitor cmd to record and report events in real time.
|
|
Fix a few bugs about symbolization of kernel and kernel modules.
|
|
Support parsing kernel etm data in inject cmd.
|
|
Add --show-execution-type option in report-sample cmd.
|
|
Don't hide art jni methods in report_lib and report-sample cmd.
|
|
|
|
|
|
build 6859468
|
|
Add --csv option in report cmd.
|
|
Add --sort option in stat cmd.
|
|
Add --tp-filter option to filter tracepoint events in record cmd.
|
|
Add --addr-filter to filter etm recording in record cmd.
|
|
Fix finding symbols from kernel modules.
|
|
Better ART JIT support (dump jit symfiles to a single file instead of multiple
|
|
temporary files).
|
|
Support generic JIT symbols from symbol map file. See doc/jit_symbols.md.
|
|
|
|
|
|
ndk r22
|
|
build 6401870
|
|
Support multiple record files in pprof_proto_generator.py.
|
|
In stat cmd, add --per-thread and --per-core options to report per thread and per core.
|
|
In record cmd, add --exclude-perf option to exclude simpleperf samples in system wide
|
|
recording.
|
|
In inject cmd, support decoding coresight etm data to branch list data in protobuf format.
|
|
Fix and add doc for app_api, which can control simpleperf recording in app code.
|
|
Support pmu event types:
|
|
list supported pmu events via `simpleperf list pmu`.
|
|
record/stat pmu events via options like -e armv8_pmuv3/cpu_cycles/.
|
|
Switch to llvm-objdump.
|
|
Add doc for line and disassembly annotation in README.md.
|
|
Add doc for profiling profileable release app on Android >= Q.
|
|
Remove dependency on libncurses.
|
|
|
|
ndk r21
|
|
In record cmd, support recording coresight etm data (via -e cs-etm option).
|
|
Add inject cmd to decode coresight etm data.
|
|
Add doc for downloading unstripped libraries on device.
|
|
Fix scripts for using unstripped libraries without build ids for reporting.
|
|
Switch to llvm-symbolizer.
|
|
Add app_api and api_profiler.py, which can control simpleperf recording in app code.
|
|
Fix pprof_proto_generator.py to support line and disassembly annotation via pprof.
|
|
|
|
ndk r20
|
|
Skipped.
|
|
|
|
ndk r19
|
|
Fix report-sample command on Windows.
|
|
|
|
ndk r18
|
|
Improve support of profiling JITed/interpreted Java code on Android >= P:
|
|
1) Support JITed/interpreted Java code in system wide recording.
|
|
2) Support dex files extracted to memory.
|
|
3) Fix some bugs and improve inefficient code.
|
|
Improve record command:
|
|
1) Add a user space buffer and a high priority record reading thread to reduce sampe lost rate.
|
|
2) Record full process name instead of only the last 16 bytes.
|
|
Improve report_html.py:
|
|
1) Generate flamegraphs in Javascript code instead of using inferno, thus
|
|
reducing the time used to generate and load report.
|
|
2) Use bootstrap 4 to format UI.
|
|
3) Use progressbar to show progress of loading contents.
|
|
4) Add --binary_filter option to only annotate selected binaries.
|
|
Export tracing data in simpleperf_report_lib.py.
|
|
Test python scripts with both python2 and python3.
|
|
Add document for using simpleperf in Android platform profiling.
|
|
|
|
ndk r17
|
|
(release)
|
|
Use new Android unwinder, which can unwind for archs different from build.
|
|
Support profiling interpreted and JITed java code on Android >= P.
|
|
Refactor app_profiler.py: improve option interface, simplify profiling from launch,
|
|
and improve native lib downloading.
|
|
Fix ndk issues 638, 644, 499, 493.
|
|
Add debug-unwind cmd and script to debug unwinding.
|
|
Update document, including the way using wrap.sh to profile released apk.
|
|
|
|
(beta 1)
|
|
Add report_html.py, reporting profiling result in html interface.
|
|
Improve inferno.
|
|
Refactor document.
|
|
Provide more complete dwarf based call graphs.
|
|
|
|
ndk r16
|
|
|
|
Add inferno, a flamegraph generator.
|
|
Add --trace-offcpu option in simpleperf record command and app_profiler.py to trace offcpu time.
|
|
Add --app option in simpleperf record command to remove need of using run-as.
|
|
Add --profile_from_launch option in app_profiler.py to start recording from Activity launch time.
|
|
Configure scripts from command lines, remove config files.
|
|
Wrap simpleperf report command with report.py, in which GUI mode is enabled with --gui option.
|
|
Add release tests for scripts.
|
|
|
|
|
|
ndk r15
|
|
|
|
Add three Android Studio project examples, show how to build optimized native libs containing
|
|
debug info, show how to fully compile app on Android O.
|
|
Add symbol info in perf.data by default, no need to add --dump-symbols in simpleperf record command.
|
|
Report brief call-graph in simpleperf report command.
|
|
Support raw cpu pmu events.
|
|
|
|
|
|
ndk r14
|
|
|
|
Add app_profiler.py to help recording profiling data.
|
|
Add annotate.py to annotate source code.
|
|
Add simpleperf_report_lib.py interface to support extracting samples from perf.data.
|
|
Release simpleperf binaries on host to support reporting on host.
|
|
|
|
|
|
ndk r13
|
|
|
|
Release simpleperf binaries on device.
|
|
Support recording and reporting stack frame based callgraphs and dwarf based callgraphs.
|
|
Add simpleperf_report.py to show callgraphs in GUI.
|