Get desktop application:
View/edit binary Protocol Buffers messages
The active memory allocations at the peak memory usage.
Used in:
The index of a snapshot in the time-sorted list, used to fetch the MemoryActivityMetadata at front end from the memory_profile_snapshots list.
The index of MemoryActivityMetadata in the special_allocations list.
Number of occurrences for identical memory allocations.
Result database for all-reduce ops.
Used in:
Result proto for all -educe ops.
Used in:
Unique id for all-reduce ops.
The name of the hlo op. This field is no longer set by the profiler.
For all-reduce nodes from different modules, if they have the same all_reduce_id, they will be 'Allreduce'd'. If empty, AllReduce will not be applied across modules.
The start time in picoseconds of the op event.
The end time in picoseconds of the op event.
The size of the op in bytes.
Used in:
Name of this OP.
Number of instances that this OP occurred.
The time in microseconds spent in this OP (averaged across all of its occurrences).
Byte size of data transferred.
Replica groups.
Description (e.g. XLA expression).
Generic hardware bottleneck.
Percentage of step time that is spent on input.
Percentage of step time that is spent on output.
Percentage of step time that is idle for non-I/O-related reason.
Percentage of step time that is spent on compute.
Indicates if input is a bottleneck. Possible values: "host", "device", "both", or "unknown"
A human-readable description of the input bottleneck.
Indicates if kernel launching is a bottleneck. Possible values: "no", "moderate", "high".
A human-readable description of the kernel launching overhead.
Indicates if all other is a bottleneck. Possible values: "no", "moderate", "high".
A human-readable description of the all other overhead.
Indicates if device collective communication is a bottleneck. Possible values: "no", "moderate", "high".
A human-readable description of the device collective communication overhead.
Used in:
Describes the start / exclusive limit HLO program points for a given buffer lifetime, used for rendering a box on the plot.
Used in:
Next ID: 14 Information about a send and recv channel.
Used in:
Id of the channel.
Core ids of send ops.
Core ids of recv ops.
Byte size of the data transferred.
Duration from the beginning of send to the end of recv-done in microseconds.
Number of occurrences of a channel.
Percentage of the link BW utilized over the peak link BW.
A list of hlo names associated with this channel id.
Duration from the beginning of the recv-done to the beginning of send in microseconds. If the recv-done op starts after the beginning of the send op, the delay is zero.
Description (e.g. XLA expression).
TfDataStats of all hosts.
Whether it is input bound.
Summary of the analysis.
Bottleneck analysis result.
TfDataStats per host.
Next ID: 7
Used in:
unique within host, TPU core only
unique within chip per core type
unique within host
unique within mesh
unique within mesh, TPU core only
A 'device' is a physical entity in the system and is comprised of several resources.
Used in:
The name of the device.
The id of this device, unique in a single trace.
The resources on this device, keyed by resource_id;
Bytes/s.
Information about memory transfer to/from device memory.
Used in:
Used in: , , , ,
Used in:
Indicates if kernel launch is a performance bottleneck. Possible values: "no", "moderate", "high".
A statement that recommends if we need to further investigate kernel-launch performance.
Indicates if all other is a performance bottleneck. Possible values: "no", "moderate", "high".
A statement that recommends if we need to further investigate all-other performance.
A statement that recommends if the user should try using lower precision. Shows this statement to users only if it is not empty.
Indicates if device collectives are a performance bottleneck. Possible values: "no", "moderate", "high".
A statement that recommends if we need to further investigate device-collectives performance.
Breakdown of step-time on generic hardware. Note that these components are mutually exclusive so that adding them together is equal to the step time. If an execution time interval has multiple types of event happening, we need to pick one of the event type to attribute the time interval to.
Map event type to the accumulated duration in picoseconds of that type.
Summary of all unknown time as a part of step in ms.
Summary of all host-wait-input time as a part of step in ms.
Summary of all host-to-device time as a part of step in ms.
Summary of all input time as a part of step in ms.
Summary of all output time as a part of step in ms.
Summary of all device-compute time as a part of step in ms.
Summary of all device-to-device time as a part of step in ms.
Summary of all device-collectives time as a part of step in ms.
Summary of all host-compute time as a part of step in ms.
Summary of all host-prepare time as a part of step in ms.
Summary of all compilation time as a part of step in ms.
Types of hardware profiled.
Unknown hardware.
CPU only without any hardware accelerator.
GPU.
TPU.
Describes a heap object that is displayed in a plot in the memory visualization HTML.
Used in:
Result proto for host-dependent job information.
Used in:
This ID of the host where the job was run on.
The command line used to run the job.
The start time of this run (nanoseconds since the Unix epoch).
BNS address specified by client at time of profiling request.
Profiling start walltime (in ns).
Result proto for host-independent job information.
Used in:
The change-list number of this build.
The time of this build (nanoseconds since the Unix epoch).
The target of this build.
Profiling duration (in ms).
Used in:
The Op's name.
The number of occurrences.
Time (accumulated over all occurrences) in milliseconds.
Time (accumulated over all occurrences) in percentage of the total input processing time.
Self time (accumulated over all occurrences) in milliseconds.
Self time (accumulated over all occurrences) in percentage of the total input processing time.
Possible categories: "Enqueue", "Advanced file read", "Demanded file read", "Preprocessing", "Unknown".
Used in:
A list of detailed recommendations.
An analysis of different types of bottlenecks. Can be unpacked into a BottleneckAnalysis.
A suggested step to take next.
Used in:
Hardware type.
Summary of all step duration across all cores.
Summary of all input-related stall as percentage of step duration.
Percentage of step time that is waiting for input.
Percentage of step time that is doing output.
Percentage of step time that is idle for non-I/O-related reason.
Percentage of step time that is doing compute.
Details of each step. Can be unpacked into a PerGenericStepDetails.
The breakdown of the input processing time.
Details of each input Op executed.
Recommendation for next steps to users.
Breakdown of the step time. Can be unpacked into a GenericStepTimeBreakdown.
Error and warning messages for diagnosing profiling issues.
Metadata for input pipeline.
Used in:
Id of the input pipeline which is set to the id of its root iterator.
The distribution strategy creates one "host" input pipeline which actually runs tf.data user code. Also, it creates a "device" input pipeline per device (e.g., TensorCore) which takes an element from the host input pipeline and transfers it to the device.
Used in:
Stat and metadata for input pipeline.
Used in:
Id of the blocking iterator with the longest self time.
Latency of the bottleneck iterator.
Stats per iterator.
Collection of metadata and stats of input pipeline.
Used in:
Metadata of the input pipeline.
Average latency (i.e., the root iterator's latency) of the input pipeline.
Minimum latency of the input pipeline.
Maximum latency of the input pipeline.
The number of times this input pipeline was slower than 50 us.
Stats per call sorted by the root iterator's duration.
Used in:
Time spent on demanded file read in microseconds.
Time spent on advanced file read in microseconds.
Time spent on data preprocessing in microseconds.
The infeed enqueue time in microseconds.
This entry is for the situtation where we can't further break down the non-enqueue input time (because the input pipeline is not instrumented).
Metadata for iterator.
Used in:
Id of the iterator.
Id of the parent iterator.
Name of the iterator.
Long name of the iterator.
Whether it is an async iterator.
Parameters of the iterator (e.g., num_parallel_calls).
Stat for iterator.
Used in:
Id of the iterator.
Start time of the iterator's GetNext in ps.
Duration of the iterator's GetNext in ps.
Self time of the iterator's GetNext in ps. It takes account into async iterators. It is calculated by subtracting the time overlapped with its child iterator's duration from the iterator's duration.
Whether it is blocking the root iterator. An async iterator's child iterator may not block its parent iterator if it is executed in advance and does not overlap with the parent iterator.
The number of times this iterator is called. For example, a batch iterator's child iterator may be called multiple times.
Next ID: 15
Used in:
Name of the kernel.
Registers per thread.
Static shared memory in bytes.
Dynamic shared memory in bytes.
Block dimensions.
Grid dimensions.
Total duration of this kernel.
Min duration of kernel in nanoseconds.
Max duration of kernel in nanoseconds.
Kernel utilizes TensorCore instructions.
Operation is eligible to use TensorCores.
TF operation name.
Number of occurrences.
Occupancy percentage.
Used in:
A list of kernels aggregated by name.
Data layout of an op.
Used in:
The physical data layout, from most-minor to most-major dimensions.
Physical data layout in each tensor dimension.
Used in:
Size of the data in this dimension.
Data must be padded to a multiple of alignment.
What the dimension represents.
What the dimension represents, e.g. spatial, feature or batch.
Used in:
Used in:
The memory activity that causes change of memory state.
Used in:
Memory allocation in heap.
Memory deallocation in heap.
Memory reservation for stack.
Expansion of existing memory allocation.
The metadata associated with each memory allocation/deallocation. It can also be interpreted as the metadata for the delta of memory state. Next ID: 10
Used in: ,
The activity associated with the MemoryProfileSnapshot.
The requested memory size in bytes from the caller of memory allocation. Should be a positive number.
The allocated (block/chunk) size for the memory allocation. Should be a positive number.
Starting address of the allocated memory chunk/block.
TensorFlow Op name for the memory activity.
Step Id at which the memory activity occurred.
Tensor memory region type including "output", "temp", "persist", and "dynamic".
From enum DataType defined in tensorflow/core/framework/types.proto.
Tensor shape printed in string, e.g. "[3, 3, 512, 512]".
The aggregated memory stats including heap, stack, free memory and fragmentation at a specific time.
Used in: ,
Memory usage by stack reservation, in bytes.
Memory usage by heap allocation, in bytes.
Free memory available for allocation or reservation, in bytes.
Fragmentation value within [0, 1].
The peak memory usage over the entire program (lifetime of memory allocator). It monotonically increases with upper limit as memory capacity.
Data for memory usage analysis in one host.
A map from memory allocator's id to PerAllocatorMemoryProfile for memory usage analysis on this host.
Number of hosts profiled, used to populate host selection list at front end.
Ids for profiled memory allocators, used to populate memory selection list at front end.
Version number of MemoryProfile proto.
Profile snapshot of the TensorFlow memory at runtime, including MemoryAggregationStats (memory usage breakdown etc.), and MemoryActivityMetadata (allocation or deallocation, TF Op name etc.).
Used in:
Memory activity timestamp.
The memory aggregation stats at the snapshot time.
The metadata for the memory activity at the snapshot time.
The summary of memory profile within the profiling window duration.
Used in:
The peak memory usage over the entire program (lifetime of memory allocator).
The peak memory usage stats within the profiling window.
The timestamp for peak memory usage within the profiling window.
The memory capacity of the allocator.
Metrics for an operation (accumulated over all occurrences). Next ID: 24
Used in:
HLO module id. 0 for TF ops.
Name of this op.
Long name of this op (e.g., HLO expression).
Category of this op.
Provenance of this op (e.g., if HLO op, original TF op).
Whether it is executed eagerly.
Number of executions.
Total time (self + children) in picoseconds.
Minimum time (self + children) among all occurrences.
Total self time in picoseconds.
Total FLOPs.
Total bytes accessed.
Total dma stall time in picoseconds.
The data layout for this op. Only set for convolution ops for now.
Deduplicated HLO name for this op. Not set for TF ops.
Children of the op. e.g. fused ops if this op is fusion.
Number of cores this op occurs.
Computation primitive size in BITS. This is the size of the type of the hardware computation. In the future this may be extended to include info such as signed/unsigned, int/fp, etc. Currently only the size is needed.
Whether the op is autotuned.
Breakdown of memory accessed by operation type and memory space.
Used in:
Device-specific id of memory space.
Used in:
A database for OpMetrics. Next ID: 14
Used in: , ,
A bunch of OpMetrics.
The total host infeed-enqueue duration in picoseconds.
The total of the difference between the start times of two consecutive infeed-enqueues (per host) in picoseconds.
The total time in picoseconds.
The total time incurred by OPs in picoseconds.
Precision-related stats.
Next ID: 14 Operator Statistics.
The database for the op metrics collected from the host over the entire profiling session including incomplete steps.
The database for the op metrics collected from the device over the entire profiling session including incomplete steps.
The result for the HLO-metric database over the complete steps only.
Performance environment of the op metrics collected.
The database of step sequences.
The run environment of this profiling session.
Kernel stats results from all GPUs.
Statistics for all tf-functions.
A map from core ID to details.
Error and warning messages for diagnosing profiling issues.
A map from program ID to program name.
Performance counters.
The run environment of the profiled session.
The step-time result.
The other analysis result.
The recommendation made to the user.
Error and warning messages for diagnosing profiling issues.
Overview result for general analysis.
Used in:
MXU utilization in percentage.
Percentage of the device time that is idle.
Percentage of the host time that is idle.
Top TF Ops executed on the device.
Remark text in the performance summary section.
Color of the remark text.
FLOP rate utilization relative to the roofline in percentage.
Memory bandwidth utilization relative to the hw limit in percentage.
Percentage of device computation that is 16-bit.
Percentage of device computation that is 32-bit.
Percentage of TF ops executed on the host.
Percentage of TF ops executed on the device.
Host trace level.
Percentage of TF-op execution time on the host (excluding the idle time) that are in eager mode.
Percentage of TF-op execution time on the device (excluding the idle time) that are in eager mode.
Percentage of TF-op execution time on the device (excluding the idle time) that are for outside compilation.
Percentage of the device time that is in use.
Result proto for host-dependent job information.
Used in:
This ID of the host where the job was run on.
The command line used to run the job.
The start time of this run (nanoseconds since the Unix epoch).
BNS address specified by client at time of profiling request.
Profiling start walltime (in ns).
Result proto for host-independent job information.
Used in:
The change-list number of this build.
The time of this build (nanoseconds since the Unix epoch).
The target of this build.
Profiling duration (in ms).
Overview result for the recommendation section.
Used in:
Possible performance bottleneck: "host", "device", "both".
A statement for input that recommends the next steps for investigating the bottleneck.
A list of tips for tackling input bottleneck.
A statement for output that recommends the next steps for investigating the bottleneck.
A statement that recommends the next steps for investigating eager-mode related bottleneck (it is an html so that it can link to other tools/docs.)
A statement that recommends the next steps for investigating outside-compilation related bottleneck (it is an html so that it can link to other tools/docs.)
A statement that recommends the next steps for investigating tf-function related bottleneck (it is an html so that it can link to other tools/docs.)
A list of tips for improving host performance.
A list of tips for improving device performance.
A list of links to related useful documents.
// The recommendation made to the user. Can be unpacked into a GenericRecommendation.
A list of tips for FAQ.
A list of tips for inference run.
The run environment of a profiling session.
Used in:
Number of hosts used.
Number of tasks used.
Distinct hostnames seen.
The type of device used.
The number of device cores used. In TPU case, this corresponds to the number of TPU cores In GPU case, this corresponds to the number of GPUs (not the number of SMs).
Host-independent information about this job.
Host-dependent information about this job.
The number of replicas, corresponds to input parallelism. If there is no model parallelism, replica_count = device_core_count
The number of cores used for a single replica, e.g. model parallelism. If there is no model parallelism, then num_cores_per_replica = 1
Overview result for a performance tip to users.
Used in:
Link to the tip.
Overview result for a TensorFlow Op.
Used in:
Name of the Op.
Category of the Op.
The amount of time that this Op takes by itself as fraction of the total execution time on the device or host.
The cumulative time upto this Op as fraction of the total execution time.
How many GFlops/sec that this Op achieves.
Whether the Op is eligible to use TensorCores.
Whether at least one of the kernels launched in this op is using TensorCore.
Memory profile snapshots per memory allocator.
Used in:
A list of MemoryProfileSnapshots referenced by <active_allocations>.
The summary of memory profile (e.g. the peak memory usage).
The rows in the table of active allocations at peak memory usage within profiling window.
The special allocations (e.g. pre-allocated heap memory, stack reservation) that are not captured in the MemoryActivityMetadata of memory_profile_snapshots. Need to handle separately.
A list of MemoryProfileSnapshots sampled from all the snapshots during the profiling window. It is used to display the memory timeline graph in the frontend. The snapshots are sorted by timestamp.
Result proto for information in a step across all cores.
Used in:
The step number.
A map from core_id to StepInfo.
The result for the per-step HLO-metric database.
A map from core ID to program replica id. Replica id map could change during a profile session, but should stay stable within a step.
A map from core_id to all-reduce ops.
Information about deivce memory transfers, categoried by source and destination. Ordered by following categories: 1. HostToDevice 2. DeviceToHost 3. DeviceToDevice
Per-step details on generic hardware.
The step number of a step.
The step name.
The step time (in ms).
Breakdown of the step time in different event categories. The unknown time (in ms).
The time (in ms) in which the host is waiting for input data to be ready.
The time (in ms) in which the host is sending input data to the device. Total input time = host_wait_input_ms + host_to_device_ms.
The output time (in ms).
The device-compute time (in ms).
The device-to-device communication time (in ms).
The device time spent on collective communications (in ms).
The host-compute time (in ms).
The host-prepare time (in ms).
The time spent on compiling (in ms).
Performance environment, e.g the peak performance capabilities of the device.
Used in:
Peak performance of a TPU core or a GPU in TFLOP/s.
Peak memory bandwidth of a TPU core or a GPU in GiBs/s.
The ridge point of roofline model in FLOP/Byte. (i.e., minimum operational intensity required to achieve maximum performance).
Metrics based on hardware performance counters.
Used in:
Overall matrix unit utilization in percentage.
A database of PodStats records.
All PodStats records, one for each row in the PodStats tool.
Error and warning messages for diagnosing profiling issues.
A map from event type number to event name string for step breakdown.
Result proto for information in a step across all cores.
Used in:
The (micro) step number.
A map from core_id to PodStatsRecord.
A database of channel info.
A map from core ID to program replica id. Replica id map could change during a profile session, but should stay stable within a step.
A database of all reduce ops.
Next ID: 20 There is one PodStatsRecord for each step traced on each compute node.
Used in: ,
The host name where the trace was collected.
The TPU global chip id where the trace was collected.
The TPU node id where the trace was collected.
The step number.
The step duration in micro-seconds.
Breakdown the durations for each event type in micro-seconds.
Indicates the bottleneck out of the above mentioned metrics.
A sequence of PodStatsMap for each step.
Used in:
Next ID: 12 A database of pod viewer records.
The type of device used.
Pod level stats for each step.
Top level summary of pod viewer.
Error and warning messages for diagnosing profiling issues.
A map from event type number to event name string for step breakdown.
Info to draw the topology graph.
Used in:
Next ID: 8 Topology graph draws all the cores in the system in a 2-D rectangle or 3-D cube. It is hierarchically grouped by host, chip and core.
Used in:
Number of cores in the x dimension of the rectangle/cube.
Number of cores in the y dimension of the rectangle/cube.
Number of cores in the z dimension of the cube.
Number of cores in the x dimension of each host.
Number of cores in the y dimension of each host.
Number of cores in the z dimension of each host.
Number of cores per chip.
Statistics about the various precision used in computation.
Used in:
Amount of time spent on 16-bit computation (in ps).
Amount of time spent on 32-bit computation (in ps).
Groups together all results from the preprocessing C++ step.
Heap sizes at each HLO program point (the HLO sequential order).
Unpadded heap sizes (calculated as the minimal sizes based on the data type and dimensionality) at each HLO program point (the HLO sequential order).
Heap objects at the peak memory usage point ordered by HLO program "birth" time.
Heap objects at the peak memory usage point ordered by size, descending.
Mapping from logical buffer ID to the HLO sequential order span in which it is alive.
Indexes to get back and forth from the by-size and by-program-order sequences.
Peak heap size for the HLO program.
Peak unpadded heap size for the HLO program.
HLO program point number at which the peak heap size occurs.
Size of the entry computation parameters in MiB. This does not reflect whether those MiB are reusable during the computation or not, it is simply a size value.
Describes the replica groups in a cross replica op (e.g., all-reduce and all-to-all).
Used in:
The ids of the replicas that belongs to the same group. The ordering of the ids matters in some ops (e.g., all-to-all).
A 'resource' generally is a specific computation component on a device. These can range from threads on CPUs to specific arithmetic units on hardware devices.
Used in:
The name of the resource.
The id of the resource. Unique within a device.
The sort index of the resource. Resources within a device are ordered by this value. if absent, use resource id as sort index.
The run environment of a profiling session.
Used in:
Number of hosts used.
Number of tasks used.
Distinct hostnames seen.
The type of device used.
The number of device cores used. In TPU case, this corresponds to the number of TPU cores In GPU case, this corresponds to the number of GPUs (not the number of SMs).
Host-independent information about this job.
Host-dependent information about this job.
The number of replicas, corresponds to input parallelism. If there is no model parallelism, replica_count = device_core_count
The number of cores used for a single replica, e.g. model parallelism. If there is no model parallelism, then num_cores_per_replica = 1
The chip interconnection topology.
Host trace level.
Used in: ,
Result proto for a StepDatabase.
Used in:
A sequence of PerCoreStepInfo.
Whether the step db uses incomplete step information. This flag is set to true when: 1) no step marker or annotation present. 2) profiling duration is too short to cover a full step. If this flag is false, we will group and breakdown the profile by complete steps only and ignore incomplete steps. If this flag is true, we will simply aggregate and breakdown over the total profile as a single step.
Number of steps dropped during post processing.
If the step_sequence is empty because: * there is no step profiled on any host, then empty_intersect is false. * there are steps profiled on some host, but the intersection of steps over all hosts is empty, then empty_intersect is true.
Next ID: 6 Result proto for StepInfo.
Used in:
The step number.
The step name.
The step duration in picoseconds.
The start time of this step in picoseconds.
Breakdown of the step-time. Can be unpacked into a GenericStepBreakdown.
Used for both step duration and Op duration.
Used in: ,
System topology, which describes the number of chips in a pod and the connectivity style.
Used in:
The X, Y, and Z dimensions of this topology. 0 means that dimension does not exist.
The number of expected bad chips in this system.
Used in:
Host name.
Input pipeline name.
Maximum latency of the input pipeline.
Name of the bottleneck iterator.
Long name of the bottleneck iterator.
Latency of the bottleneck iterator.
Suggestion to resolve the bottleneck.
Collection of stats of tf.data input pipelines within a host.
Used in:
Metadata per iterator.
Stats per input pipeline.
Statistics for a tf-function.
Used in:
A map from each execution mode to its corresponding metrics.
Total tracing count from the program's beginning (i.e. beyond the profiling period) of this tf-function.
Compiler used to compile this function.
Percentage of time spent in the expensive calls to this function in the profiled period.
All possible compilers that can be used to compile a tf-function in the graph mode.
Used in:
Yet to be set.
Any other compiler.
If some instance of the function is compiled with XLA and some is compiled with Non-XLA, use "MIXED_COMPILER".
XLA compiler.
MLIR compiler.
Statistics for all tf-functions.
Used in:
A map from function name to the statistics of that function.
All possible execution modes of a tf-function.
Yet to be set.
Eager execution.
Graph execution with tracing.
Graph execution without tracing.
Concrete function.
Metrics associated with a particular execution mode of a tf-function.
Used in:
Number of invocations to the function in that execution mode.
The sum of "self-execution" time of this function over those invocations.
A database of TfStatsTables.
The table that includes IDLE time.
The table that excludes IDLE time.
The type of device used.
There is one TfStatsRecord for each TF operation profiled.
Used in:
Rank of this TF-op among all TF-ops.
Whether this TF-op is on "Host" or "Device".
TF-op type.
TF-op name.
Number of occurrences of the operation.
Total "accumulated" time in micro-seconds that the operation took. If this operation has any children operations, the "accumulated" time includes the time spent inside children.
Average "accumulated" time in micro-seconds that each occurrence of the operation took.
Total "self" time in micro-seconds that the operation took. If this operation has any children operations, the "self" time doesn't include the time spent inside children.
Average "self" time in micro-seconds that the operation took.
Total "self" time as fraction of the sum of the total self-time of operations run on the device. It is 0 if this op runs on the host.
Cumulative value of device_total_self_time_as_fraction.
Total "self" time as fraction of the sum of the total self-time of operations run on the host. It is 0 if this op runs on the device.
Cumulative value of host_total_self_time_as_fraction.
Number of floating-point operations (FLOPs) performed per second.
Number of bytes (including both read and write) accessed per second.
Operational intensity, which is defined as FLOPs/bytes-accessed.
Whether this operation is "Compute" or "Memory" bound, according to the Roofline Model.
Whether this TF-op is eagerly executed.
Fraction of kernel time that utilizes GPU TensorCore. It is 0.0 if this op does not run on a GPU device.
A table of TFStatsRecords plus the corresponding pprof keys.
Used in:
All TfStats records, one for each TF operation.
key to the pprof profile for host TF operations.
key to the pprof profile for device TF operations.
A 'Trace' contains metadata for the individual traces of a system.
The devices that this trace has information about. Maps from device_id to more data about the specific device.
All trace events capturing in the profiling period.
Used in:
The id of the device that this event occurred on. The full dataset should have this device present in the Trace object.
The id of the resource that this event occurred on. The full dataset should have this resource present in the Device object of the Trace object. A resource_id is unique on a specific device, but not necessarily within the trace.
The name of this trace event.
The timestamp that this event occurred at (in picos since tracing started).
The duration of the event in picoseconds if applicable. Events without duration are called instant events.
Extra arguments that will be displayed in trace view.
An XEvent is a trace event, optionally annotated with XStats. Next ID: 6
Used in:
XEventMetadata.id of corresponding metadata.
Start time of the event in picoseconds, as offset from XLine.timestamp_ns().
Number of occurrences of the event, if aggregated.
Duration of the event in picoseconds. Can be zero for an instant event.
XStats associated with the event. Each of these XStats should have a different metadata_id.
Metadata for an XEvent, corresponds to an event type and is shared by all XEvents with the same metadata_id. Next ID: 7
Used in:
XPlane.event_metadata map key.
Name of the event.
Name of the event shown in trace viewer.
Additional metadata in serialized format.
XStats that are constant for all XEvents with the same metadata_id. Each of these XStats should have a different metadata_id.
XPlane.event_metadata map key for children events.
An XLine is a timeline of trace events (XEvents). Next ID: 12
Used in:
Id of this line, can be repeated within an XPlane. All XLines with the same id are effectively the same timeline.
Display id of this line. Multiple lines with the same display_id are grouped together in the same trace viewer row.
Name of this XLine.
Name of this XLine to display in trace viewer.
Start time of this line in nanoseconds since the UNIX epoch. XEvent.offset_ps is relative to this timestamp.
Profiling duration for this line in picoseconds.
XEvents within the same XLine should not overlap in time, but they can be nested.
An XPlane is a container of parallel timelines (XLines), generated by a profiling source or by post-processing one or more XPlanes. Next ID: 7
Used in:
Name of this line.
Parallel timelines grouped in this plane. XLines with the same id are effectively the same timeline.
XEventMetadata map, each entry uses the XEventMetadata.id as key. This map should be used for events that share the same ID over the whole XPlane.
XStatMetadata map, each entry uses the XStatMetadata.id as key. This map should be used for stats that share the same ID over the whole XPlane.
XStats associated with this plane, e.g. device capabilities. Each of these XStats should have a different metadata_id.
A container of parallel XPlanes, generated by one or more profiling sources. Next ID: 5
Errors (if any) in the generation of planes.
Warnings (if any) in the generation of planes;
List of hostnames that XPlanes are generated from.
An XStat is a named value associated with an XEvent, e.g., a performance counter value, a metric computed by a formula applied over nested XEvents and XStats. Next ID: 8
Used in: , ,
XStatMetadata.id of corresponding metadata.
Value of this stat.
A string value that stored in XStatMetadata::name.
Metadata for an XStat, corresponds to a stat type and is shared by all XStats with the same metadata_id. Next ID: 4
Used in:
XPlane.stat_metadata map key.
Name of the stat (should be short). Two XStatMetadata with different id should have different names.
Description of the stat (might be long).