| 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. |