Move binder libraries into perfetto binary and save ~5 MB of ram

This change moves the dependencies on libandroir,libbinder & friends
from libtraced_shared.so to the perfetto binary.
Thankfully, in fact, only the short lived client binary requires
those.
Doing so causes a memory reduction of our traced and traced_probes
of roughly 2.5 MB private dirty memory for each of our two daemon
(traced, traced_probes).
The memory is mostly coming from relocations and initializers
coming from the tree of recursive dependencies of those libraries.
For the moment that causes a binary size hit of +268 KB

Memory
------
Before:
  Shared_Clean:       7900 kB
  Shared_Dirty:         80 kB
  Private_Clean:       156 kB
  Private_Dirty:      3176 kB

After:
  Shared_Clean:       1224 kB
  Shared_Dirty:         80 kB
  Private_Clean:       160 kB
  Private_Dirty:       528 kB  !!!

Binary size
-----------
Before:
  bin/traced:                 12 KB
  bin/traced_probes:          12 KB
  bin/perfetto:               12 KB
  lib64/libtraced_shared.so:  468 KB
  *TOTAL*:                    504 KB

After:
  bin/traced:                 12 KB
  bin/traced_probes:          12 KB
  bin/perfetto:               280 KB
  lib64/libtraced_shared.so:  468 KB
  *TOTAL*:                    772 KB
Change-Id: I72bc05a68edf9b485775c51e7e2f18f29594458b
4 files changed
tree: 4901fdda01c548d03f21924e9b77a112f28e996c
  1. build_overrides/
  2. buildtools/
  3. cts/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  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