Merge 4 perfetto fixes into into pi-dev

This change cherry-picks a number of important fixes into pi-dev,
specifically:

cb45aa9b Fix bugs in CPU Reader [b/77265506]
07e104d1 Reduce binary size (1.6MB -> 600K) [b/77265506]
2c31b807 Disable on demand process stats implementation [b/77572477]
1a1951d8 Fix logic to decide SMB page and size from config [b/73625175]

The merge-list contains also a number of test refactorings. This CL is
deliberately merging them as well even if they are not tied to P1 bugs
for the following reason:
1) Not doing so would break our treehugger tests on pi-dev
2) Trying to do manual surgery on the branch to cut them away is just
   going to increase the chance of screwing up future cherry-picks.
3) Test changes don't affect stability risk of the release.

Bug: 77265506, 77265506, 77572477, 73625175
Test: manual + perfetto_unittests + perfetto_integrationtests
Change-Id: I7d4c5fd9c3bc7c40584ad3606d4ec6cd21a7b1f0
tree: d83fb9ef894542e375171839f00f995c0676b713
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. .clang-format
  13. .gitignore
  14. .gn
  15. .travis.yml
  16. Android.bp
  17. Android.bp.extras
  18. BUILD.gn
  19. codereview.settings
  20. MODULE_LICENSE_APACHE2
  21. NOTICE
  22. OWNERS
  23. perfetto.rc
  24. PRESUBMIT.py
  25. README.chromium
  26. README.md
README.md

Perfetto - Performance instrumentation and logging for POSIX platforms

This project is meant to be built both as part of the Android tree and from a standalone checkout

For internal docs see this page

Supported platforms

Android is the platform targeted in the first milestones. Right now Linux desktop and OSX are maintained best-effort.

Contributing

This project uses Android AOSP Gerrit for code reviews and uses the Google C++ style. Currently targets -std=c++11.

You can use both git cl upload from Chromium depot tools or Android repo to upload patches.

git cl is quite convenient as it supports code auto-formatting via git cl format.

See https://source.android.com/source/contributing for more details about external contributions and CLA signing.

Build instructions

See docs/build_instructions.md

Running Perfetto

See docs/running_perfetto.md

Continuous integration

Continuous build and test coverage is available at perfetto-ci.appspot.com. Trybots: CLs uploaded to gerrit are automatically submitted to TravisCI within one minute and made available on the CI page above. The relevant code lives in the infra/ directory.

Run tests

On the host (Linux / OSX)

$ tools/ninja -C out/default (tracing_unittests | tracing_benchmarks)
$ out/default/tracing_unittests --gtest_help

On Android

Either connect a device in ADB mode or use the bundled emulator.

To start the emulator:
$ tools/run_android_emulator (arm | arm64) &

To run the tests (either on the emulator or physical device):
$ tools/run_android_test out/default tracing_unittests