• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Performance metrics collected via Chrome's built-in profiler.
6
7syntax = "proto2";
8
9option optimize_for = LITE_RUNTIME;
10
11package metrics;
12
13
14// Next tag: 4
15message ProfilerEventProto {
16  // The type of this profile.
17  enum ProfileType {
18    UNKNOWN_PROFILE = 0;  // Unknown type (should not reach here).
19    STARTUP_PROFILE = 1;  // Startup profile, logged approximately 60 seconds
20                          // after launch.
21  }
22  optional ProfileType profile_type = 1;
23
24  // The source based upon which "time" measurements are made.
25  // We currently only measure wall clock time; but we are exploring other
26  // measurement sources as well, such as CPU time or TCMalloc statistics.
27  enum TimeSource {
28    UNKNOWN_TIME_SOURCE = 0;  // Unknown source (should not reach here).
29    WALL_CLOCK_TIME = 1;      // Total time elapsed between the start and end of
30                              // the task's execution.
31  }
32  optional TimeSource time_source = 2;
33
34  // Data for a single tracked object (typically, a Task).
35  message TrackedObject {
36    // The name of the thread from which this task was posted, hashed.
37    optional fixed64 birth_thread_name_hash = 1;
38
39    // The name of the thread on which this task was executed, hashed.
40    optional fixed64 exec_thread_name_hash = 2;
41
42    // The source file name from which this task was posted, hashed.
43    optional fixed64 source_file_name_hash = 3;
44
45    // Function name from which this task was posted, hashed.
46    optional fixed64 source_function_name_hash = 4;
47
48    // The line number within the source file from which this task was posted.
49    optional int32 source_line_number = 5;
50
51    // The number of times this task was executed.
52    optional int32 exec_count = 6;
53
54    // The total execution time for instances this task.
55    optional int32 exec_time_total = 7;
56
57    // The execution time for a uniformly randomly sampled instance of this
58    // task.
59    optional int32 exec_time_sampled = 8;
60
61    // The total time instances this task spent waiting (e.g. in a message loop)
62    // before they were run.
63    optional int32 queue_time_total = 9;
64
65    // The time that a uniformly randomly sampled instance of this task spent
66    // waiting (e.g.  in a message loop) before it was run.
67    optional int32 queue_time_sampled = 10;
68
69    // The type of process within which this task was executed.
70    enum ProcessType {
71      UNKNOWN = 0;  // Should not reach here
72      BROWSER = 1;
73      RENDERER = 2;
74      PLUGIN = 3;
75      WORKER = 4;
76      NACL_LOADER = 5;
77      UTILITY = 6;
78      PROFILE_IMPORT = 7;
79      ZYGOTE = 8;
80      SANDBOX_HELPER = 9;
81      NACL_BROKER = 10;
82      GPU = 11;
83      PPAPI_PLUGIN = 12;
84      PPAPI_BROKER = 13;
85    }
86    optional ProcessType process_type = 11;
87
88    // The local PID for the process within which this task was executed.
89    optional uint32 process_id = 12;
90  }
91  repeated TrackedObject tracked_object = 3;
92}
93