trace_processor: implement string pooling class

This CL introduces string pooling functionality to the trace processor
backed by PagedMemory.
This class uses fixed pages of memory with the following
properties:
1. On 64-bit machines, we mmap a 4GB chunk of memory and then use the
offset into this chunk as the StringId.
2. On 32-bit machines, we mmap 32MB chunks (this is because the UI will
malloc anything we mmap so we want to be conservative). The raw pointer
is then used directly as the StringId.

The use of this class inside the trace processor will be carried out
in a follow up CL.

Change-Id: Id1ede4e626b0ec65041be7177a08d3b1fcdbdbbc
10 files changed
tree: 4969a38560b34a45b289674d8a27af546bb0a7cb
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. ui/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. heapprofd.rc
  22. MODULE_LICENSE_APACHE2
  23. NOTICE
  24. OWNERS
  25. perfetto.rc
  26. PRESUBMIT.py
  27. README.chromium
  28. README.md
  29. TEST_MAPPING
README.md

Perfetto - Performance instrumentation and tracing

Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.

See www.perfetto.dev for docs.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.