| // 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. |
| // |
| // Performance metrics collected via Chrome's built-in profiler. |
| |
| syntax = "proto2"; |
| |
| option optimize_for = LITE_RUNTIME; |
| option java_outer_classname = "ProfilerEventProtos"; |
| option java_package = "org.chromium.components.metrics"; |
| |
| package metrics; |
| |
| // Next tag: 7 |
| message ProfilerEventProto { |
| // The version of this profile. |
| enum ProfileVersion { |
| VERSION_UNKNOWN = 0; // Unknown version (should not reach here). |
| VERSION_STARTUP_PROFILE = 1; // Startup profile, logged approximately 60 |
| // seconds after launch. |
| VERSION_SPLIT_PROFILE = 2; // Part of a profile logged in pieces, where |
| // we finish a piece when a ProfilerEvent or a |
| // special end-of-recording event gets |
| // triggered. |
| } |
| optional ProfileVersion profile_version = 1; |
| |
| // The source based upon which "time" measurements are made. |
| // We currently only measure wall clock time; but we are exploring other |
| // measurement sources as well, such as CPU time or TCMalloc statistics. |
| enum TimeSource { |
| UNKNOWN_TIME_SOURCE = 0; // Unknown type (should not reach here). |
| WALL_CLOCK_TIME = 1; // Total time elapsed between the start and end of |
| // the task's execution. |
| } |
| optional TimeSource time_source = 2; |
| |
| // An event in the browser life that causes the client-side profiler framework |
| // to finish recording of its current instance of ProfilerEventProto, and |
| // start recording a new one. |
| // It's not guaranteed that the events get triggered in the order they are |
| // defined. |
| enum ProfilerEvent { |
| // The first non-empty paint of the first web contents happened. |
| // Corresponds to the Startup.FirstWebContents.NonEmptyPaint2 histogram. |
| EVENT_FIRST_NONEMPTY_PAINT = 0; |
| } |
| |
| // The set of events, in no particular order, that were triggered in the |
| // current Chrome session before the recording of this ProfilerEventProto |
| // started. It doesn't include the event that triggered the end of this |
| // ProfilerEventProto. A given event will not occur twice in this set. |
| // The field can be used to find all ProfilerEventProto instances recorded |
| // before or not before a given event. |
| repeated ProfilerEvent past_session_event = 4; |
| |
| // Time when profiling started. This is recorded as a time delta relative to |
| // the start time of the profiler data recording in the current browser |
| // session. |
| optional int64 profiling_start_ms = 5; |
| |
| // Time when profiling finished. This is recorded as a time delta relative to |
| // the start time of the profiler data recording in the current browser |
| // session. |
| optional int64 profiling_finish_ms = 6; |
| |
| // Data for a single tracked object (typically, a Task). |
| message TrackedObject { |
| // The name of the thread from which this task was posted, hashed. |
| optional fixed64 birth_thread_name_hash = 1; |
| |
| // The name of the thread on which this task was executed, hashed. |
| optional fixed64 exec_thread_name_hash = 2; |
| |
| // The source file name from which this task was posted, hashed. |
| optional fixed64 source_file_name_hash = 3; |
| |
| // Function name from which this task was posted, hashed. |
| optional fixed64 source_function_name_hash = 4; |
| |
| // The line number within the source file from which this task was posted. |
| optional int32 source_line_number = 5; |
| |
| // The number of times this task was executed. |
| optional int32 exec_count = 6; |
| |
| // The total execution time for instances this task. |
| optional int32 exec_time_total = 7; |
| |
| // The execution time for a uniformly randomly sampled instance of this |
| // task. |
| optional int32 exec_time_sampled = 8; |
| |
| // The total time instances this task spent waiting (e.g. in a message loop) |
| // before they were run. |
| optional int32 queue_time_total = 9; |
| |
| // The time that a uniformly randomly sampled instance of this task spent |
| // waiting (e.g. in a message loop) before it was run. |
| optional int32 queue_time_sampled = 10; |
| |
| // The type of process within which this task was executed. |
| enum ProcessType { |
| UNKNOWN = 0; // Should not reach here |
| BROWSER = 1; |
| RENDERER = 2; |
| PLUGIN = 3; // Deprecated. Should not be sent as of M51 due to |
| // NPAPI removal. |
| WORKER = 4; |
| NACL_LOADER = 5; |
| UTILITY = 6; |
| PROFILE_IMPORT = 7; |
| ZYGOTE = 8; |
| SANDBOX_HELPER = 9; |
| NACL_BROKER = 10; |
| GPU = 11; |
| PPAPI_PLUGIN = 12; |
| PPAPI_BROKER = 13; |
| } |
| optional ProcessType process_type = 11; |
| |
| // The local PID for the process within which this task was executed. |
| optional uint32 process_id = 12; |
| } |
| repeated TrackedObject tracked_object = 3; |
| } |