TraceProcessor: add streaming query support.

This CL adds an endpoint to issue queries and retrieve
results in row-oriented batches. The batched data is
designed to allow fast parsing from JS/TS by packing
all cells of the same type together.
This CL changes the /query HTP endpoint to return a
Transfer-Encoding: Chunked sequence of batches. The binary
format is still unchanged.
This endpoint is in reality temporary because the whole TP
interface might be switched to websockets soon anyways to
allow pipelining and proper chunking support.
For now, however, we need a way to get this data in the
UI to make progress there.

Bug: 159142289
Change-Id: I584fb94f8326d82144ca5c55b2da060b56637348
7 files changed
tree: 78d9388f9b2b6f253a3a5eaea47b57fb079c6d59
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. src/
  13. test/
  14. tools/
  15. ui/
  16. .clang-format
  17. .clang-tidy
  18. .gitignore
  19. .gn
  20. .style.yapf
  21. Android.bp
  22. Android.bp.extras
  23. BUILD
  24. BUILD.extras
  25. BUILD.gn
  26. CHANGELOG
  27. codereview.settings
  28. heapprofd.rc
  29. LICENSE
  30. METADATA
  31. MODULE_LICENSE_APACHE2
  32. OWNERS
  33. perfetto.rc
  34. PRESUBMIT.py
  35. README.chromium
  36. README.md
  37. TEST_MAPPING
  38. traced_perf.rc
  39. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.