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
This commit is contained in:
parent
aa9a273b40
commit
46b0c75204
6 changed files with 655 additions and 209 deletions
|
@ -15,9 +15,13 @@
|
|||
package android
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/google/blueprint/metrics"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
@ -27,18 +31,21 @@ import (
|
|||
|
||||
var soongMetricsOnceKey = NewOnceKey("soong metrics")
|
||||
|
||||
type SoongMetrics struct {
|
||||
Modules int
|
||||
Variants int
|
||||
type soongMetrics struct {
|
||||
modules int
|
||||
variants int
|
||||
perfCollector perfCollector
|
||||
}
|
||||
|
||||
func readSoongMetrics(config Config) (SoongMetrics, bool) {
|
||||
soongMetrics, ok := config.Peek(soongMetricsOnceKey)
|
||||
if ok {
|
||||
return soongMetrics.(SoongMetrics), true
|
||||
} else {
|
||||
return SoongMetrics{}, false
|
||||
}
|
||||
type perfCollector struct {
|
||||
events []*soong_metrics_proto.PerfCounters
|
||||
stop chan<- bool
|
||||
}
|
||||
|
||||
func getSoongMetrics(config Config) *soongMetrics {
|
||||
return config.Once(soongMetricsOnceKey, func() interface{} {
|
||||
return &soongMetrics{}
|
||||
}).(*soongMetrics)
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
@ -50,27 +57,27 @@ func soongMetricsSingletonFactory() Singleton { return soongMetricsSingleton{} }
|
|||
type soongMetricsSingleton struct{}
|
||||
|
||||
func (soongMetricsSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
metrics := SoongMetrics{}
|
||||
metrics := getSoongMetrics(ctx.Config())
|
||||
ctx.VisitAllModules(func(m Module) {
|
||||
if ctx.PrimaryModule(m) == m {
|
||||
metrics.Modules++
|
||||
metrics.modules++
|
||||
}
|
||||
metrics.Variants++
|
||||
})
|
||||
ctx.Config().Once(soongMetricsOnceKey, func() interface{} {
|
||||
return metrics
|
||||
metrics.variants++
|
||||
})
|
||||
}
|
||||
|
||||
func collectMetrics(config Config, eventHandler *metrics.EventHandler) *soong_metrics_proto.SoongBuildMetrics {
|
||||
metrics := &soong_metrics_proto.SoongBuildMetrics{}
|
||||
|
||||
soongMetrics, ok := readSoongMetrics(config)
|
||||
if ok {
|
||||
metrics.Modules = proto.Uint32(uint32(soongMetrics.Modules))
|
||||
metrics.Variants = proto.Uint32(uint32(soongMetrics.Variants))
|
||||
soongMetrics := getSoongMetrics(config)
|
||||
if soongMetrics.modules > 0 {
|
||||
metrics.Modules = proto.Uint32(uint32(soongMetrics.modules))
|
||||
metrics.Variants = proto.Uint32(uint32(soongMetrics.variants))
|
||||
}
|
||||
|
||||
soongMetrics.perfCollector.stop <- true
|
||||
metrics.PerfCounters = soongMetrics.perfCollector.events
|
||||
|
||||
memStats := runtime.MemStats{}
|
||||
runtime.ReadMemStats(&memStats)
|
||||
metrics.MaxHeapSize = proto.Uint64(memStats.HeapSys)
|
||||
|
@ -107,6 +114,113 @@ func collectMetrics(config Config, eventHandler *metrics.EventHandler) *soong_me
|
|||
return metrics
|
||||
}
|
||||
|
||||
func StartBackgroundMetrics(config Config) {
|
||||
perfCollector := &getSoongMetrics(config).perfCollector
|
||||
stop := make(chan bool)
|
||||
perfCollector.stop = stop
|
||||
|
||||
previousTime := time.Now()
|
||||
previousCpuTime := readCpuTime()
|
||||
|
||||
ticker := time.NewTicker(time.Second)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-stop:
|
||||
ticker.Stop()
|
||||
return
|
||||
case <-ticker.C:
|
||||
// carry on
|
||||
}
|
||||
|
||||
currentTime := time.Now()
|
||||
|
||||
var memStats runtime.MemStats
|
||||
runtime.ReadMemStats(&memStats)
|
||||
|
||||
currentCpuTime := readCpuTime()
|
||||
|
||||
interval := currentTime.Sub(previousTime)
|
||||
intervalCpuTime := currentCpuTime - previousCpuTime
|
||||
intervalCpuPercent := intervalCpuTime * 100 / interval
|
||||
|
||||
// heapAlloc is the memory that has been allocated on the heap but not yet GC'd. It may be referenced,
|
||||
// or unrefenced but not yet GC'd.
|
||||
heapAlloc := memStats.HeapAlloc
|
||||
// heapUnused is the memory that was previously used by the heap, but is currently not used. It does not
|
||||
// count memory that was used and then returned to the OS.
|
||||
heapUnused := memStats.HeapIdle - memStats.HeapReleased
|
||||
// heapOverhead is the memory used by the allocator and GC
|
||||
heapOverhead := memStats.MSpanSys + memStats.MCacheSys + memStats.GCSys
|
||||
// otherMem is the memory used outside of the heap.
|
||||
otherMem := memStats.Sys - memStats.HeapSys - heapOverhead
|
||||
|
||||
perfCollector.events = append(perfCollector.events, &soong_metrics_proto.PerfCounters{
|
||||
Time: proto.Uint64(uint64(currentTime.UnixNano())),
|
||||
Groups: []*soong_metrics_proto.PerfCounterGroup{
|
||||
{
|
||||
Name: proto.String("cpu"),
|
||||
Counters: []*soong_metrics_proto.PerfCounter{
|
||||
{Name: proto.String("cpu_percent"), Value: proto.Int64(int64(intervalCpuPercent))},
|
||||
},
|
||||
}, {
|
||||
Name: proto.String("memory"),
|
||||
Counters: []*soong_metrics_proto.PerfCounter{
|
||||
{Name: proto.String("heap_alloc"), Value: proto.Int64(int64(heapAlloc))},
|
||||
{Name: proto.String("heap_unused"), Value: proto.Int64(int64(heapUnused))},
|
||||
{Name: proto.String("heap_overhead"), Value: proto.Int64(int64(heapOverhead))},
|
||||
{Name: proto.String("other"), Value: proto.Int64(int64(otherMem))},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
previousTime = currentTime
|
||||
previousCpuTime = currentCpuTime
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func readCpuTime() time.Duration {
|
||||
if runtime.GOOS != "linux" {
|
||||
return 0
|
||||
}
|
||||
|
||||
stat, err := os.ReadFile("/proc/self/stat")
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
endOfComm := bytes.LastIndexByte(stat, ')')
|
||||
if endOfComm < 0 || endOfComm > len(stat)-2 {
|
||||
return 0
|
||||
}
|
||||
|
||||
stat = stat[endOfComm+2:]
|
||||
|
||||
statFields := bytes.Split(stat, []byte{' '})
|
||||
// This should come from sysconf(_SC_CLK_TCK), but there's no way to call that from Go. Assume it's 100,
|
||||
// which is the value for all platforms we support.
|
||||
const HZ = 100
|
||||
const MS_PER_HZ = 1e3 / HZ * time.Millisecond
|
||||
|
||||
const STAT_UTIME_FIELD = 14 - 2
|
||||
const STAT_STIME_FIELD = 15 - 2
|
||||
if len(statFields) < STAT_STIME_FIELD {
|
||||
return 0
|
||||
}
|
||||
userCpuTicks, err := strconv.ParseUint(string(statFields[STAT_UTIME_FIELD]), 10, 64)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
kernelCpuTicks, _ := strconv.ParseUint(string(statFields[STAT_STIME_FIELD]), 10, 64)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return time.Duration(userCpuTicks+kernelCpuTicks) * MS_PER_HZ
|
||||
}
|
||||
|
||||
func WriteMetrics(config Config, eventHandler *metrics.EventHandler, metricsFile string) error {
|
||||
metrics := collectMetrics(config, eventHandler)
|
||||
|
||||
|
|
|
@ -422,6 +422,7 @@ func main() {
|
|||
metricsDir := availableEnv["LOG_DIR"]
|
||||
|
||||
ctx := newContext(configuration)
|
||||
android.StartBackgroundMetrics(configuration)
|
||||
|
||||
var finalOutputFile string
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package build
|
||||
|
||||
import (
|
||||
"android/soong/ui/tracer"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"os"
|
||||
|
@ -774,6 +775,19 @@ func loadSoongBuildMetrics(ctx Context, config Config, oldTimestamp time.Time) {
|
|||
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) {
|
||||
|
|
|
@ -279,7 +279,7 @@ func (x *ModuleTypeInfo_BuildSystem) UnmarshalJSON(b []byte) error {
|
|||
|
||||
// Deprecated: Use ModuleTypeInfo_BuildSystem.Descriptor instead.
|
||||
func (ModuleTypeInfo_BuildSystem) EnumDescriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{5, 0}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{8, 0}
|
||||
}
|
||||
|
||||
type ExpConfigFetcher_ConfigStatus int32
|
||||
|
@ -341,7 +341,7 @@ func (x *ExpConfigFetcher_ConfigStatus) UnmarshalJSON(b []byte) error {
|
|||
|
||||
// Deprecated: Use ExpConfigFetcher_ConfigStatus.Descriptor instead.
|
||||
func (ExpConfigFetcher_ConfigStatus) EnumDescriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{9, 0}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{12, 0}
|
||||
}
|
||||
|
||||
type MetricsBase struct {
|
||||
|
@ -999,6 +999,177 @@ func (x *PerfInfo) GetErrorMessage() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
type PerfCounters struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// The timestamp of these counters in nanoseconds.
|
||||
Time *uint64 `protobuf:"varint,1,opt,name=time" json:"time,omitempty"`
|
||||
// A list of counter names and values.
|
||||
Groups []*PerfCounterGroup `protobuf:"bytes,2,rep,name=groups" json:"groups,omitempty"`
|
||||
}
|
||||
|
||||
func (x *PerfCounters) Reset() {
|
||||
*x = PerfCounters{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *PerfCounters) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*PerfCounters) ProtoMessage() {}
|
||||
|
||||
func (x *PerfCounters) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[4]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use PerfCounters.ProtoReflect.Descriptor instead.
|
||||
func (*PerfCounters) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
func (x *PerfCounters) GetTime() uint64 {
|
||||
if x != nil && x.Time != nil {
|
||||
return *x.Time
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *PerfCounters) GetGroups() []*PerfCounterGroup {
|
||||
if x != nil {
|
||||
return x.Groups
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type PerfCounterGroup struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// The name of this counter group (e.g. "cpu" or "memory")
|
||||
Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
|
||||
// The counters in this group
|
||||
Counters []*PerfCounter `protobuf:"bytes,2,rep,name=counters" json:"counters,omitempty"`
|
||||
}
|
||||
|
||||
func (x *PerfCounterGroup) Reset() {
|
||||
*x = PerfCounterGroup{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *PerfCounterGroup) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*PerfCounterGroup) ProtoMessage() {}
|
||||
|
||||
func (x *PerfCounterGroup) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use PerfCounterGroup.ProtoReflect.Descriptor instead.
|
||||
func (*PerfCounterGroup) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *PerfCounterGroup) GetName() string {
|
||||
if x != nil && x.Name != nil {
|
||||
return *x.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *PerfCounterGroup) GetCounters() []*PerfCounter {
|
||||
if x != nil {
|
||||
return x.Counters
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type PerfCounter struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// The name of this counter.
|
||||
Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
|
||||
// The value of this counter.
|
||||
Value *int64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"`
|
||||
}
|
||||
|
||||
func (x *PerfCounter) Reset() {
|
||||
*x = PerfCounter{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[6]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *PerfCounter) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*PerfCounter) ProtoMessage() {}
|
||||
|
||||
func (x *PerfCounter) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[6]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use PerfCounter.ProtoReflect.Descriptor instead.
|
||||
func (*PerfCounter) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{6}
|
||||
}
|
||||
|
||||
func (x *PerfCounter) GetName() string {
|
||||
if x != nil && x.Name != nil {
|
||||
return *x.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *PerfCounter) GetValue() int64 {
|
||||
if x != nil && x.Value != nil {
|
||||
return *x.Value
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type ProcessResourceInfo struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
|
@ -1029,7 +1200,7 @@ type ProcessResourceInfo struct {
|
|||
func (x *ProcessResourceInfo) Reset() {
|
||||
*x = ProcessResourceInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[4]
|
||||
mi := &file_metrics_proto_msgTypes[7]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1042,7 +1213,7 @@ func (x *ProcessResourceInfo) String() string {
|
|||
func (*ProcessResourceInfo) ProtoMessage() {}
|
||||
|
||||
func (x *ProcessResourceInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[4]
|
||||
mi := &file_metrics_proto_msgTypes[7]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1055,7 +1226,7 @@ func (x *ProcessResourceInfo) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use ProcessResourceInfo.ProtoReflect.Descriptor instead.
|
||||
func (*ProcessResourceInfo) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{4}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{7}
|
||||
}
|
||||
|
||||
func (x *ProcessResourceInfo) GetName() string {
|
||||
|
@ -1149,7 +1320,7 @@ const (
|
|||
func (x *ModuleTypeInfo) Reset() {
|
||||
*x = ModuleTypeInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[5]
|
||||
mi := &file_metrics_proto_msgTypes[8]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1162,7 +1333,7 @@ func (x *ModuleTypeInfo) String() string {
|
|||
func (*ModuleTypeInfo) ProtoMessage() {}
|
||||
|
||||
func (x *ModuleTypeInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[5]
|
||||
mi := &file_metrics_proto_msgTypes[8]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1175,7 +1346,7 @@ func (x *ModuleTypeInfo) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use ModuleTypeInfo.ProtoReflect.Descriptor instead.
|
||||
func (*ModuleTypeInfo) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{5}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{8}
|
||||
}
|
||||
|
||||
func (x *ModuleTypeInfo) GetBuildSystem() ModuleTypeInfo_BuildSystem {
|
||||
|
@ -1213,7 +1384,7 @@ type CriticalUserJourneyMetrics struct {
|
|||
func (x *CriticalUserJourneyMetrics) Reset() {
|
||||
*x = CriticalUserJourneyMetrics{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[6]
|
||||
mi := &file_metrics_proto_msgTypes[9]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1226,7 +1397,7 @@ func (x *CriticalUserJourneyMetrics) String() string {
|
|||
func (*CriticalUserJourneyMetrics) ProtoMessage() {}
|
||||
|
||||
func (x *CriticalUserJourneyMetrics) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[6]
|
||||
mi := &file_metrics_proto_msgTypes[9]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1239,7 +1410,7 @@ func (x *CriticalUserJourneyMetrics) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use CriticalUserJourneyMetrics.ProtoReflect.Descriptor instead.
|
||||
func (*CriticalUserJourneyMetrics) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{6}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{9}
|
||||
}
|
||||
|
||||
func (x *CriticalUserJourneyMetrics) GetName() string {
|
||||
|
@ -1268,7 +1439,7 @@ type CriticalUserJourneysMetrics struct {
|
|||
func (x *CriticalUserJourneysMetrics) Reset() {
|
||||
*x = CriticalUserJourneysMetrics{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[7]
|
||||
mi := &file_metrics_proto_msgTypes[10]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1281,7 +1452,7 @@ func (x *CriticalUserJourneysMetrics) String() string {
|
|||
func (*CriticalUserJourneysMetrics) ProtoMessage() {}
|
||||
|
||||
func (x *CriticalUserJourneysMetrics) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[7]
|
||||
mi := &file_metrics_proto_msgTypes[10]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1294,7 +1465,7 @@ func (x *CriticalUserJourneysMetrics) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use CriticalUserJourneysMetrics.ProtoReflect.Descriptor instead.
|
||||
func (*CriticalUserJourneysMetrics) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{7}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{10}
|
||||
}
|
||||
|
||||
func (x *CriticalUserJourneysMetrics) GetCujs() []*CriticalUserJourneyMetrics {
|
||||
|
@ -1323,12 +1494,14 @@ type SoongBuildMetrics struct {
|
|||
Events []*PerfInfo `protobuf:"bytes,6,rep,name=events" json:"events,omitempty"`
|
||||
// Mixed Builds information
|
||||
MixedBuildsInfo *MixedBuildsInfo `protobuf:"bytes,7,opt,name=mixed_builds_info,json=mixedBuildsInfo" json:"mixed_builds_info,omitempty"`
|
||||
// Performance during for soong_build execution.
|
||||
PerfCounters []*PerfCounters `protobuf:"bytes,8,rep,name=perf_counters,json=perfCounters" json:"perf_counters,omitempty"`
|
||||
}
|
||||
|
||||
func (x *SoongBuildMetrics) Reset() {
|
||||
*x = SoongBuildMetrics{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[8]
|
||||
mi := &file_metrics_proto_msgTypes[11]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1341,7 +1514,7 @@ func (x *SoongBuildMetrics) String() string {
|
|||
func (*SoongBuildMetrics) ProtoMessage() {}
|
||||
|
||||
func (x *SoongBuildMetrics) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[8]
|
||||
mi := &file_metrics_proto_msgTypes[11]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1354,7 +1527,7 @@ func (x *SoongBuildMetrics) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use SoongBuildMetrics.ProtoReflect.Descriptor instead.
|
||||
func (*SoongBuildMetrics) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{8}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{11}
|
||||
}
|
||||
|
||||
func (x *SoongBuildMetrics) GetModules() uint32 {
|
||||
|
@ -1406,6 +1579,13 @@ func (x *SoongBuildMetrics) GetMixedBuildsInfo() *MixedBuildsInfo {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (x *SoongBuildMetrics) GetPerfCounters() []*PerfCounters {
|
||||
if x != nil {
|
||||
return x.PerfCounters
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type ExpConfigFetcher struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
|
@ -1425,7 +1605,7 @@ type ExpConfigFetcher struct {
|
|||
func (x *ExpConfigFetcher) Reset() {
|
||||
*x = ExpConfigFetcher{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[9]
|
||||
mi := &file_metrics_proto_msgTypes[12]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1438,7 +1618,7 @@ func (x *ExpConfigFetcher) String() string {
|
|||
func (*ExpConfigFetcher) ProtoMessage() {}
|
||||
|
||||
func (x *ExpConfigFetcher) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[9]
|
||||
mi := &file_metrics_proto_msgTypes[12]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1451,7 +1631,7 @@ func (x *ExpConfigFetcher) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use ExpConfigFetcher.ProtoReflect.Descriptor instead.
|
||||
func (*ExpConfigFetcher) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{9}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{12}
|
||||
}
|
||||
|
||||
func (x *ExpConfigFetcher) GetStatus() ExpConfigFetcher_ConfigStatus {
|
||||
|
@ -1489,7 +1669,7 @@ type MixedBuildsInfo struct {
|
|||
func (x *MixedBuildsInfo) Reset() {
|
||||
*x = MixedBuildsInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[10]
|
||||
mi := &file_metrics_proto_msgTypes[13]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1502,7 +1682,7 @@ func (x *MixedBuildsInfo) String() string {
|
|||
func (*MixedBuildsInfo) ProtoMessage() {}
|
||||
|
||||
func (x *MixedBuildsInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[10]
|
||||
mi := &file_metrics_proto_msgTypes[13]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1515,7 +1695,7 @@ func (x *MixedBuildsInfo) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use MixedBuildsInfo.ProtoReflect.Descriptor instead.
|
||||
func (*MixedBuildsInfo) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{10}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{13}
|
||||
}
|
||||
|
||||
func (x *MixedBuildsInfo) GetMixedBuildEnabledModules() []string {
|
||||
|
@ -1552,7 +1732,7 @@ type CriticalPathInfo struct {
|
|||
func (x *CriticalPathInfo) Reset() {
|
||||
*x = CriticalPathInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[11]
|
||||
mi := &file_metrics_proto_msgTypes[14]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1565,7 +1745,7 @@ func (x *CriticalPathInfo) String() string {
|
|||
func (*CriticalPathInfo) ProtoMessage() {}
|
||||
|
||||
func (x *CriticalPathInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[11]
|
||||
mi := &file_metrics_proto_msgTypes[14]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1578,7 +1758,7 @@ func (x *CriticalPathInfo) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use CriticalPathInfo.ProtoReflect.Descriptor instead.
|
||||
func (*CriticalPathInfo) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{11}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{14}
|
||||
}
|
||||
|
||||
func (x *CriticalPathInfo) GetElapsedTimeMicros() uint64 {
|
||||
|
@ -1623,7 +1803,7 @@ type JobInfo struct {
|
|||
func (x *JobInfo) Reset() {
|
||||
*x = JobInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_metrics_proto_msgTypes[12]
|
||||
mi := &file_metrics_proto_msgTypes[15]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
@ -1636,7 +1816,7 @@ func (x *JobInfo) String() string {
|
|||
func (*JobInfo) ProtoMessage() {}
|
||||
|
||||
func (x *JobInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_metrics_proto_msgTypes[12]
|
||||
mi := &file_metrics_proto_msgTypes[15]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
|
@ -1649,7 +1829,7 @@ func (x *JobInfo) ProtoReflect() protoreflect.Message {
|
|||
|
||||
// Deprecated: Use JobInfo.ProtoReflect.Descriptor instead.
|
||||
func (*JobInfo) Descriptor() ([]byte, []int) {
|
||||
return file_metrics_proto_rawDescGZIP(), []int{12}
|
||||
return file_metrics_proto_rawDescGZIP(), []int{15}
|
||||
}
|
||||
|
||||
func (x *JobInfo) GetElapsedTimeMicros() uint64 {
|
||||
|
@ -1856,132 +2036,153 @@ var file_metrics_proto_rawDesc = []byte{
|
|||
0x6f, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x6f,
|
||||
0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72,
|
||||
0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb9,
|
||||
0x03, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73,
|
||||
0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69,
|
||||
0x63, 0x72, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74,
|
||||
0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72,
|
||||
0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x73, 0x73, 0x5f, 0x6b, 0x62,
|
||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x52, 0x73, 0x73, 0x4b, 0x62,
|
||||
0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x66,
|
||||
0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e,
|
||||
0x6f, 0x72, 0x50, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11,
|
||||
0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74,
|
||||
0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x50, 0x61,
|
||||
0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x69,
|
||||
0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69,
|
||||
0x6f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x6f, 0x5f, 0x6f,
|
||||
0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
|
||||
0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x3c, 0x0a, 0x1a, 0x76, 0x6f,
|
||||
0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f,
|
||||
0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18,
|
||||
0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
|
||||
0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x69, 0x6e, 0x76, 0x6f,
|
||||
0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f,
|
||||
0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a,
|
||||
0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65,
|
||||
0x78, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x4d,
|
||||
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5b, 0x0a,
|
||||
0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c,
|
||||
0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
|
||||
0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79,
|
||||
0x73, 0x74, 0x65, 0x6d, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x0b, 0x62,
|
||||
0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e,
|
||||
0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
|
||||
0x73, 0x22, 0x2f, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
|
||||
0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a,
|
||||
0x05, 0x53, 0x4f, 0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x4b, 0x45,
|
||||
0x10, 0x02, 0x22, 0x6c, 0x0a, 0x1a, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x73,
|
||||
0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x61,
|
||||
0x0a, 0x0c, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12,
|
||||
0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x69,
|
||||
0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03,
|
||||
0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70,
|
||||
0x73, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72,
|
||||
0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f,
|
||||
0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x66, 0x43,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x22, 0xb9, 0x03, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x6f,
|
||||
0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10,
|
||||
0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65,
|
||||
0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
|
||||
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x04, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69,
|
||||
0x63, 0x72, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x73, 0x73, 0x5f,
|
||||
0x6b, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x52, 0x73, 0x73,
|
||||
0x4b, 0x62, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65,
|
||||
0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d,
|
||||
0x69, 0x6e, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2a,
|
||||
0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x61, 0x75,
|
||||
0x6c, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72,
|
||||
0x50, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x6f,
|
||||
0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52,
|
||||
0x09, 0x69, 0x6f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x6f,
|
||||
0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x0a, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4b, 0x62, 0x12, 0x3c, 0x0a, 0x1a,
|
||||
0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
|
||||
0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x18, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65,
|
||||
0x78, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x69, 0x6e,
|
||||
0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
|
||||
0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x1a, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e,
|
||||
0x74, 0x65, 0x78, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a,
|
||||
0x0e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
||||
0x5b, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75,
|
||||
0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x3a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52,
|
||||
0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0b,
|
||||
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a,
|
||||
0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18,
|
||||
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x6f, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x73, 0x74,
|
||||
0x65, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
|
||||
0x09, 0x0a, 0x05, 0x53, 0x4f, 0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41,
|
||||
0x4b, 0x45, 0x10, 0x02, 0x22, 0x6c, 0x0a, 0x1a, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
|
||||
0x55, 0x73, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f,
|
||||
0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65,
|
||||
0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x22, 0x62, 0x0a, 0x1b, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x73,
|
||||
0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x12, 0x43, 0x0a, 0x04, 0x63, 0x75, 0x6a, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||
0x2f, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65,
|
||||
0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x73,
|
||||
0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
|
||||
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75,
|
||||
0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72,
|
||||
0x69, 0x63, 0x73, 0x42, 0x61, 0x73, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
|
||||
0x22, 0x62, 0x0a, 0x1b, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72,
|
||||
0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12,
|
||||
0x43, 0x0a, 0x04, 0x63, 0x75, 0x6a, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
|
||||
0x52, 0x04, 0x63, 0x75, 0x6a, 0x73, 0x22, 0x94, 0x03, 0x0a, 0x11, 0x53, 0x6f, 0x6f, 0x6e, 0x67,
|
||||
0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07,
|
||||
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d,
|
||||
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
|
||||
0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
|
||||
0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f,
|
||||
0x63, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74,
|
||||
0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28,
|
||||
0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x73, 0x69,
|
||||
0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41,
|
||||
0x6c, 0x6c, 0x6f, 0x63, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f,
|
||||
0x68, 0x65, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
|
||||
0x0b, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x35, 0x0a, 0x06,
|
||||
0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73,
|
||||
0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65,
|
||||
0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69,
|
||||
0x6c, 0x64, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
|
||||
0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74,
|
||||
0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x66, 0x5f, 0x63, 0x6f,
|
||||
0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73,
|
||||
0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52,
|
||||
0x0c, 0x70, 0x65, 0x72, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x22, 0xdb, 0x01,
|
||||
0x0a, 0x10, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x65, 0x74, 0x63, 0x68,
|
||||
0x65, 0x72, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66,
|
||||
0x69, 0x67, 0x46, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a,
|
||||
0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69,
|
||||
0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x63, 0x72,
|
||||
0x6f, 0x73, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10,
|
||||
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a,
|
||||
0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x49, 0x53, 0x53,
|
||||
0x49, 0x4e, 0x47, 0x5f, 0x47, 0x43, 0x45, 0x52, 0x54, 0x10, 0x03, 0x22, 0x91, 0x01, 0x0a, 0x0f,
|
||||
0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
||||
0x3d, 0x0a, 0x1b, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x65,
|
||||
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01,
|
||||
0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3f,
|
||||
0x0a, 0x1c, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x69,
|
||||
0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02,
|
||||
0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22,
|
||||
0x8a, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f,
|
||||
0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69,
|
||||
0x63, 0x72, 0x6f, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
|
||||
0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f,
|
||||
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61,
|
||||
0x6c, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12,
|
||||
0x41, 0x0a, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68,
|
||||
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62,
|
||||
0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4a, 0x6f, 0x62,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61,
|
||||
0x74, 0x68, 0x12, 0x48, 0x0a, 0x11, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69,
|
||||
0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
|
||||
0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72,
|
||||
0x69, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72,
|
||||
0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x04,
|
||||
0x63, 0x75, 0x6a, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x11, 0x53, 0x6f, 0x6f, 0x6e, 0x67, 0x42, 0x75,
|
||||
0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73,
|
||||
0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f,
|
||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74,
|
||||
0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10,
|
||||
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x73, 0x69, 0x7a, 0x65,
|
||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c,
|
||||
0x6f, 0x63, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x65,
|
||||
0x61, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d,
|
||||
0x61, 0x78, 0x48, 0x65, 0x61, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x76,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x6f,
|
||||
0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
|
||||
0x2e, 0x50, 0x65, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x12, 0x50, 0x0a, 0x11, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73,
|
||||
0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x49, 0x6e,
|
||||
0x66, 0x6f, 0x52, 0x0f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x49,
|
||||
0x6e, 0x66, 0x6f, 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
|
||||
0x67, 0x46, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67,
|
||||
0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x45,
|
||||
0x78, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x65, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e,
|
||||
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
|
||||
0x52, 0x06, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66,
|
||||
0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x43,
|
||||
0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, 0x49,
|
||||
0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x11,
|
||||
0x0a, 0x0d, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x47, 0x43, 0x45, 0x52, 0x54, 0x10,
|
||||
0x03, 0x22, 0x91, 0x01, 0x0a, 0x0f, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62,
|
||||
0x75, 0x69, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x6d, 0x69, 0x78, 0x65,
|
||||
0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x62, 0x75,
|
||||
0x69, 0x6c, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6d, 0x69, 0x78, 0x65,
|
||||
0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63,
|
||||
0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c,
|
||||
0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f,
|
||||
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64,
|
||||
0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x72,
|
||||
0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65,
|
||||
0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x63,
|
||||
0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x4d,
|
||||
0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61,
|
||||
0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
|
||||
0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x63, 0x72, 0x69, 0x74,
|
||||
0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x11, 0x6c, 0x6f, 0x6e, 0x67,
|
||||
0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x05, 0x20,
|
||||
0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c,
|
||||
0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66,
|
||||
0x6f, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f,
|
||||
0x62, 0x73, 0x22, 0x62, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a,
|
||||
0x13, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69,
|
||||
0x63, 0x72, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70,
|
||||
0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x27, 0x0a,
|
||||
0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x63, 0x72,
|
||||
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x28, 0x5a, 0x26, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69,
|
||||
0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x75, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x69, 0x63, 0x73, 0x2e, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x6c, 0x6f, 0x6e,
|
||||
0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x62, 0x0a, 0x07,
|
||||
0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6c, 0x61, 0x70, 0x73,
|
||||
0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d,
|
||||
0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6a, 0x6f, 0x62, 0x5f, 0x64,
|
||||
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x0e, 0x6a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x42, 0x28, 0x5a, 0x26, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e,
|
||||
0x67, 0x2f, 0x75, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x6d, 0x65, 0x74,
|
||||
0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -1997,7 +2198,7 @@ func file_metrics_proto_rawDescGZIP() []byte {
|
|||
}
|
||||
|
||||
var file_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
|
||||
var file_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
|
||||
var file_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
|
||||
var file_metrics_proto_goTypes = []interface{}{
|
||||
(MetricsBase_BuildVariant)(0), // 0: soong_build_metrics.MetricsBase.BuildVariant
|
||||
(MetricsBase_Arch)(0), // 1: soong_build_metrics.MetricsBase.Arch
|
||||
|
@ -2008,15 +2209,18 @@ var file_metrics_proto_goTypes = []interface{}{
|
|||
(*BuildConfig)(nil), // 6: soong_build_metrics.BuildConfig
|
||||
(*SystemResourceInfo)(nil), // 7: soong_build_metrics.SystemResourceInfo
|
||||
(*PerfInfo)(nil), // 8: soong_build_metrics.PerfInfo
|
||||
(*ProcessResourceInfo)(nil), // 9: soong_build_metrics.ProcessResourceInfo
|
||||
(*ModuleTypeInfo)(nil), // 10: soong_build_metrics.ModuleTypeInfo
|
||||
(*CriticalUserJourneyMetrics)(nil), // 11: soong_build_metrics.CriticalUserJourneyMetrics
|
||||
(*CriticalUserJourneysMetrics)(nil), // 12: soong_build_metrics.CriticalUserJourneysMetrics
|
||||
(*SoongBuildMetrics)(nil), // 13: soong_build_metrics.SoongBuildMetrics
|
||||
(*ExpConfigFetcher)(nil), // 14: soong_build_metrics.ExpConfigFetcher
|
||||
(*MixedBuildsInfo)(nil), // 15: soong_build_metrics.MixedBuildsInfo
|
||||
(*CriticalPathInfo)(nil), // 16: soong_build_metrics.CriticalPathInfo
|
||||
(*JobInfo)(nil), // 17: soong_build_metrics.JobInfo
|
||||
(*PerfCounters)(nil), // 9: soong_build_metrics.PerfCounters
|
||||
(*PerfCounterGroup)(nil), // 10: soong_build_metrics.PerfCounterGroup
|
||||
(*PerfCounter)(nil), // 11: soong_build_metrics.PerfCounter
|
||||
(*ProcessResourceInfo)(nil), // 12: soong_build_metrics.ProcessResourceInfo
|
||||
(*ModuleTypeInfo)(nil), // 13: soong_build_metrics.ModuleTypeInfo
|
||||
(*CriticalUserJourneyMetrics)(nil), // 14: soong_build_metrics.CriticalUserJourneyMetrics
|
||||
(*CriticalUserJourneysMetrics)(nil), // 15: soong_build_metrics.CriticalUserJourneysMetrics
|
||||
(*SoongBuildMetrics)(nil), // 16: soong_build_metrics.SoongBuildMetrics
|
||||
(*ExpConfigFetcher)(nil), // 17: soong_build_metrics.ExpConfigFetcher
|
||||
(*MixedBuildsInfo)(nil), // 18: soong_build_metrics.MixedBuildsInfo
|
||||
(*CriticalPathInfo)(nil), // 19: soong_build_metrics.CriticalPathInfo
|
||||
(*JobInfo)(nil), // 20: soong_build_metrics.JobInfo
|
||||
}
|
||||
var file_metrics_proto_depIdxs = []int32{
|
||||
0, // 0: soong_build_metrics.MetricsBase.target_build_variant:type_name -> soong_build_metrics.MetricsBase.BuildVariant
|
||||
|
@ -2028,27 +2232,30 @@ var file_metrics_proto_depIdxs = []int32{
|
|||
8, // 6: soong_build_metrics.MetricsBase.soong_runs:type_name -> soong_build_metrics.PerfInfo
|
||||
8, // 7: soong_build_metrics.MetricsBase.ninja_runs:type_name -> soong_build_metrics.PerfInfo
|
||||
8, // 8: soong_build_metrics.MetricsBase.total:type_name -> soong_build_metrics.PerfInfo
|
||||
13, // 9: soong_build_metrics.MetricsBase.soong_build_metrics:type_name -> soong_build_metrics.SoongBuildMetrics
|
||||
16, // 9: soong_build_metrics.MetricsBase.soong_build_metrics:type_name -> soong_build_metrics.SoongBuildMetrics
|
||||
6, // 10: soong_build_metrics.MetricsBase.build_config:type_name -> soong_build_metrics.BuildConfig
|
||||
7, // 11: soong_build_metrics.MetricsBase.system_resource_info:type_name -> soong_build_metrics.SystemResourceInfo
|
||||
8, // 12: soong_build_metrics.MetricsBase.bazel_runs:type_name -> soong_build_metrics.PerfInfo
|
||||
14, // 13: soong_build_metrics.MetricsBase.exp_config_fetcher:type_name -> soong_build_metrics.ExpConfigFetcher
|
||||
16, // 14: soong_build_metrics.MetricsBase.critical_path_info:type_name -> soong_build_metrics.CriticalPathInfo
|
||||
17, // 13: soong_build_metrics.MetricsBase.exp_config_fetcher:type_name -> soong_build_metrics.ExpConfigFetcher
|
||||
19, // 14: soong_build_metrics.MetricsBase.critical_path_info:type_name -> soong_build_metrics.CriticalPathInfo
|
||||
2, // 15: soong_build_metrics.BuildConfig.ninja_weight_list_source:type_name -> soong_build_metrics.BuildConfig.NinjaWeightListSource
|
||||
9, // 16: soong_build_metrics.PerfInfo.processes_resource_info:type_name -> soong_build_metrics.ProcessResourceInfo
|
||||
3, // 17: soong_build_metrics.ModuleTypeInfo.build_system:type_name -> soong_build_metrics.ModuleTypeInfo.BuildSystem
|
||||
5, // 18: soong_build_metrics.CriticalUserJourneyMetrics.metrics:type_name -> soong_build_metrics.MetricsBase
|
||||
11, // 19: soong_build_metrics.CriticalUserJourneysMetrics.cujs:type_name -> soong_build_metrics.CriticalUserJourneyMetrics
|
||||
8, // 20: soong_build_metrics.SoongBuildMetrics.events:type_name -> soong_build_metrics.PerfInfo
|
||||
15, // 21: soong_build_metrics.SoongBuildMetrics.mixed_builds_info:type_name -> soong_build_metrics.MixedBuildsInfo
|
||||
4, // 22: soong_build_metrics.ExpConfigFetcher.status:type_name -> soong_build_metrics.ExpConfigFetcher.ConfigStatus
|
||||
17, // 23: soong_build_metrics.CriticalPathInfo.critical_path:type_name -> soong_build_metrics.JobInfo
|
||||
17, // 24: soong_build_metrics.CriticalPathInfo.long_running_jobs:type_name -> soong_build_metrics.JobInfo
|
||||
25, // [25:25] is the sub-list for method output_type
|
||||
25, // [25:25] is the sub-list for method input_type
|
||||
25, // [25:25] is the sub-list for extension type_name
|
||||
25, // [25:25] is the sub-list for extension extendee
|
||||
0, // [0:25] is the sub-list for field type_name
|
||||
12, // 16: soong_build_metrics.PerfInfo.processes_resource_info:type_name -> soong_build_metrics.ProcessResourceInfo
|
||||
10, // 17: soong_build_metrics.PerfCounters.groups:type_name -> soong_build_metrics.PerfCounterGroup
|
||||
11, // 18: soong_build_metrics.PerfCounterGroup.counters:type_name -> soong_build_metrics.PerfCounter
|
||||
3, // 19: soong_build_metrics.ModuleTypeInfo.build_system:type_name -> soong_build_metrics.ModuleTypeInfo.BuildSystem
|
||||
5, // 20: soong_build_metrics.CriticalUserJourneyMetrics.metrics:type_name -> soong_build_metrics.MetricsBase
|
||||
14, // 21: soong_build_metrics.CriticalUserJourneysMetrics.cujs:type_name -> soong_build_metrics.CriticalUserJourneyMetrics
|
||||
8, // 22: soong_build_metrics.SoongBuildMetrics.events:type_name -> soong_build_metrics.PerfInfo
|
||||
18, // 23: soong_build_metrics.SoongBuildMetrics.mixed_builds_info:type_name -> soong_build_metrics.MixedBuildsInfo
|
||||
9, // 24: soong_build_metrics.SoongBuildMetrics.perf_counters:type_name -> soong_build_metrics.PerfCounters
|
||||
4, // 25: soong_build_metrics.ExpConfigFetcher.status:type_name -> soong_build_metrics.ExpConfigFetcher.ConfigStatus
|
||||
20, // 26: soong_build_metrics.CriticalPathInfo.critical_path:type_name -> soong_build_metrics.JobInfo
|
||||
20, // 27: soong_build_metrics.CriticalPathInfo.long_running_jobs:type_name -> soong_build_metrics.JobInfo
|
||||
28, // [28:28] is the sub-list for method output_type
|
||||
28, // [28:28] is the sub-list for method input_type
|
||||
28, // [28:28] is the sub-list for extension type_name
|
||||
28, // [28:28] is the sub-list for extension extendee
|
||||
0, // [0:28] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_metrics_proto_init() }
|
||||
|
@ -2106,7 +2313,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ProcessResourceInfo); i {
|
||||
switch v := v.(*PerfCounters); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2118,7 +2325,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ModuleTypeInfo); i {
|
||||
switch v := v.(*PerfCounterGroup); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2130,7 +2337,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CriticalUserJourneyMetrics); i {
|
||||
switch v := v.(*PerfCounter); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2142,7 +2349,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CriticalUserJourneysMetrics); i {
|
||||
switch v := v.(*ProcessResourceInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2154,7 +2361,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*SoongBuildMetrics); i {
|
||||
switch v := v.(*ModuleTypeInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2166,7 +2373,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ExpConfigFetcher); i {
|
||||
switch v := v.(*CriticalUserJourneyMetrics); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2178,7 +2385,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*MixedBuildsInfo); i {
|
||||
switch v := v.(*CriticalUserJourneysMetrics); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2190,7 +2397,7 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CriticalPathInfo); i {
|
||||
switch v := v.(*SoongBuildMetrics); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
|
@ -2202,6 +2409,42 @@ func file_metrics_proto_init() {
|
|||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ExpConfigFetcher); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*MixedBuildsInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CriticalPathInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_metrics_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*JobInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
|
@ -2220,7 +2463,7 @@ func file_metrics_proto_init() {
|
|||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_metrics_proto_rawDesc,
|
||||
NumEnums: 5,
|
||||
NumMessages: 13,
|
||||
NumMessages: 16,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
|
|
@ -213,6 +213,30 @@ message PerfInfo {
|
|||
optional string error_message = 8;
|
||||
}
|
||||
|
||||
message PerfCounters {
|
||||
// The timestamp of these counters in nanoseconds.
|
||||
optional uint64 time = 1;
|
||||
|
||||
// A list of counter names and values.
|
||||
repeated PerfCounterGroup groups = 2;
|
||||
}
|
||||
|
||||
message PerfCounterGroup {
|
||||
// The name of this counter group (e.g. "cpu" or "memory")
|
||||
optional string name = 1;
|
||||
|
||||
// The counters in this group
|
||||
repeated PerfCounter counters = 2;
|
||||
}
|
||||
|
||||
message PerfCounter {
|
||||
// The name of this counter.
|
||||
optional string name = 1;
|
||||
|
||||
// The value of this counter.
|
||||
optional int64 value = 2;
|
||||
}
|
||||
|
||||
message ProcessResourceInfo {
|
||||
// The name of the process for identification.
|
||||
optional string name = 1;
|
||||
|
@ -295,6 +319,9 @@ message SoongBuildMetrics {
|
|||
|
||||
// Mixed Builds information
|
||||
optional MixedBuildsInfo mixed_builds_info = 7;
|
||||
|
||||
// Performance during for soong_build execution.
|
||||
repeated PerfCounters perf_counters = 8;
|
||||
}
|
||||
|
||||
message ExpConfigFetcher {
|
||||
|
|
|
@ -46,6 +46,8 @@ type Tracer interface {
|
|||
End(thread Thread)
|
||||
Complete(name string, thread Thread, begin, end uint64)
|
||||
|
||||
CountersAtTime(name string, thread Thread, time uint64, counters []Counter)
|
||||
|
||||
ImportMicrofactoryLog(filename string)
|
||||
|
||||
StatusTracer() status.StatusOutput
|
||||
|
@ -247,3 +249,48 @@ func (t *tracerImpl) Complete(name string, thread Thread, begin, end uint64) {
|
|||
Tid: uint64(thread),
|
||||
})
|
||||
}
|
||||
|
||||
type Counter struct {
|
||||
Name string
|
||||
Value int64
|
||||
}
|
||||
|
||||
type countersMarshaller []Counter
|
||||
|
||||
var _ json.Marshaler = countersMarshaller(nil)
|
||||
|
||||
func (counters countersMarshaller) MarshalJSON() ([]byte, error) {
|
||||
// This produces similar output to a map[string]int64, but maintains the order of the slice.
|
||||
buf := bytes.Buffer{}
|
||||
buf.WriteRune('{')
|
||||
for i, counter := range counters {
|
||||
name, err := json.Marshal(counter.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buf.Write(name)
|
||||
buf.WriteByte(':')
|
||||
value, err := json.Marshal(counter.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buf.Write(value)
|
||||
if i != len(counters)-1 {
|
||||
buf.WriteRune(',')
|
||||
}
|
||||
}
|
||||
buf.WriteRune('}')
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
// CountersAtTime writes a Counter event at the given timestamp in nanoseconds.
|
||||
func (t *tracerImpl) CountersAtTime(name string, thread Thread, time uint64, counters []Counter) {
|
||||
t.writeEvent(&viewerEvent{
|
||||
Name: name,
|
||||
Phase: "C",
|
||||
Time: time / 1000,
|
||||
Pid: 0,
|
||||
Tid: uint64(thread),
|
||||
Arg: countersMarshaller(counters),
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue