diff options
author | sque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-15 22:22:05 +0000 |
---|---|---|
committer | sque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-15 22:22:05 +0000 |
commit | b4b49a506210b228e800e32f7adf8e7ba1aab692 (patch) | |
tree | 3cbe49237ab57f9368919b24484fef411ea2b79b | |
parent | e23745cd214d79f6432623a339d9c899746afd11 (diff) | |
download | chromium_src-b4b49a506210b228e800e32f7adf8e7ba1aab692.zip chromium_src-b4b49a506210b228e800e32f7adf8e7ba1aab692.tar.gz chromium_src-b4b49a506210b228e800e32f7adf8e7ba1aab692.tar.bz2 |
Add new SampledProfile protobuf definition
This will replace the repeated PerfDataProto field in the UMA protobuf. It
provides for more metadata surrounding the collection of each profile. It
also allows for more types of profiles to be collected, other than perf.
BUG=chromium:358778
TEST=build successfully
Signed-off-by: Simon Que <sque@chromium.org>
Review URL: https://codereview.chromium.org/226273004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270832 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | components/metrics.gypi | 1 | ||||
-rw-r--r-- | components/metrics/proto/chrome_user_metrics_extension.proto | 7 | ||||
-rw-r--r-- | components/metrics/proto/sampled_profile.proto | 42 |
3 files changed, 49 insertions, 1 deletions
diff --git a/components/metrics.gypi b/components/metrics.gypi index 61e9855..5c9b1f9 100644 --- a/components/metrics.gypi +++ b/components/metrics.gypi @@ -37,6 +37,7 @@ 'metrics/proto/omnibox_event.proto', 'metrics/proto/perf_data.proto', 'metrics/proto/profiler_event.proto', + 'metrics/proto/sampled_profile.proto', 'metrics/proto/system_profile.proto', 'metrics/proto/user_action_event.proto', ], diff --git a/components/metrics/proto/chrome_user_metrics_extension.proto b/components/metrics/proto/chrome_user_metrics_extension.proto index 80f3499..7efa5b4 100644 --- a/components/metrics/proto/chrome_user_metrics_extension.proto +++ b/components/metrics/proto/chrome_user_metrics_extension.proto @@ -16,8 +16,9 @@ import "profiler_event.proto"; import "system_profile.proto"; import "user_action_event.proto"; import "perf_data.proto"; +import "sampled_profile.proto"; -// Next tag: 11 +// Next tag: 12 message ChromeUserMetricsExtension { // The product (i.e. end user application) for a given UMA log. enum Product { @@ -54,5 +55,9 @@ message ChromeUserMetricsExtension { repeated HistogramEventProto histogram_event = 6; repeated ProfilerEventProto profiler_event = 7; + // TODO(sque): Deprecate this field and use |sampled_profile| instead. repeated PerfDataProto perf_data = 8; + + // A list of all collected sample-based profiles since the last UMA upload. + repeated SampledProfile sampled_profile = 11; } diff --git a/components/metrics/proto/sampled_profile.proto b/components/metrics/proto/sampled_profile.proto new file mode 100644 index 0000000..86f07be --- /dev/null +++ b/components/metrics/proto/sampled_profile.proto @@ -0,0 +1,42 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +syntax = "proto2"; + +option optimize_for = LITE_RUNTIME; + +package metrics; + +import "perf_data.proto"; + +// Protocol buffer for collected sample-based profiling data. +// Contains the parameters and data from a single profile collection event. + +// Next tag: 5 +message SampledProfile { + // Indicates the event that triggered this collection. + enum TriggerEvent { + UNKNOWN_TRIGGER_EVENT = 0; + + // The profile was triggered by periodic sampling. Periodically sampled + // profiles are collected once per uniformly sized period interval. Within + // each interval, the sampled data is collected at a random time. For + // example, if the interval is 60 s, then data would be collected at a + // random point in each of the intervals [0, 60 s), [60 s, 120 s), etc. + PERIODIC_COLLECTION = 1; + } + optional TriggerEvent trigger_event = 1; + + // Fields 2-3: Time durations are given in ticks, and represent system uptime + // rather than wall time. + + // Time after system boot when the collection took place, in milliseconds. + optional int64 ms_after_boot = 2; + + // Time after last login when the collection took place, in milliseconds. + optional int64 ms_after_login = 3; + + // The actual perf data that was collected. + optional PerfDataProto perf_data = 4; +} |