summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 22:22:05 +0000
committersque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 22:22:05 +0000
commitb4b49a506210b228e800e32f7adf8e7ba1aab692 (patch)
tree3cbe49237ab57f9368919b24484fef411ea2b79b
parente23745cd214d79f6432623a339d9c899746afd11 (diff)
downloadchromium_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.gypi1
-rw-r--r--components/metrics/proto/chrome_user_metrics_extension.proto7
-rw-r--r--components/metrics/proto/sampled_profile.proto42
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;
+}