GpuWork: fix gpu_work_period tracepoint
The tracepoint design was too fine-grained, too complex, and was missing
a gpu_id field.
- Fix the gpu_work_period tracepoint struct:
- More coarse-grained.
- Add gpu_id field.
- Remove frequency and other fields.
- Update the documentation comment, adding more detail.
- Update the eBPF program and map structs to account for the tracepoint
changes.
- Aggregate the `total_active_duration_ns` and
`total_inactive_duration_ns`.
- Collect data for each (gpu_id, uid) pair.
- Update GpuWork class to account for the tracepoint changes.
- Remove references to "frequency"; we now collect "gpu work".
- Rework dumping code; dump active and inactive time.
- Rework stats upload:
- Log active and inactive time.
- Log per (gpu_id, uid) pair.
- Reduce the amount logged if we observe a large number of GPUs.
- Remove UIDs with a very low GPU time.
Bug: b/221096545
Change-Id: I33d1c55f886913dad7b563e7b9a25cc1af0308f2
4 files changed