Skip to content

Latest commit

 

History

History
33 lines (26 loc) · 1.57 KB

File metadata and controls

33 lines (26 loc) · 1.57 KB

IO-Tracer (Android) — Documentation

Two tools, one trace schema. The Android app (the default) and the Python CLI (see the repository README) both collect the same I/O streams and write the same columns — only the compression container differs (.csv.gz for the app, .csv.zst for the CLI).

Guides

  • Android app — build, install, run, and the app architecture. The recommended, on-device way to trace.
  • Quick start without root — what you can collect on an unrooted device (snapshot-only), and how to get root (emulator / Magisk / userdebug) for the full block trace.

Reference

  • Trace types & collection — the streams, how each one is collected, the collection pipeline, and the clock model.
  • Trace format — the exact CSV columns for every stream, the manifest.json, and how to read compressed traces.
  • Block I/O events — deep dive on the primary ds stream: rwbs decoding and issue→complete latency recovery.

Conventions

  • Schema source of truth: src/tracer/schema.py (SCHEMA_VERSION), mirrored 1:1 by the app's Schema.kt. Bump the version whenever columns change.
  • Compression: app → .csv.gz, CLI → .csv.zst (or plain .csv if zstandard is absent). The columns are identical either way.
  • Clock: every record carries a trailing mono_ns (CLOCK_MONOTONIC) column — the common clock for correlating records across streams.