commit | c9030a0a499e7708daaeab8d7fedaac5e8733c07 | [log] [tgz] |
---|---|---|
author | Chinglin Yu <chinglinyu@google.com> | Tue Jul 16 11:30:33 2024 +0800 |
committer | Chinglin Yu <chinglinyu@google.com> | Tue Jul 16 11:30:33 2024 +0800 |
tree | 574ae55164a37f4773d4089367cbf4e08f4342f7 | |
parent | 8a25b41fbc37a49d26f352ed8ecb9abdea588dfb [diff] |
tp: support remote clock sync Implement injestion of the RemoteClockSync message for multi-machine tracing sessions. A RemoteClockSync message consists of multiple SyncedClocks messages, each of which contains ClockSnapshot taken on the remote client and host sides: ``` remote_clock_sync { synced_clocks { client_clocks { clocks { clock_id: 6 # CLOCK_BOOTTIME in the client. timestamp: 10000 } # Other clocks domains } host_clocks { clocks { clock_id: 6 # CLOCK_BOOTTIME in the host timestamp: 111000 } } } # more synced_clocks {} } ``` A round of clock synchronization consists of 4 snapshots taken in the order of client, host, client, host. The process is repeated with an interval of 30 seconds. The proto trace reader injests this message to make an estimation of clock offset between client and host for converting timestamps from client to the host clock domains. The trace processor takes an average of the estimated offset in the RemoteClockSync message to provide a more stable and predictable offset value. For more details, refer to section "Clock Synchronization" of go/crosetto-vm-tracing. Bug: 347623660 Change-Id: Ide96e8fb8101b76464416effe971f57ac3c33374
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.