Add performance counter metrics to build.trace.gz
Start a background goroutine at the beginning of soong_build that
captures the CPU usage, heap size, and total system memory every
second. Propagate the values through soong_build_metrics.pb back
to soong_ui, and then into build.trace.gz.
Test: m nothing, examine build.trace.gz
Change-Id: Iad99f8f1f088f4f7f7d5f76566a38c0c4f4d0daa
diff --git a/ui/build/soong.go b/ui/build/soong.go
index 782a1b3..5ae8430 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -15,6 +15,7 @@
package build
import (
+ "android/soong/ui/tracer"
"fmt"
"io/fs"
"os"
@@ -774,6 +775,19 @@
ctx.Tracer.Complete(desc, ctx.Thread,
event.GetStartTime(), event.GetStartTime()+event.GetRealTime())
}
+ for _, event := range soongBuildMetrics.PerfCounters {
+ timestamp := event.GetTime()
+ for _, group := range event.Groups {
+ counters := make([]tracer.Counter, 0, len(group.Counters))
+ for _, counter := range group.Counters {
+ counters = append(counters, tracer.Counter{
+ Name: counter.GetName(),
+ Value: counter.GetValue(),
+ })
+ }
+ ctx.Tracer.CountersAtTime(group.GetName(), ctx.Thread, timestamp, counters)
+ }
+ }
}
func runMicrofactory(ctx Context, config Config, name string, pkg string, mapping map[string]string) {