Generate build timing metrics to proto format file

Test: Dumped the text formated based metrics file to out dir,
and checked the file.
Bug: b/63815990

Change-Id: Iff476f72a0be74eb53b6b26ef468d11c0f24a404
This commit is contained in:
Nan Zhang
2018-12-12 16:01:49 -08:00
parent a45e15e2d4
commit 17f2767724
18 changed files with 1021 additions and 20 deletions

View File

@@ -18,6 +18,8 @@ import (
"context"
"android/soong/ui/logger"
"android/soong/ui/metrics"
"android/soong/ui/metrics/metrics_proto"
"android/soong/ui/status"
"android/soong/ui/terminal"
"android/soong/ui/tracer"
@@ -31,6 +33,8 @@ type ContextImpl struct {
context.Context
logger.Logger
Metrics *metrics.Metrics
Writer terminal.Writer
Status *status.Status
@@ -39,9 +43,12 @@ type ContextImpl struct {
}
// BeginTrace starts a new Duration Event.
func (c ContextImpl) BeginTrace(name string) {
func (c ContextImpl) BeginTrace(name, desc string) {
if c.Tracer != nil {
c.Tracer.Begin(name, c.Thread)
c.Tracer.Begin(desc, c.Thread)
}
if c.Metrics != nil {
c.Metrics.TimeTracer.Begin(name, desc, c.Thread)
}
}
@@ -50,11 +57,23 @@ func (c ContextImpl) EndTrace() {
if c.Tracer != nil {
c.Tracer.End(c.Thread)
}
if c.Metrics != nil {
c.Metrics.SetTimeMetrics(c.Metrics.TimeTracer.End(c.Thread))
}
}
// CompleteTrace writes a trace with a beginning and end times.
func (c ContextImpl) CompleteTrace(name string, begin, end uint64) {
func (c ContextImpl) CompleteTrace(name, desc string, begin, end uint64) {
if c.Tracer != nil {
c.Tracer.Complete(name, c.Thread, begin, end)
c.Tracer.Complete(desc, c.Thread, begin, end)
}
if c.Metrics != nil {
realTime := end - begin
c.Metrics.SetTimeMetrics(
metrics_proto.PerfInfo{
Desc: &desc,
Name: &name,
StartTime: &begin,
RealTime: &realTime})
}
}