From 678a87714557fdfbf5fad51d6f1b6810acf25bf0 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Wed, 23 Aug 2023 11:04:31 -0700 Subject: [PATCH 01/17] wip --- text/profiles/0000-profiles-data-model.md | 293 ++++++++++++++++++ .../images/otep0000/profiles-data-model.png | Bin 0 -> 92128 bytes 2 files changed, 293 insertions(+) create mode 100644 text/profiles/0000-profiles-data-model.md create mode 100644 text/profiles/images/otep0000/profiles-data-model.png diff --git a/text/profiles/0000-profiles-data-model.md b/text/profiles/0000-profiles-data-model.md new file mode 100644 index 000000000..aaf07e44a --- /dev/null +++ b/text/profiles/0000-profiles-data-model.md @@ -0,0 +1,293 @@ +# Profiles Data Model + +Introduce Data Model for Profiles signal to OpenTelemetry. + + +* [Motivation](#motivation) +* [Design Notes](#design-notes) + * [Design Goals](#design-goals) +* [Data Model](#data-model) + * [Relationships Diagram](#relationships-diagram) + * [Message Descriptions](#message-descriptions) + * [`ProfilesData`](#profilesdata) + * [`ResourceProfiles`](#resourceprofiles) + * [`ScopeProfiles`](#scopeprofiles) + * [`Profile`](#profile) + * [`AttributeSet`](#attributeset) + * [`Stacktrace`](#stacktrace) + * [`Link`](#link) + * [`Location`](#location) + * [`Mapping`](#mapping) + * [`Function`](#function) + * [Example Payloads](#example-payloads) + * [Notable differences compared to other signals](#notable-differences-compared-to-other-signals) + * [Relationships between messages](#relationships-between-messages) + * [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) +* [Trade-offs and mitigations](#trade-offs-and-mitigations) +* [Prior art and alternatives](#prior-art-and-alternatives) + * [Benchmarking](#benchmarking) + * [Average profile](#average-profile) + * [Average profile with timestamps added to each sample](#average-profile-with-timestamps-added-to-each-sample) + * [Ruby profile with very deep stacktraces](#ruby-profile-with-very-deep-stacktraces) + * [Large profile](#large-profile) +* [Open questions](#open-questions) +* [Future possibilities](#future-possibilities) + + +## Motivation + +This is a proposal of a data model and semantic conventions that allow to represent profiles coming from a variety of different applications or systems. Existing profiling formats can be unambiguously mapped to this data model. Reverse mapping from this data model is also possible to the extent that the target profiling format has equivalent capabilities. + +The purpose of the data model is to have a common understanding of what a profile is, what data needs to be recorded, transferred, stored and interpreted by a profiling system. + +## Design Notes + +### Design Goals + +These goals are based on the vision set out in [Profiling Vision OTEP](./0212-profiling-vision.md) + +* Make profiling compatible with other signals +* Standardize profiling data model for industry-wide sharing and reuse +* Profilers must be able to be implementable with low overhead and conforming to OpenTelemetry-wide runtime overhead / intrusiveness and wire data size requirements. + +The last point is particularly important in the context of profiling. Profilers generate large amounts of data, and users of profiling technology are very sensitive to the overhead that profiling introduces. In the past high overhead has been a blocker for wider adoption of continuous profiling and was one of the reasons why profiling was not used in production environments. Therefore it is important to make sure that the overhead, particularly on the client side, and intermediaries (e.g collector) of the profiling signal is minimal. + +## Data Model + +This section describes various protobuf messages that are used to represent profiles data. + +### Relationships Diagram + +The following diagram shows the relationships between the messages. Relationships between messages are represented by either embedding one message in another (red arrows), or by referencing a message by index in a lookup table (blue arrows). More on that in [Relationships between messages](#relationships-between-messages) section below. + +In addition to that, relationship between `stacktraces`, `attribute_sets` and `links` is implicit. This is because of a "arrays of integers vs arrays of structures" optimization that is used. The relationship between these messages creates an ephemeral structure commonly referred to as a "Sample". More on that in [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) section below. + +For more information on that see + +![diagram of data relationships](./images/otep0000/profiles-data-model.png) + +### Message Descriptions + +#### `ProfilesData` + +ProfilesData represents the profiles data that can be stored in a persistent storage, +OR can be embedded by other protocols that transfer OTLP profiles data but do not +implement the OTLP protocol. +The main difference between this message and collector protocol is that +in this message there will not be any "control" or "metadata" specific to +OTLP protocol. +When new fields are added into this message, the OTLP request MUST be updated +as well. + + +#### `ResourceProfiles` + +A collection of ScopeProfiles from a Resource. + + +#### `ScopeProfiles` + +A collection of Profiles produced by an InstrumentationScope. + + +#### `Profile` + +Profile embeds one or more ProfileType messages — this allows to represent multiple profiles of different types (e.g allocated objects and allocated bytes) in a single Profile message. + + +#### `AttributeSet` + +AttributeSet represents a set of attributes. It is referenced from other tables +and not embedded because it is common for multiple samples to have the same +set of attributes + + +#### `Stacktrace` + +TODO + + + +#### `Link` + +A pointer from a profile to a trace span. This allows for linking between profiles and traces. + + +#### `Location` + +Describes function and line table debug information. + + +#### `Mapping` + +TODO + + + +#### `Function` + +TODO + + +#### `Sample` + +Sample is an ephemeral structure. It is not explicitly represented as a protobuf message, instead it is represented by stacktraces, links, attribute sets, values and timestamps tables in `ProfileType` message. The connection is based on the order of the elements in the corresponding tables. + + +### Example Payloads + + +### Notable differences compared to other signals + +Due to the increased performance requirements associated with profiles signal, here are some notable differences between profiles signal and other signals. + +#### Relationships between messages + +There are two main ways relationships between messages are represented: +* by embedding a message into another message (standard protobuf way) +* by referencing a message by index (similar to how it's done in pprof) + +Profiling signal is different from most other ones in that we use the referencing technique a lot to represent relationships between messages where there is a lot of duplication happening. This allows to reduce the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. + +This pseudocode illustrates the conceptual difference between the two approaches. Note that this example is simplified for the sake of clarity: +``` +// denormalized +"samples": [ + { + "stacktrace": ["foo", "bar"], + "value": 100, + "attribute_set": { + "endpoint": "/v1/users", + } + }, { + "stacktrace": ["foo", "bar", "baz"], + "value": 200, + "attribute_set": { + "endpoint": "/v1/users", + } + } +], + +// normalized +"attribute_sets": [ + { + "endpoint": "/v1/users", + } +], +"samples": [ + { + "stacktrace": ["foo", "bar"], + "value": 100, + "attribute_set_index": 0 + }, { + "stacktrace": ["foo", "bar", "baz"], + "value": 200, + "attribute_set_index": 0 + } +], +``` + +Explanation: because multiple samples have the same attributes, we can store them in a separate table and reference them by index. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. + +Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. + +#### Arrays of Integers vs Arrays of Structures + +Another optimization technique that we use to reduce the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload is using arrays of integers instead of arrays of structures to represent messages. This technique is used in conjunction with the referencing technique described above. Here's pseudocode that illustrates the approach. Note that this example is simplified for the sake of clarity: +``` +// normalized +"samples": [ + { + "stacktrace_id": 1, + "value": 100 + }, { + "stacktrace_id": 2, + "value": 200 + } +], + +// arrays +"stacktrace_ids": [1, 2], +"values": [100, 200] +``` + +Explanation: samples are a collection of references to other messages plus a value. The standard way of representing those is to put each `Sample` into a separate message, and link from `Sample` to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second represenation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. + +Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. + + + +## Trade-offs and mitigations + +The biggest trade-off was made between the performance characteristics of the format and it's simplicity. The emphasis was made on the performance characteristics, which resulted in a cognitively more complex format. + +Authors feel like the complexity is justified for the following reasons: +* as presented in [Design Goals](#design-goals) section, the performance characteristics of the format are very important for the profiling signal +* the format is not intended to be used directly by the end users, but rather by the developers of profiling systems that are used to and are expected to be able to handle the complexity. It is not more complex than other existing formats + +Alternative formats that are simpler to understand were considered, but they were not as efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [next chapter, Prior art and alternatives](#prior-art-and-alternatives) for more details. + +## Prior art and alternatives + +The specification presented here was heavily inspired by pprof. Multiple alternative representations were considered, including: +* `denormalized` representation, where all messages are embedded and no references by index are used. This is the simplest representation, but it is also the least efficient (by a huge margin) in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. +* `normalized` representation, where messages that repeat often are stored in separate tables and are referenced by indices. See [this chapter](#relationships-between-messages) for more details. This technique reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. +* `arrays` representation, which is based on `normalized` representation, but uses arrays of integers instead of arrays of structures to represent messages. See [this chapter](#arrays-of-integers-vs-arrays-of-structures) for more details. It further reduces the number of allocations, and the size of the resulting protobuf payload. + +### Benchmarking + +[Benchmarking results](https://docs.google.com/spreadsheets/d/1Q-6MlegV8xLYdz5WD5iPxQU2tsfodX1-CDV1WeGzyQ0/edit#gid=0) showed that `arrays` representation is the most efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. Some notable benchmark results are showcased below: + +#### Average profile + +The source for this test is a single 10 second pprof profile collected from a simple go program. It represents a typical profile that is collected from a running application. You can see that the `arrays` representation is the most efficient in terms of memory allocations and size of the resulting protobuf payload. + +|name|bytes|gzipped_bytes|retained_objects|unique_label_sets|bytes_allocated|allocs| +|---|---|---|---|---|---|---| +|BenchmarkAveragePprof-10|8,030|3,834|n/a|1|n/a|n/a| +|BenchmarkAverageDenormalized-10|83,187|3,829|3,167|1|1,027,424|3,191| +|BenchmarkAverageNormalized-10|7,955|3,416|706|1|867,488|1,037| +|BenchmarkAverageArrays-10|7,742|3,311|584|1|869,648|880| + +#### Average profile with timestamps added to each sample + +The source is the same as in the previous example, but this time there were timestamps added to each sample in the profile. `arrays` representation remains the most efficient one. + +|name|bytes|gzipped_bytes|retained_objects|unique_label_sets|bytes_allocated|allocs| +|---|---|---|---|---|---|---| +|BenchmarkAverageTimestampsPprof-10|9,478|3,865|n/a|1|n/a|n/a| +|BenchmarkAverageTimestampsDenormalized-10|119,526|4,154|4,482|1|1,125,320|4,893| +|BenchmarkAverageTimestampsNormalized-10|9,637|3,549|941|1|890,192|1,873| +|BenchmarkAverageTimestampsArrays-10|9,560|3,381|684|1|894,472|1,680| + +#### Ruby profile with very deep stacktraces + +The source for this test is an aggregated pprof profile collected from a Ruby application that has very deep stacktraces. You can see that the `arrays` representation is the most efficient in terms of memory allocations and size of the resulting protobuf payload (``). + +|name|bytes|gzipped_bytes|retained_objects|unique_label_sets|bytes_allocated|allocs| +|---|---|---|---|---|---|---| +|BenchmarkRuby1Pprof-10|1,869,563|115,323|n/a|1|n/a|n/a| +|BenchmarkRuby1Denormalized-10|163,107,484|4,716,442|3,840,093|1|319,473,752|3,844,625| +|BenchmarkRuby1Normalized-10|1,931,905|130,556|41,457|1|18,982,328|78,242| +|BenchmarkRuby1Arrays-10|1,886,964|120,382|23,481|1|18,365,800|42,284| + +#### Large profile + +The source for this test is an aggregated pprof profile collected from a Go application over a large period of time. This one shows that the `arrays` representation remains the most efficient, however, the `gzipped_bytes` number is a little bit larger. + +|name|bytes|gzipped_bytes|retained_objects|unique_label_sets|bytes_allocated|allocs| +|---|---|---|---|---|---|---| +|BenchmarkLargePprof-10|16,767,419|4,625,632|n/a|163|n/a|n/a| +|BenchmarkLargeDenormalized-10|969,446,655|71,246,645|24,036,740|163|2,140,322,432|24,429,954| +|BenchmarkLargeNormalized-10|17,813,931|4,874,456|2,068,600|163|208,793,736|4,217,313| +|BenchmarkLargeArrays-10|16,980,323|5,779,036|964,989|163|218,418,624|3,396,515| + +## Open questions + +Client implementations are out of scope for this OTEP. At the time of writing this we do have a reference implementation in Go, as well as a working backend and collector, but they are not yet ready for production use. We are also working on a reference implementation in Java. We are looking for contributors to help us with other languages. + +## Future possibilities + + + + diff --git a/text/profiles/images/otep0000/profiles-data-model.png b/text/profiles/images/otep0000/profiles-data-model.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3ba093c52bff40eb5b1105921ca8f2b709f7a9 GIT binary patch literal 92128 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�VFcfdp(rww|?#O*D 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 literal 0 HcmV?d00001 From 8df82be5704febaa5e17836444817f0952c4a3d8 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Wed, 23 Aug 2023 19:53:27 -0700 Subject: [PATCH 02/17] Introduces Profiling Data Model --- text/profiles/0000-profiles-data-model.md | 492 ++++++++++++++++-- .../images/otep0000/profiles-data-model.png | Bin 92128 -> 77581 bytes 2 files changed, 447 insertions(+), 45 deletions(-) diff --git a/text/profiles/0000-profiles-data-model.md b/text/profiles/0000-profiles-data-model.md index aaf07e44a..0e52b3309 100644 --- a/text/profiles/0000-profiles-data-model.md +++ b/text/profiles/0000-profiles-data-model.md @@ -1,6 +1,9 @@ -# Profiles Data Model +# Profiles Data Format + +Introduces Data Model for Profiles signal to OpenTelemetry. + +*This document is a DRAFT* -Introduce Data Model for Profiles signal to OpenTelemetry. * [Motivation](#motivation) @@ -9,17 +12,20 @@ Introduce Data Model for Profiles signal to OpenTelemetry. * [Data Model](#data-model) * [Relationships Diagram](#relationships-diagram) * [Message Descriptions](#message-descriptions) - * [`ProfilesData`](#profilesdata) - * [`ResourceProfiles`](#resourceprofiles) - * [`ScopeProfiles`](#scopeprofiles) - * [`Profile`](#profile) - * [`AttributeSet`](#attributeset) - * [`Stacktrace`](#stacktrace) - * [`Link`](#link) - * [`Location`](#location) - * [`Mapping`](#mapping) - * [`Function`](#function) + * [Message `ProfilesData`](#message-profilesdata) + * [Message `ResourceProfiles`](#message-resourceprofiles) + * [Message `ScopeProfiles`](#message-scopeprofiles) + * [Message `Profile`](#message-profile) + * [Message `ProfileType`](#message-profiletype) + * [Message `Sample`](#message-sample) + * [Message `Stacktrace`](#message-stacktrace) + * [Message `AttributeSet`](#message-attributeset) + * [Message `Link`](#message-link) + * [Message `Location`](#message-location) + * [Message `Mapping`](#message-mapping) + * [Message `Function`](#message-function) * [Example Payloads](#example-payloads) + * [Simple example](#simple-example) * [Notable differences compared to other signals](#notable-differences-compared-to-other-signals) * [Relationships between messages](#relationships-between-messages) * [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) @@ -30,6 +36,8 @@ Introduce Data Model for Profiles signal to OpenTelemetry. * [Average profile with timestamps added to each sample](#average-profile-with-timestamps-added-to-each-sample) * [Ruby profile with very deep stacktraces](#ruby-profile-with-very-deep-stacktraces) * [Large profile](#large-profile) + * [Semantic Conventions](#semantic-conventions) + * [Decision Log](#decision-log) * [Open questions](#open-questions) * [Future possibilities](#future-possibilities) @@ -44,13 +52,13 @@ The purpose of the data model is to have a common understanding of what a profil ### Design Goals -These goals are based on the vision set out in [Profiling Vision OTEP](./0212-profiling-vision.md) +These goals are based on the vision set out in [Profiling Vision OTEP](./0212-profiling-vision.md): * Make profiling compatible with other signals * Standardize profiling data model for industry-wide sharing and reuse * Profilers must be able to be implementable with low overhead and conforming to OpenTelemetry-wide runtime overhead / intrusiveness and wire data size requirements. -The last point is particularly important in the context of profiling. Profilers generate large amounts of data, and users of profiling technology are very sensitive to the overhead that profiling introduces. In the past high overhead has been a blocker for wider adoption of continuous profiling and was one of the reasons why profiling was not used in production environments. Therefore it is important to make sure that the overhead, particularly on the client side, and intermediaries (e.g collector) of the profiling signal is minimal. +The last point is particularly important in the context of profiling. Profilers generate large amounts of data, and users of profiling technology are very sensitive to the overhead that profiling introduces. In the past high overhead has been a blocker for wider adoption of continuous profiling and was one of the reasons why profiling was not used in production environments. Therefore it is important to make sure that the overhead of handling the profiling data on the client side as well as in intermediaries (e.g collector) is minimal. ## Data Model @@ -60,15 +68,14 @@ This section describes various protobuf messages that are used to represent prof The following diagram shows the relationships between the messages. Relationships between messages are represented by either embedding one message in another (red arrows), or by referencing a message by index in a lookup table (blue arrows). More on that in [Relationships between messages](#relationships-between-messages) section below. -In addition to that, relationship between `stacktraces`, `attribute_sets` and `links` is implicit. This is because of a "arrays of integers vs arrays of structures" optimization that is used. The relationship between these messages creates an ephemeral structure commonly referred to as a "Sample". More on that in [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) section below. - -For more information on that see +In addition to that, relationship between `stacktraces`, `attribute_sets` and `links` is implicit and based on the order of references to these objects in corresponding reference lists within a `ProfileType` message. The relationship between these messages creates an ephemeral structure called "Sample". More on that in [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) section below. ![diagram of data relationships](./images/otep0000/profiles-data-model.png) ### Message Descriptions -#### `ProfilesData` + +#### Message `ProfilesData` ProfilesData represents the profiles data that can be stored in a persistent storage, OR can be embedded by other protocols that transfer OTLP profiles data but do not @@ -80,62 +87,448 @@ When new fields are added into this message, the OTLP request MUST be updated as well. -#### `ResourceProfiles` + + +#### Message `ResourceProfiles` A collection of ScopeProfiles from a Resource. +
+Field Descriptions + +##### Field `resource` + +The resource for the profiles in this message. +If this field is not set then no resource info is known. + + +##### Field `scope_profiles` + +A list of ScopeProfiles that originate from a resource. + -#### `ScopeProfiles` +##### Field `schema_url` + +This schema_url applies to the data in the "resource" field. It does not apply +to the data in the "scope_profiles" field which have their own schema_url field. +
+ + +#### Message `ScopeProfiles` A collection of Profiles produced by an InstrumentationScope. +
+Field Descriptions + +##### Field `scope` + +The instrumentation scope information for the profiles in this message. +Semantically when InstrumentationScope isn't set, it is equivalent with +an empty instrumentation scope name (unknown). + + +##### Field `profiles` + +A list of Profiles that originate from an instrumentation scope. + + +##### Field `schema_url` + +This schema_url applies to all profiles and profile events in the "profiles" field. +
+ + +#### Message `Profile` + +A Profile represents a single profile generated by a profiler. It has an ID and it has a start time and end time. Profile contains lookup tables for Stacktraces, Mappings, Locations, Functions, Links, AttributeSets, and strings. + +Profile embeds one or more ProfileType messages — this allows to represent multiple profile types (e.g allocated objects and allocated bytes) in a single Profile message. + +
+Field Descriptions + +##### Field `profile_id` + +A unique identifier for a profile. The ID is a 16-byte array. An ID with +all zeroes is considered invalid. +This field is required. + + +##### Field `start_time_unix_nano` + +start_time_unix_nano is the start time of the profile. +Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. +This field is semantically required and it is expected that end_time >= start_time. + + +##### Field `end_time_unix_nano` + +end_time_unix_nano is the end time of the profile. +Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. +This field is semantically required and it is expected that end_time >= start_time. + + +##### Field `attributes` + +attributes is a collection of key/value pairs. Note, global attributes +like server name can be set using the resource API. + + +##### Field `dropped_attributes_count` + +dropped_attributes_count is the number of attributes that were discarded. Attributes +can be discarded because their keys are too long or because there are too many +attributes. If this value is 0, then no attributes were dropped. + + +##### Field `original_payload` + +This is the original profile as retrieved from the profiler. For example, this can be a pprof or jfr encoded profile. The reason users might want to include these is because some formats are very generic and can not be easily converted to a more structured format. +TODO: add a field that indicates the format of the original payload? + + +##### Field `stacktraces` + +A lookup table of Stacktraces. Other messages refer to Stacktraces in this table by index. + + +##### Field `mappings` + +A lookup table of Mappings. Other messages refer to Mappings in this table by index. + + +##### Field `locations` + +A lookup table of Locations. Other messages refer to Locations in this table by index. + + +##### Field `functions` + +A lookup table of Functions. Other messages refer to Functions in this table by index. + + +##### Field `links` + +A lookup table of Links to trace spans associated with this profile. Other messages refer to Links in this table by index. The first message must be an empty Link — this represents a null Link. + + +##### Field `attribute_sets` + +A lookup table of AttributeSets. Other messages refer to AttributeSets in this table by index. The first message must be an empty AttributeSet — this represents a null AttributeSet. + + +##### Field `string_table` + +A lookup table of strings. Other messages refer to strings in this table by index. +The 0-th element must be an empty string (""). + + +##### Field `profile_types` + +List of profile types included in this profile. The first item in the list is considered to be the "default" profile type. Example profile types are allocated objects or allocated bytes. +
+ + +#### Message `ProfileType` + +Represents a single profile type. It implicitly creates a connection between Stacktraces, Links, AttributeSets, values and timestamps. The connection is based on the order of the elements in the corresponding lists. This implicit connection creates an ephemeral structure called Sample. The length of reference lists must be the same. It is acceptable however for timestamps, links and attribute set lists to be empty. It is not acceptable for stacktrace or values lists to be empty. + +
+Field Descriptions + +##### Field `aggregation_temporality` + +aggregation_temporality describes if the aggregator reports delta changes +since last report time, or cumulative changes since a fixed start time. + + +##### Field `sample_rate` + +Profiler sample rate in Hz. This parameter indicates the frequency at which samples are collected, specifically for CPU profiles. Common values are 99 or 100. [Optional]. + + +##### Field `type_index` + +Index into the string table for the type of the sample. Example values are "cpu", "alloc_objects", "alloc_bytes", "block_contentions". Full list is defined in https://github.com/open-telemetry/semantic-conventions + + +##### Field `unit_index` -#### `Profile` +Index into the string table for the unit of the sample. Example values are "ms", "ns", "samples", "bytes". Full list is defined in https://github.com/open-telemetry/semantic-conventions -Profile embeds one or more ProfileType messages — this allows to represent multiple profiles of different types (e.g allocated objects and allocated bytes) in a single Profile message. +##### Field `stacktrace_indices` -#### `AttributeSet` +List of indices referring to Stacktraces in the Profile's stacktrace table. -AttributeSet represents a set of attributes. It is referenced from other tables -and not embedded because it is common for multiple samples to have the same -set of attributes +##### Field `link_indices` -#### `Stacktrace` +List of indices referring to Links in the Profile's link table. Each link corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] -TODO +##### Field `attribute_set_indices` +List of indices referring to AttributeSets in the Profile's attribute set table. Each attribute set corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] -#### `Link` -A pointer from a profile to a trace span. This allows for linking between profiles and traces. +##### Field `values` +List of values. Each value corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. -#### `Location` -Describes function and line table debug information. +##### Field `timestamps` +List of timestamps. Each timestamp corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. +
-#### `Mapping` -TODO +#### Message `Sample` +Sample is an ephemeral structure. It is not explicitly represented as a protobuf message, instead it is represented by stacktraces, links, attribute sets, values and timestamps tables in `ProfileType` message. The connection is based on the order of the elements in the corresponding tables. For example, AttributeSet with index 1 corresponds to a Stacktrace located at index 1 in stacktraces table, and a Value located at index 1 in values table. Together they form a Sample. -#### `Function` +#### Message `Stacktrace` -TODO +A stacktrace is a sequence of locations. Order of locations goes from callers to callees. Many stacktraces will point to the same locations. The link between stacktraces, attribute sets, links, values and timestamps is implicit and is based on the order of the elements in the corresponding tables in ProfileType message. -#### `Sample` -Sample is an ephemeral structure. It is not explicitly represented as a protobuf message, instead it is represented by stacktraces, links, attribute sets, values and timestamps tables in `ProfileType` message. The connection is based on the order of the elements in the corresponding tables. +#### Message `AttributeSet` + +AttributeSet represents a set of attributes. Multiple Samples, Locations and Mappings may have the same attributes and that's why this is a separate message. These are stored in a lookup table in a Profile. These are referenced by index from other messages. + +
+Field Descriptions + +##### Field `attributes` + +Attributes associated with a specific Sample, Location or a Mapping. +attributes is a collection of key/value pairs. Note, global attributes +like server name can be set using the resource API. + + +##### Field `dropped_attributes_count` + +dropped_attributes_count is the number of attributes that were discarded. Attributes +can be discarded because their keys are too long or because there are too many +attributes. If this value is 0, then no attributes were dropped. +
+ + +#### Message `Link` + +Represents a relationship between a Sample (ephemeral structure represented by references to a Stacktrace, AttributeSet, Link + value and a timestamp) and a trace span. This allows for linking between specific Samples within a profile and traces. + +
+Field Descriptions + +##### Field `trace_id` + +A unique identifier of a trace that this linked span is part of. The ID is a +16-byte array. + + +##### Field `span_id` + +A unique identifier for the linked span. The ID is an 8-byte array. +
+ + +#### Message `Location` + +Describes function and line table debug information. These are stored in a lookup table in a Profile. These are referenced by index from other messages. + +
+Field Descriptions + +##### Field `mapping_index` + +The id of the corresponding profile.Mapping for this location. +It can be unset if the mapping is unknown or not applicable for +this profile type. + + +##### Field `address` + +The instruction address for this location, if available. It +should be within [Mapping.memory_start...Mapping.memory_limit] +for the corresponding mapping. A non-leaf address may be in the +middle of a call instruction. It is up to display tools to find +the beginning of the instruction if necessary. + + +##### Field `line` + +Multiple line indicates this location has inlined functions, +where the last entry represents the caller into which the +preceding entries were inlined. +E.g., if memcpy() is inlined into printf: +line[0].function_name == "memcpy" +line[1].function_name == "printf" + + +##### Field `attribute_set_indices` + +Reference to an attribute set from the Profile's attribute set table. +
+ + +#### Message `Mapping` + +Describes the mapping from a binary to its original source code. These are stored in a lookup table in a Profile. These are referenced by index from other messages. + +
+Field Descriptions + +##### Field `memory_start` + +Address at which the binary (or DLL) is loaded into memory. + + +##### Field `memory_limit` + +The limit of the address range occupied by this mapping. + + +##### Field `file_offset` + +Offset in the binary that corresponds to the first mapped address. + + +##### Field `filename_index` + +The object this entry is loaded from. This can be a filename on +disk for the main binary and shared libraries, or virtual +abstractions like "[vdso]". Index into string table + + +##### Field `build_id_index` + +A string that uniquely identifies a particular program version +with high probability. E.g., for binaries generated by GNU tools, +it could be the contents of the .note.gnu.build-id field. Index into string table + + +##### Field `attribute_set_indices` + +Reference to an attribute set from the Profile's attribute set table. +
+ + +#### Message `Function` + +Represents a function in a source file. These are stored in a lookup table in a Profile. These are referenced by index from other messages. + +
+Field Descriptions + +##### Field `name_index` + +Name of the function, in human-readable form if available. Index into string table + + +##### Field `system_name_index` + +Name of the function, as identified by the system. +For instance, it can be a C++ mangled name. Index into string table + + +##### Field `filename_index` + +Source file containing the function. Index into string table + + +##### Field `start_line` + +Line number in source file. +
+ + + ### Example Payloads +#### Simple example + +Considering the following example presented in a modified collapsed format: +``` +foo;bar;baz 100 region=us,trace_id=0x01020304010203040102030401020304,span_id=0x9999999999999999 1687841528000000 +foo;bar 200 region=us +``` + +It represents 2 samples: +* one for stacktrace `foo;bar;baz` with value `100`, attributes `region=us`, linked to trace `0x01020304010203040102030401020304` and span `0x9999999999999999`, and timestamp `1687841528000000` +* one for stacktrace `foo;bar` with value `200`, attributes `region=us`, no link, no timestamp + +The resulting profile in OTLP format would look like this (in YAML format): +``` +resource_profiles: + - resource: + attributes: null + schema_url: todo + scope_profiles: + - profiles: + - attribute_sets: + - attributes: null + - attributes: + - key: region + value: + Value: + string_value: us + functions: + - name_index: 1 + - name_index: 2 + - name_index: 3 + links: + - span_id: "" + trace_id: "" + - span_id: "9999999999999999" + trace_id: "01020304010203040102030401020304" + locations: + - line: + - {} + - line: + - function_index: 1 + - line: + - function_index: 2 + profile_types: + - attribute_set_indices: + - 1 + - 1 + link_indices: + - 1 + - 0 + stacktrace_indices: + - 0 + - 1 + timestamps: + - 1.687841528e+15 + - 0 + values: + - 100 + - 200 + stacktraces: + - location_indices: + - 0 + - 1 + - 2 + - location_indices: + - 0 + - 1 + string_table: + - "" + - foo + - bar + - baz + attributes: null + profile_id: 0102030405060708090a0b0c0d0e0f10 + scope: + attributes: null +``` + ### Notable differences compared to other signals @@ -157,13 +550,13 @@ This pseudocode illustrates the conceptual difference between the two approaches "stacktrace": ["foo", "bar"], "value": 100, "attribute_set": { - "endpoint": "/v1/users", + "endpoint": "/v1/users" } }, { "stacktrace": ["foo", "bar", "baz"], "value": 200, "attribute_set": { - "endpoint": "/v1/users", + "endpoint": "/v1/users" } } ], @@ -171,7 +564,7 @@ This pseudocode illustrates the conceptual difference between the two approaches // normalized "attribute_sets": [ { - "endpoint": "/v1/users", + "endpoint": "/v1/users" } ], "samples": [ @@ -198,20 +591,20 @@ Another optimization technique that we use to reduce the size of the resulting p // normalized "samples": [ { - "stacktrace_id": 1, + "stacktrace_index": 1, "value": 100 }, { - "stacktrace_id": 2, + "stacktrace_index": 2, "value": 200 } ], // arrays -"stacktrace_ids": [1, 2], +"stacktrace_indices": [1, 2], "values": [100, 200] ``` -Explanation: samples are a collection of references to other messages plus a value. The standard way of representing those is to put each `Sample` into a separate message, and link from `Sample` to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second represenation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. +Explanation: in `normalized` representation samples are a collection of references to other messages plus a value. The standard way of representing those is to put each `Sample` into a separate message, and link from `Sample` to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second `arrays` representation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. @@ -282,6 +675,15 @@ The source for this test is an aggregated pprof profile collected from a Go appl |BenchmarkLargeNormalized-10|17,813,931|4,874,456|2,068,600|163|208,793,736|4,217,313| |BenchmarkLargeArrays-10|16,980,323|5,779,036|964,989|163|218,418,624|3,396,515| +### Semantic Conventions + +TODO: describe things like profile types and units + + +### Decision Log + +There were many other alternatives considered during the design process. See [Decision Log](https://github.com/open-telemetry/opentelemetry-proto-profile/blob/54bba7a86d839b9d29488de8e22d8c567d283e7b/opentelemetry/proto/profiles/v1/decision-log.md#L0-L1) for more information about various decisions that were made during the design process. + ## Open questions Client implementations are out of scope for this OTEP. At the time of writing this we do have a reference implementation in Go, as well as a working backend and collector, but they are not yet ready for production use. We are also working on a reference implementation in Java. We are looking for contributors to help us with other languages. diff --git a/text/profiles/images/otep0000/profiles-data-model.png b/text/profiles/images/otep0000/profiles-data-model.png index 5c3ba093c52bff40eb5b1105921ca8f2b709f7a9..3c35d8135d39276a62b89d43dfca2061fc883c91 100644 GIT binary patch literal 77581 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 KElx{4e*ZrT>42{Q literal 92128 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�VFcfdp(rww|?#O*D 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 From 3a9d7afb311f7ff5dd404bf961d21f78293a076f Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 08:55:11 -0700 Subject: [PATCH 03/17] assigns 0237 number to this OTEP --- ...es-data-model.md => 0237-profiles-data-model.md} | 0 .../{otep0000 => otep0237}/profiles-data-model.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename text/profiles/{0000-profiles-data-model.md => 0237-profiles-data-model.md} (100%) rename text/profiles/images/{otep0000 => otep0237}/profiles-data-model.png (100%) diff --git a/text/profiles/0000-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md similarity index 100% rename from text/profiles/0000-profiles-data-model.md rename to text/profiles/0237-profiles-data-model.md diff --git a/text/profiles/images/otep0000/profiles-data-model.png b/text/profiles/images/otep0237/profiles-data-model.png similarity index 100% rename from text/profiles/images/otep0000/profiles-data-model.png rename to text/profiles/images/otep0237/profiles-data-model.png From 4fb8642340f1fd1dd19d96fa1fb3a2a842695102 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 09:00:05 -0700 Subject: [PATCH 04/17] addresses markdown lint issues --- text/profiles/0237-profiles-data-model.md | 62 ----------------------- 1 file changed, 62 deletions(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 0e52b3309..4ff63a128 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -2,9 +2,6 @@ Introduces Data Model for Profiles signal to OpenTelemetry. -*This document is a DRAFT* - - * [Motivation](#motivation) * [Design Notes](#design-notes) @@ -86,9 +83,6 @@ OTLP protocol. When new fields are added into this message, the OTLP request MUST be updated as well. - - - #### Message `ResourceProfiles` A collection of ScopeProfiles from a Resource. @@ -101,19 +95,16 @@ A collection of ScopeProfiles from a Resource. The resource for the profiles in this message. If this field is not set then no resource info is known. - ##### Field `scope_profiles` A list of ScopeProfiles that originate from a resource. - ##### Field `schema_url` This schema_url applies to the data in the "resource" field. It does not apply to the data in the "scope_profiles" field which have their own schema_url field. - #### Message `ScopeProfiles` A collection of Profiles produced by an InstrumentationScope. @@ -127,18 +118,15 @@ The instrumentation scope information for the profiles in this message. Semantically when InstrumentationScope isn't set, it is equivalent with an empty instrumentation scope name (unknown). - ##### Field `profiles` A list of Profiles that originate from an instrumentation scope. - ##### Field `schema_url` This schema_url applies to all profiles and profile events in the "profiles" field. - #### Message `Profile` A Profile represents a single profile generated by a profiler. It has an ID and it has a start time and end time. Profile contains lookup tables for Stacktraces, Mappings, Locations, Functions, Links, AttributeSets, and strings. @@ -154,82 +142,68 @@ A unique identifier for a profile. The ID is a 16-byte array. An ID with all zeroes is considered invalid. This field is required. - ##### Field `start_time_unix_nano` start_time_unix_nano is the start time of the profile. Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. This field is semantically required and it is expected that end_time >= start_time. - ##### Field `end_time_unix_nano` end_time_unix_nano is the end time of the profile. Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. This field is semantically required and it is expected that end_time >= start_time. - ##### Field `attributes` attributes is a collection of key/value pairs. Note, global attributes like server name can be set using the resource API. - ##### Field `dropped_attributes_count` dropped_attributes_count is the number of attributes that were discarded. Attributes can be discarded because their keys are too long or because there are too many attributes. If this value is 0, then no attributes were dropped. - ##### Field `original_payload` This is the original profile as retrieved from the profiler. For example, this can be a pprof or jfr encoded profile. The reason users might want to include these is because some formats are very generic and can not be easily converted to a more structured format. TODO: add a field that indicates the format of the original payload? - ##### Field `stacktraces` A lookup table of Stacktraces. Other messages refer to Stacktraces in this table by index. - ##### Field `mappings` A lookup table of Mappings. Other messages refer to Mappings in this table by index. - ##### Field `locations` A lookup table of Locations. Other messages refer to Locations in this table by index. - ##### Field `functions` A lookup table of Functions. Other messages refer to Functions in this table by index. - ##### Field `links` A lookup table of Links to trace spans associated with this profile. Other messages refer to Links in this table by index. The first message must be an empty Link — this represents a null Link. - ##### Field `attribute_sets` A lookup table of AttributeSets. Other messages refer to AttributeSets in this table by index. The first message must be an empty AttributeSet — this represents a null AttributeSet. - ##### Field `string_table` A lookup table of strings. Other messages refer to strings in this table by index. The 0-th element must be an empty string (""). - ##### Field `profile_types` List of profile types included in this profile. The first item in the list is considered to be the "default" profile type. Example profile types are allocated objects or allocated bytes. - #### Message `ProfileType` Represents a single profile type. It implicitly creates a connection between Stacktraces, Links, AttributeSets, values and timestamps. The connection is based on the order of the elements in the corresponding lists. This implicit connection creates an ephemeral structure called Sample. The length of reference lists must be the same. It is acceptable however for timestamps, links and attribute set lists to be empty. It is not acceptable for stacktrace or values lists to be empty. @@ -242,60 +216,47 @@ Represents a single profile type. It implicitly creates a connection between Sta aggregation_temporality describes if the aggregator reports delta changes since last report time, or cumulative changes since a fixed start time. - ##### Field `sample_rate` Profiler sample rate in Hz. This parameter indicates the frequency at which samples are collected, specifically for CPU profiles. Common values are 99 or 100. [Optional]. - ##### Field `type_index` Index into the string table for the type of the sample. Example values are "cpu", "alloc_objects", "alloc_bytes", "block_contentions". Full list is defined in https://github.com/open-telemetry/semantic-conventions - ##### Field `unit_index` Index into the string table for the unit of the sample. Example values are "ms", "ns", "samples", "bytes". Full list is defined in https://github.com/open-telemetry/semantic-conventions - ##### Field `stacktrace_indices` List of indices referring to Stacktraces in the Profile's stacktrace table. - ##### Field `link_indices` List of indices referring to Links in the Profile's link table. Each link corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] - ##### Field `attribute_set_indices` List of indices referring to AttributeSets in the Profile's attribute set table. Each attribute set corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] - ##### Field `values` List of values. Each value corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. - ##### Field `timestamps` List of timestamps. Each timestamp corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. - #### Message `Sample` Sample is an ephemeral structure. It is not explicitly represented as a protobuf message, instead it is represented by stacktraces, links, attribute sets, values and timestamps tables in `ProfileType` message. The connection is based on the order of the elements in the corresponding tables. For example, AttributeSet with index 1 corresponds to a Stacktrace located at index 1 in stacktraces table, and a Value located at index 1 in values table. Together they form a Sample. - #### Message `Stacktrace` A stacktrace is a sequence of locations. Order of locations goes from callers to callees. Many stacktraces will point to the same locations. The link between stacktraces, attribute sets, links, values and timestamps is implicit and is based on the order of the elements in the corresponding tables in ProfileType message. - - - #### Message `AttributeSet` AttributeSet represents a set of attributes. Multiple Samples, Locations and Mappings may have the same attributes and that's why this is a separate message. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -309,7 +270,6 @@ Attributes associated with a specific Sample, Location or a Mapping. attributes is a collection of key/value pairs. Note, global attributes like server name can be set using the resource API. - ##### Field `dropped_attributes_count` dropped_attributes_count is the number of attributes that were discarded. Attributes @@ -317,7 +277,6 @@ can be discarded because their keys are too long or because there are too many attributes. If this value is 0, then no attributes were dropped. - #### Message `Link` Represents a relationship between a Sample (ephemeral structure represented by references to a Stacktrace, AttributeSet, Link + value and a timestamp) and a trace span. This allows for linking between specific Samples within a profile and traces. @@ -330,13 +289,11 @@ Represents a relationship between a Sample (ephemeral structure represented by r A unique identifier of a trace that this linked span is part of. The ID is a 16-byte array. - ##### Field `span_id` A unique identifier for the linked span. The ID is an 8-byte array. - #### Message `Location` Describes function and line table debug information. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -350,7 +307,6 @@ The id of the corresponding profile.Mapping for this location. It can be unset if the mapping is unknown or not applicable for this profile type. - ##### Field `address` The instruction address for this location, if available. It @@ -359,7 +315,6 @@ for the corresponding mapping. A non-leaf address may be in the middle of a call instruction. It is up to display tools to find the beginning of the instruction if necessary. - ##### Field `line` Multiple line indicates this location has inlined functions, @@ -369,13 +324,11 @@ E.g., if memcpy() is inlined into printf: line[0].function_name == "memcpy" line[1].function_name == "printf" - ##### Field `attribute_set_indices` Reference to an attribute set from the Profile's attribute set table. - #### Message `Mapping` Describes the mapping from a binary to its original source code. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -387,37 +340,31 @@ Describes the mapping from a binary to its original source code. These are store Address at which the binary (or DLL) is loaded into memory. - ##### Field `memory_limit` The limit of the address range occupied by this mapping. - ##### Field `file_offset` Offset in the binary that corresponds to the first mapped address. - ##### Field `filename_index` The object this entry is loaded from. This can be a filename on disk for the main binary and shared libraries, or virtual abstractions like "[vdso]". Index into string table - ##### Field `build_id_index` A string that uniquely identifies a particular program version with high probability. E.g., for binaries generated by GNU tools, it could be the contents of the .note.gnu.build-id field. Index into string table - ##### Field `attribute_set_indices` Reference to an attribute set from the Profile's attribute set table. - #### Message `Function` Represents a function in a source file. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -429,24 +376,20 @@ Represents a function in a source file. These are stored in a lookup table in a Name of the function, in human-readable form if available. Index into string table - ##### Field `system_name_index` Name of the function, as identified by the system. For instance, it can be a C++ mangled name. Index into string table - ##### Field `filename_index` Source file containing the function. Index into string table - ##### Field `start_line` Line number in source file. - ### Example Payloads @@ -529,7 +472,6 @@ resource_profiles: attributes: null ``` - ### Notable differences compared to other signals Due to the increased performance requirements associated with profiles signal, here are some notable differences between profiles signal and other signals. @@ -608,8 +550,6 @@ Explanation: in `normalized` representation samples are a collection of referenc Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. - - ## Trade-offs and mitigations The biggest trade-off was made between the performance characteristics of the format and it's simplicity. The emphasis was made on the performance characteristics, which resulted in a cognitively more complex format. @@ -679,7 +619,6 @@ The source for this test is an aggregated pprof profile collected from a Go appl TODO: describe things like profile types and units - ### Decision Log There were many other alternatives considered during the design process. See [Decision Log](https://github.com/open-telemetry/opentelemetry-proto-profile/blob/54bba7a86d839b9d29488de8e22d8c567d283e7b/opentelemetry/proto/profiles/v1/decision-log.md#L0-L1) for more information about various decisions that were made during the design process. @@ -692,4 +631,3 @@ Client implementations are out of scope for this OTEP. At the time of writing th - From 3289d466d71e9fd4fb5e334da94dfdb2dc2d724c Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 09:18:15 -0700 Subject: [PATCH 05/17] markdown lint fixes --- text/profiles/0237-profiles-data-model.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 4ff63a128..00972cb9d 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -67,7 +67,7 @@ The following diagram shows the relationships between the messages. Relationship In addition to that, relationship between `stacktraces`, `attribute_sets` and `links` is implicit and based on the order of references to these objects in corresponding reference lists within a `ProfileType` message. The relationship between these messages creates an ephemeral structure called "Sample". More on that in [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) section below. -![diagram of data relationships](./images/otep0000/profiles-data-model.png) +![diagram of data relationships](./images/otep0237/profiles-data-model.png) ### Message Descriptions @@ -222,11 +222,11 @@ Profiler sample rate in Hz. This parameter indicates the frequency at which samp ##### Field `type_index` -Index into the string table for the type of the sample. Example values are "cpu", "alloc_objects", "alloc_bytes", "block_contentions". Full list is defined in https://github.com/open-telemetry/semantic-conventions +Index into the string table for the type of the sample. Example values are "cpu", "alloc_objects", "alloc_bytes", "block_contentions". Full list is defined in [semantic-conventions](https://github.com/open-telemetry/semantic-conventions) ##### Field `unit_index` -Index into the string table for the unit of the sample. Example values are "ms", "ns", "samples", "bytes". Full list is defined in https://github.com/open-telemetry/semantic-conventions +Index into the string table for the unit of the sample. Example values are "ms", "ns", "samples", "bytes". Full list is defined in [semantic-conventions](https://github.com/open-telemetry/semantic-conventions) ##### Field `stacktrace_indices` @@ -397,16 +397,19 @@ Line number in source file. #### Simple example Considering the following example presented in a modified collapsed format: + ``` foo;bar;baz 100 region=us,trace_id=0x01020304010203040102030401020304,span_id=0x9999999999999999 1687841528000000 foo;bar 200 region=us ``` It represents 2 samples: + * one for stacktrace `foo;bar;baz` with value `100`, attributes `region=us`, linked to trace `0x01020304010203040102030401020304` and span `0x9999999999999999`, and timestamp `1687841528000000` * one for stacktrace `foo;bar` with value `200`, attributes `region=us`, no link, no timestamp The resulting profile in OTLP format would look like this (in YAML format): + ``` resource_profiles: - resource: @@ -479,12 +482,14 @@ Due to the increased performance requirements associated with profiles signal, h #### Relationships between messages There are two main ways relationships between messages are represented: + * by embedding a message into another message (standard protobuf way) * by referencing a message by index (similar to how it's done in pprof) Profiling signal is different from most other ones in that we use the referencing technique a lot to represent relationships between messages where there is a lot of duplication happening. This allows to reduce the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. This pseudocode illustrates the conceptual difference between the two approaches. Note that this example is simplified for the sake of clarity: + ``` // denormalized "samples": [ @@ -529,6 +534,7 @@ Benchmarking shows that this approach is significantly more efficient in terms o #### Arrays of Integers vs Arrays of Structures Another optimization technique that we use to reduce the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload is using arrays of integers instead of arrays of structures to represent messages. This technique is used in conjunction with the referencing technique described above. Here's pseudocode that illustrates the approach. Note that this example is simplified for the sake of clarity: + ``` // normalized "samples": [ @@ -555,6 +561,7 @@ Benchmarking shows that this approach is significantly more efficient in terms o The biggest trade-off was made between the performance characteristics of the format and it's simplicity. The emphasis was made on the performance characteristics, which resulted in a cognitively more complex format. Authors feel like the complexity is justified for the following reasons: + * as presented in [Design Goals](#design-goals) section, the performance characteristics of the format are very important for the profiling signal * the format is not intended to be used directly by the end users, but rather by the developers of profiling systems that are used to and are expected to be able to handle the complexity. It is not more complex than other existing formats @@ -563,6 +570,7 @@ Alternative formats that are simpler to understand were considered, but they wer ## Prior art and alternatives The specification presented here was heavily inspired by pprof. Multiple alternative representations were considered, including: + * `denormalized` representation, where all messages are embedded and no references by index are used. This is the simplest representation, but it is also the least efficient (by a huge margin) in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. * `normalized` representation, where messages that repeat often are stored in separate tables and are referenced by indices. See [this chapter](#relationships-between-messages) for more details. This technique reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. * `arrays` representation, which is based on `normalized` representation, but uses arrays of integers instead of arrays of structures to represent messages. See [this chapter](#arrays-of-integers-vs-arrays-of-structures) for more details. It further reduces the number of allocations, and the size of the resulting protobuf payload. @@ -630,4 +638,3 @@ Client implementations are out of scope for this OTEP. At the time of writing th ## Future possibilities - From 843d690fe68c0461ecb961b13a447c188eb90943 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 09:52:28 -0700 Subject: [PATCH 06/17] adds a section about semantic conventions --- text/profiles/0237-profiles-data-model.md | 30 ++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 00972cb9d..93b609abe 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -34,6 +34,8 @@ Introduces Data Model for Profiles signal to OpenTelemetry. * [Ruby profile with very deep stacktraces](#ruby-profile-with-very-deep-stacktraces) * [Large profile](#large-profile) * [Semantic Conventions](#semantic-conventions) + * [Profile Types](#profile-types) + * [Profile Units](#profile-units) * [Decision Log](#decision-log) * [Open questions](#open-questions) * [Future possibilities](#future-possibilities) @@ -625,7 +627,33 @@ The source for this test is an aggregated pprof profile collected from a Go appl ### Semantic Conventions -TODO: describe things like profile types and units +This is a list of semantic conventions that are used in data model. + +#### Profile Types + +Here's a list of possible profile types. It is not exhaustive, and it is expected that more profile types will be added in the future: + +* `cpu` +* `wall` +* `goroutines` +* `alloc_objects` +* `alloc_space` +* `inuse_objects` +* `inuse_space` +* `mutex_contentions` +* `mutex_delay` +* `block_contentions` +* `block_delay` + +#### Profile Units + +Here's a list of possible profile units. It is not exhaustive, and it is expected that more units will be added in the future: + +* `bytes` +* `samples` +* `nanoseconds` +* `milliseconds` +* `count` ### Decision Log From c3b9aff7f4e12b90a8d107e90603e669e881d647 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 09:55:33 -0700 Subject: [PATCH 07/17] adds future possibilities chapter --- text/profiles/0237-profiles-data-model.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 93b609abe..a5695b72d 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -665,4 +665,13 @@ Client implementations are out of scope for this OTEP. At the time of writing th ## Future possibilities - +This OTEP enables us to start working on various parts of [OTEL Specification](https://github.com/open-telemetry/opentelemetry-specification): + +* Profiles Data Model +* Profiles API +* Profiles SDK + +That in turn would enable us to start working on: + +* [OTEL Collector](https://github.com/open-telemetry/opentelemetry-collector) +* Client SDK implementations in various languages (e.g Go and Java) From 6f5133d0697a1c72c58e18c07a821bb0ff040829 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 09:58:00 -0700 Subject: [PATCH 08/17] updates profile_id comment --- text/profiles/0237-profiles-data-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index a5695b72d..44d1f51db 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -141,7 +141,7 @@ Profile embeds one or more ProfileType messages — this allows to represent mul ##### Field `profile_id` A unique identifier for a profile. The ID is a 16-byte array. An ID with -all zeroes is considered invalid. +all zeroes is considered invalid. Profile ID can be used by other signals to uniquely identify a profile. This field is required. ##### Field `start_time_unix_nano` From c8685805a536db152170e092e53ab78369407b93 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Thu, 7 Sep 2023 10:15:31 -0700 Subject: [PATCH 09/17] adds information about relationships between profiles and other signals --- text/profiles/0237-profiles-data-model.md | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 44d1f51db..64060cf86 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -8,6 +8,9 @@ Introduces Data Model for Profiles signal to OpenTelemetry. * [Design Goals](#design-goals) * [Data Model](#data-model) * [Relationships Diagram](#relationships-diagram) + * [Relationships With Other Signals](#relationships-with-other-signals) + * [From profiles to other signals](#from-profiles-to-other-signals) + * [From other signals to profiles](#from-other-signals-to-profiles) * [Message Descriptions](#message-descriptions) * [Message `ProfilesData`](#message-profilesdata) * [Message `ResourceProfiles`](#message-resourceprofiles) @@ -71,8 +74,31 @@ In addition to that, relationship between `stacktraces`, `attribute_sets` and `l ![diagram of data relationships](./images/otep0237/profiles-data-model.png) +### Relationships With Other Signals + +There are two types of relationships between profiles and other signals: + +* from other signals to profiles (e.g from log records, exemplars or trace spans) +* from profiles to other signals + +#### From profiles to other signals + +[Link](#message-link) is a message that is used to represent connections between profile [Samples](#message-sample) and trace spans. It uses `trace_id` and `span_id` as identifiers. + +For other signals, such as logs or metrics, because other signals use the same way of linking between such signals and traces (`trace_id` and `span_id`), it is possible to correlate profiles with other signals using this same information. + +#### From other signals to profiles + +Other signals can use `profile_id` to reference a profile. For example, a log record can reference a profile that was collected at the time when the log record was generated by using `profile_id` as one of the attributes. This allows to correlate logs with profiles. + +Additionally, `trace_id`, `span_id` can be used to reference specific [Samples](#message-sample) in a Profile, since [Samples](#message-sample) are linked to traces with these same identifiers using [Links](#message-link). + +The exact details of such linking are out of scope for this OTEP. It is expected that other OTEPs will define how such linking is done. + ### Message Descriptions +These are detailed descriptions of protobuf messages that are used to represent profiling data. + #### Message `ProfilesData` @@ -554,7 +580,7 @@ Another optimization technique that we use to reduce the size of the resulting p "values": [100, 200] ``` -Explanation: in `normalized` representation samples are a collection of references to other messages plus a value. The standard way of representing those is to put each `Sample` into a separate message, and link from `Sample` to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second `arrays` representation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. +Explanation: in `normalized` representation samples are a collection of references to other messages plus a value. The standard way of representing those is to put each [Samples](#message-sample) into a separate message, and link from [Samples](#message-sample) to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second `arrays` representation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. From a37a04110932999945c9e1e134887d2c68ae7021 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 10:15:00 -0700 Subject: [PATCH 10/17] adds a proto definition --- text/profiles/0237-profiles-data-model.md | 313 +++++++++++++++++++++- 1 file changed, 310 insertions(+), 3 deletions(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 64060cf86..ce19f46fb 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -11,6 +11,7 @@ Introduces Data Model for Profiles signal to OpenTelemetry. * [Relationships With Other Signals](#relationships-with-other-signals) * [From profiles to other signals](#from-profiles-to-other-signals) * [From other signals to profiles](#from-other-signals-to-profiles) + * [Proto Definition](#proto-definition) * [Message Descriptions](#message-descriptions) * [Message `ProfilesData`](#message-profilesdata) * [Message `ResourceProfiles`](#message-resourceprofiles) @@ -95,6 +96,312 @@ Additionally, `trace_id`, `span_id` can be used to reference specific [Samples]( The exact details of such linking are out of scope for this OTEP. It is expected that other OTEPs will define how such linking is done. +### Proto Definition + + + +```proto +// Copyright 2023, OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package opentelemetry.proto.profiles.v1; + +import "opentelemetry/proto/common/v1/common.proto"; +import "opentelemetry/proto/resource/v1/resource.proto"; + +option csharp_namespace = "OpenTelemetry.Proto.Profiles.V1"; +option java_multiple_files = true; +option java_package = "io.opentelemetry.proto.profiles.v1"; +option java_outer_classname = "ProfilesProto"; +option go_package = "go.opentelemetry.io/proto/otlp/profiles/v1"; + +// ProfilesData represents the profiles data that can be stored in a persistent storage, +// OR can be embedded by other protocols that transfer OTLP profiles data but do not +// implement the OTLP protocol. +// +// The main difference between this message and collector protocol is that +// in this message there will not be any "control" or "metadata" specific to +// OTLP protocol. +// +// When new fields are added into this message, the OTLP request MUST be updated +// as well. +message ProfilesData { + // An array of ResourceProfiles. + // For data coming from a single resource this array will typically contain + // one element. Intermediary nodes that receive data from multiple origins + // typically batch the data before forwarding further and in that case this + // array will contain multiple elements. + repeated ResourceProfiles resource_profiles = 1; +} + +// A collection of ScopeProfiles from a Resource. +message ResourceProfiles { + reserved 1000; + + // The resource for the profiles in this message. + // If this field is not set then no resource info is known. + opentelemetry.proto.resource.v1.Resource resource = 1; + + // A list of ScopeProfiles that originate from a resource. + repeated ScopeProfiles scope_profiles = 2; + + // This schema_url applies to the data in the "resource" field. It does not apply + // to the data in the "scope_profiles" field which have their own schema_url field. + string schema_url = 3; +} + +// A collection of Profiles produced by an InstrumentationScope. +message ScopeProfiles { + // The instrumentation scope information for the profiles in this message. + // Semantically when InstrumentationScope isn't set, it is equivalent with + // an empty instrumentation scope name (unknown). + opentelemetry.proto.common.v1.InstrumentationScope scope = 1; + + // A list of Profiles that originate from an instrumentation scope. + repeated Profile profiles = 2; + + // This schema_url applies to all profiles and profile events in the "profiles" field. + string schema_url = 3; +} + +// A Profile represents a single profile generated by a profiler. It has an ID and it has a start time and end time. Profile contains lookup tables for Stacktraces, Mappings, Locations, Functions, Links, AttributeSets, and strings. + +// Profile embeds one or more ProfileType messages — this allows to represent multiple profile types (e.g allocated objects and allocated bytes) in a single Profile message. +message Profile { + // A unique identifier for a profile. The ID is a 16-byte array. An ID with + // all zeroes is considered invalid. Profile ID can be used by other signals to uniquely identify a profile. + // + // This field is required. + bytes profile_id = 1; + + // start_time_unix_nano is the start time of the profile. + // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + // + // This field is semantically required and it is expected that end_time >= start_time. + fixed64 start_time_unix_nano = 2; + + // end_time_unix_nano is the end time of the profile. + // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + // + // This field is semantically required and it is expected that end_time >= start_time. + fixed64 end_time_unix_nano = 3; + + // attributes is a collection of key/value pairs. Note, global attributes + // like server name can be set using the resource API. Examples of attributes: + // + // "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" + // "/http/server_latency": 300 + // "abc.com/myattribute": true + // "abc.com/score": 10.239 + // + // The OpenTelemetry API specification further restricts the allowed value types: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + repeated opentelemetry.proto.common.v1.KeyValue attributes = 4; + + // dropped_attributes_count is the number of attributes that were discarded. Attributes + // can be discarded because their keys are too long or because there are too many + // attributes. If this value is 0, then no attributes were dropped. + uint32 dropped_attributes_count = 5; + + // This is the original profile as retrieved from the profiler. For example, this can be a pprof or jfr encoded profile. The reason users might want to include these is because some formats are very generic and can not be easily converted to a more structured format. + // TODO: add a field that indicates the format of the original payload? + bytes original_payload = 6; + + // A lookup table of Stacktraces. Other messages refer to Stacktraces in this table by index. + repeated Stacktrace stacktraces = 7; + + // A lookup table of Mappings. Other messages refer to Mappings in this table by index. + repeated Mapping mappings = 8; + + // A lookup table of Locations. Other messages refer to Locations in this table by index. + repeated Location locations = 9; + + // A lookup table of Functions. Other messages refer to Functions in this table by index. + repeated Function functions = 10; + + // A lookup table of Links to trace spans associated with this profile. Other messages refer to Links in this table by index. The first message must be an empty Link — this represents a null Link. + repeated Link links = 11; + + // A lookup table of AttributeSets. Other messages refer to AttributeSets in this table by index. The first message must be an empty AttributeSet — this represents a null AttributeSet. + repeated AttributeSet attribute_sets = 12; + + // A lookup table of strings. Other messages refer to strings in this table by index. + // The 0-th element must be an empty string (""). + repeated string string_table = 13; + + // List of profile types included in this profile. The first item in the list is considered to be the "default" profile type. Example profile types are allocated objects or allocated bytes. + repeated ProfileType profile_types = 14; +} + +// Represents a relationship between a Sample (ephemeral structure represented by references to a Stacktrace, AttributeSet, Link + value and a timestamp) and a trace span. This allows for linking between specific Samples within a profile and traces. +message Link { + // A unique identifier of a trace that this linked span is part of. The ID is a + // 16-byte array. + bytes trace_id = 1; + // A unique identifier for the linked span. The ID is an 8-byte array. + bytes span_id = 2; +} + +// AttributeSet represents a set of attributes. Multiple Samples, Locations and Mappings may have the same attributes and that's why this is a separate message. These are stored in a lookup table in a Profile. These are referenced by index from other messages. +message AttributeSet { + // Attributes associated with a specific Sample, Location or a Mapping. + // attributes is a collection of key/value pairs. Note, global attributes + // like server name can be set using the resource API. Examples of attributes: + // + // "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" + // "/http/server_latency": 300 + // "abc.com/myattribute": true + // "abc.com/score": 10.239 + // + // The OpenTelemetry API specification further restricts the allowed value types: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + repeated opentelemetry.proto.common.v1.KeyValue attributes = 1; + + // dropped_attributes_count is the number of attributes that were discarded. Attributes + // can be discarded because their keys are too long or because there are too many + // attributes. If this value is 0, then no attributes were dropped. + uint32 dropped_attributes_count = 2; +} + +// A stacktrace is a sequence of locations. Order of locations goes from callers to callees. Many stacktraces will point to the same locations. The link between stacktraces, attribute sets, links, values and timestamps is implicit and is based on the order of the elements in the corresponding tables in ProfileType message. +message Stacktrace { + repeated uint32 location_indices = 1; +} + +// AggregationTemporality defines how a profile aggregator reports aggregated +// values. It describes how those values relate to the time interval over +// which they are aggregated. +enum AggregationTemporality { + AGGREGATION_TEMPORALITY_UNSPECIFIED = 0; // Temporality unspecified. + AGGREGATION_TEMPORALITY_DELTA = 1; // Delta aggregation over time. + AGGREGATION_TEMPORALITY_CUMULATIVE = 2; // Cumulative aggregation over time. +} + +// Represents a single profile type. It implicitly creates a connection between Stacktraces, Links, AttributeSets, values and timestamps. The connection is based on the order of the elements in the corresponding lists. This implicit connection creates an ephemeral structure called Sample. The length of reference lists must be the same. It is acceptable however for timestamps, links and attribute set lists to be empty. It is not acceptable for stacktrace or values lists to be empty. +message ProfileType { + // aggregation_temporality describes if the aggregator reports delta changes + // since last report time, or cumulative changes since a fixed start time. + AggregationTemporality aggregation_temporality = 1; + + // Profiler sample rate in Hz. This parameter indicates the frequency at which samples are collected, specifically for CPU profiles. Common values are 99 or 100. [Optional]. + uint64 sample_rate = 2; + + // Index into the string table for the type of the sample. Example values are "cpu", "alloc_objects", "alloc_bytes", "block_contentions". Full list is defined in https://github.com/open-telemetry/semantic-conventions + uint32 type_index = 3; + + // Index into the string table for the unit of the sample. Example values are "ms", "ns", "samples", "bytes". Full list is defined in https://github.com/open-telemetry/semantic-conventions + uint32 unit_index = 4; + + // List of indices referring to Stacktraces in the Profile's stacktrace table. + repeated uint32 stacktrace_indices = 10; + + // List of indices referring to Links in the Profile's link table. Each link corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] + repeated uint32 link_indices = 11; + + // List of indices referring to AttributeSets in the Profile's attribute set table. Each attribute set corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. [Optional] + repeated uint32 attribute_set_indices = 12; + + // List of values. Each value corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. + repeated int64 values = 13; + + // List of timestamps. Each timestamp corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. + repeated uint64 timestamps = 14; +} + +enum SymbolFidelity { + SYMBOL_FIDELITY_UNSPECIFIED = 0; + SYMBOL_FIDELITY_FULL = 1; +} + +// Describes the mapping from a binary to its original source code. These are stored in a lookup table in a Profile. These are referenced by index from other messages. +message Mapping { + // Address at which the binary (or DLL) is loaded into memory. + uint64 memory_start = 1; + // The limit of the address range occupied by this mapping. + uint64 memory_limit = 2; + // Offset in the binary that corresponds to the first mapped address. + uint64 file_offset = 3; + // The object this entry is loaded from. This can be a filename on + // disk for the main binary and shared libraries, or virtual + // abstractions like "[vdso]". Index into string table + uint32 filename_index = 4; + // A string that uniquely identifies a particular program version + // with high probability. E.g., for binaries generated by GNU tools, + // it could be the contents of the .note.gnu.build-id field. Index into string table + uint32 build_id_index = 5; + + SymbolFidelity symbolic_info = 6; + + // Reference to an attribute set from the Profile's attribute set table. + repeated uint32 attribute_set_indices = 7; +} + +// Describes function and line table debug information. These are stored in a lookup table in a Profile. These are referenced by index from other messages. +message Location { + // The id of the corresponding profile.Mapping for this location. + // It can be unset if the mapping is unknown or not applicable for + // this profile type. + uint32 mapping_index = 1; + // The instruction address for this location, if available. It + // should be within [Mapping.memory_start...Mapping.memory_limit] + // for the corresponding mapping. A non-leaf address may be in the + // middle of a call instruction. It is up to display tools to find + // the beginning of the instruction if necessary. + uint64 address = 2; + // Multiple line indicates this location has inlined functions, + // where the last entry represents the caller into which the + // preceding entries were inlined. + // + // E.g., if memcpy() is inlined into printf: + // line[0].function_name == "memcpy" + // line[1].function_name == "printf" + repeated Line line = 3; + + // Reference to an attribute set from the Profile's attribute set table. + repeated uint32 attribute_set_indices = 5; +} + +// Represents a line in a source file. These are embedded within a Location message. +message Line { + // The id of the corresponding profile.Function for this line. + uint32 function_index = 1; + // Line number in source code. + uint32 line = 2; +} + +// Represents a function in a source file. These are stored in a lookup table in a Profile. These are referenced by index from other messages. +message Function { + // Name of the function, in human-readable form if available. Index into string table + uint32 name_index = 1; + // Name of the function, as identified by the system. + // For instance, it can be a C++ mangled name. Index into string table + uint32 system_name_index = 2; + // Source file containing the function. Index into string table + uint32 filename_index = 3; + // Line number in source file. + uint32 start_line = 4; +} +``` + + + ### Message Descriptions These are detailed descriptions of protobuf messages that are used to represent profiling data. @@ -438,7 +745,7 @@ It represents 2 samples: The resulting profile in OTLP format would look like this (in YAML format): -``` +```yaml resource_profiles: - resource: attributes: null @@ -518,7 +825,7 @@ Profiling signal is different from most other ones in that we use the referencin This pseudocode illustrates the conceptual difference between the two approaches. Note that this example is simplified for the sake of clarity: -``` +```json // denormalized "samples": [ { @@ -563,7 +870,7 @@ Benchmarking shows that this approach is significantly more efficient in terms o Another optimization technique that we use to reduce the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload is using arrays of integers instead of arrays of structures to represent messages. This technique is used in conjunction with the referencing technique described above. Here's pseudocode that illustrates the approach. Note that this example is simplified for the sake of clarity: -``` +```json // normalized "samples": [ { From 2f8e81a3572a600e363dcb85332b1fb733f3533e Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 11:00:23 -0700 Subject: [PATCH 11/17] expands the semantic conventions comment --- text/profiles/0237-profiles-data-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index ce19f46fb..f01886f15 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -960,7 +960,7 @@ The source for this test is an aggregated pprof profile collected from a Go appl ### Semantic Conventions -This is a list of semantic conventions that are used in data model. +We plan to leverage OTEL Semantic Conventions for various enums such as profile types or units. Here's a non-exhaustive list of semantic conventions that are used in data model. It is expected to be extended in the future. #### Profile Types From 7ea56d57856a61d04d12127a08073589bc382286 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 11:04:37 -0700 Subject: [PATCH 12/17] expands the example with type, units, sample rate and aggregation_temporality fields --- text/profiles/0237-profiles-data-model.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index f01886f15..9f3d1d11a 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -776,7 +776,11 @@ resource_profiles: - line: - function_index: 2 profile_types: - - attribute_set_indices: + - aggregation_temporality: 1 + sample_rate: 100 + type_index: 4 + unit_index: 5 + attribute_set_indices: - 1 - 1 link_indices: @@ -804,6 +808,8 @@ resource_profiles: - foo - bar - baz + - cpu + - samples attributes: null profile_id: 0102030405060708090a0b0c0d0e0f10 scope: From 67b9f30ac1bda88ff1cd6f794186e8943305b022 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 11:05:37 -0700 Subject: [PATCH 13/17] typo fix Co-authored-by: Johannes Tax --- text/profiles/0237-profiles-data-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 9f3d1d11a..8f99f2239 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -944,7 +944,7 @@ The source is the same as in the previous example, but this time there were time #### Ruby profile with very deep stacktraces -The source for this test is an aggregated pprof profile collected from a Ruby application that has very deep stacktraces. You can see that the `arrays` representation is the most efficient in terms of memory allocations and size of the resulting protobuf payload (``). +The source for this test is an aggregated pprof profile collected from a Ruby application that has very deep stacktraces. You can see that the `arrays` representation is the most efficient in terms of memory allocations and size of the resulting protobuf payload. |name|bytes|gzipped_bytes|retained_objects|unique_label_sets|bytes_allocated|allocs| |---|---|---|---|---|---|---| From d4c46617db0531e04dc1ce271c5528e7a3643353 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 13:27:38 -0700 Subject: [PATCH 14/17] clarification about attributes Co-authored-by: Tigran Najaryan <4194920+tigrannajaryan@users.noreply.github.com> --- text/profiles/0237-profiles-data-model.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 8f99f2239..5341f87ec 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -491,8 +491,8 @@ This field is semantically required and it is expected that end_time >= start_ti ##### Field `attributes` -attributes is a collection of key/value pairs. Note, global attributes -like server name can be set using the resource API. +attributes is a collection of key/value pairs. Attributes that are not specific to a particular profile +(like server name) MUST be specified in Resource attributes instead. ##### Field `dropped_attributes_count` From 2ff2417e1d539205e7ac17bbf947dacdbcfc24b2 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 13:29:49 -0700 Subject: [PATCH 15/17] better name for sample structure section Co-authored-by: Tigran Najaryan <4194920+tigrannajaryan@users.noreply.github.com> --- text/profiles/0237-profiles-data-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 5341f87ec..8345a3658 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -584,7 +584,7 @@ List of values. Each value corresponds to a Stacktrace in stacktrace_indices lis List of timestamps. Each timestamp corresponds to a Stacktrace in stacktrace_indices list. Length must match stacktrace_indices length. -#### Message `Sample` +#### `Sample` structure Sample is an ephemeral structure. It is not explicitly represented as a protobuf message, instead it is represented by stacktraces, links, attribute sets, values and timestamps tables in `ProfileType` message. The connection is based on the order of the elements in the corresponding tables. For example, AttributeSet with index 1 corresponds to a Stacktrace located at index 1 in stacktraces table, and a Value located at index 1 in values table. Together they form a Sample. From a4bd92ec49f2990474598d4293fd38c3e8a68b81 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Fri, 8 Sep 2023 15:47:21 -0700 Subject: [PATCH 16/17] addresses comments from review --- text/profiles/0237-profiles-data-model.md | 27 +++++++++--------- .../images/otep0237/profiles-data-model.png | Bin 77581 -> 86711 bytes 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 8345a3658..477494e0b 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -18,7 +18,7 @@ Introduces Data Model for Profiles signal to OpenTelemetry. * [Message `ScopeProfiles`](#message-scopeprofiles) * [Message `Profile`](#message-profile) * [Message `ProfileType`](#message-profiletype) - * [Message `Sample`](#message-sample) + * [`Sample` structure](#sample-structure) * [Message `Stacktrace`](#message-stacktrace) * [Message `AttributeSet`](#message-attributeset) * [Message `Link`](#message-link) @@ -84,7 +84,7 @@ There are two types of relationships between profiles and other signals: #### From profiles to other signals -[Link](#message-link) is a message that is used to represent connections between profile [Samples](#message-sample) and trace spans. It uses `trace_id` and `span_id` as identifiers. +[Link](#message-link) is a message that is used to represent connections between profile [Samples](#sample-structure) and trace spans. It uses `trace_id` and `span_id` as identifiers. For other signals, such as logs or metrics, because other signals use the same way of linking between such signals and traces (`trace_id` and `span_id`), it is possible to correlate profiles with other signals using this same information. @@ -92,7 +92,7 @@ For other signals, such as logs or metrics, because other signals use the same w Other signals can use `profile_id` to reference a profile. For example, a log record can reference a profile that was collected at the time when the log record was generated by using `profile_id` as one of the attributes. This allows to correlate logs with profiles. -Additionally, `trace_id`, `span_id` can be used to reference specific [Samples](#message-sample) in a Profile, since [Samples](#message-sample) are linked to traces with these same identifiers using [Links](#message-link). +Additionally, `trace_id`, `span_id` can be used to reference specific [Samples](#sample-structure) in a Profile, since [Samples](#sample-structure) are linked to traces with these same identifiers using [Links](#message-link). The exact details of such linking are out of scope for this OTEP. It is expected that other OTEPs will define how such linking is done. @@ -199,8 +199,7 @@ message Profile { // This field is semantically required and it is expected that end_time >= start_time. fixed64 end_time_unix_nano = 3; - // attributes is a collection of key/value pairs. Note, global attributes - // like server name can be set using the resource API. Examples of attributes: + // attributes is a collection of key/value pairs. Attributes that are not specific to a particular profile (like server name) MUST be specified in Resource attributes instead. Examples of attributes: // // "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" // "/http/server_latency": 300 @@ -325,9 +324,10 @@ message ProfileType { repeated uint64 timestamps = 14; } +// SymbolFidelity enumerates the level of fidelity for symbol information in a profile. enum SymbolFidelity { - SYMBOL_FIDELITY_UNSPECIFIED = 0; - SYMBOL_FIDELITY_FULL = 1; + SYMBOL_FIDELITY_UNSPECIFIED = 0; // The symbol fidelity level is unspecified. + SYMBOL_FIDELITY_FULL = 1; // The symbol fidelity is at its fullest level of detail. } // Describes the mapping from a binary to its original source code. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -350,7 +350,7 @@ message Mapping { SymbolFidelity symbolic_info = 6; // Reference to an attribute set from the Profile's attribute set table. - repeated uint32 attribute_set_indices = 7; + uint32 attribute_set_index = 7; } // Describes function and line table debug information. These are stored in a lookup table in a Profile. These are referenced by index from other messages. @@ -375,7 +375,7 @@ message Location { repeated Line line = 3; // Reference to an attribute set from the Profile's attribute set table. - repeated uint32 attribute_set_indices = 5; + uint32 attribute_set_index = 4; } // Represents a line in a source file. These are embedded within a Location message. @@ -491,8 +491,7 @@ This field is semantically required and it is expected that end_time >= start_ti ##### Field `attributes` -attributes is a collection of key/value pairs. Attributes that are not specific to a particular profile -(like server name) MUST be specified in Resource attributes instead. +attributes is a collection of key/value pairs. Attributes that are not specific to a particular profile (like server name) MUST be specified in Resource attributes instead. ##### Field `dropped_attributes_count` @@ -659,7 +658,7 @@ E.g., if memcpy() is inlined into printf: line[0].function_name == "memcpy" line[1].function_name == "printf" -##### Field `attribute_set_indices` +##### Field `attribute_set_index` Reference to an attribute set from the Profile's attribute set table. @@ -695,7 +694,7 @@ A string that uniquely identifies a particular program version with high probability. E.g., for binaries generated by GNU tools, it could be the contents of the .note.gnu.build-id field. Index into string table -##### Field `attribute_set_indices` +##### Field `attribute_set_index` Reference to an attribute set from the Profile's attribute set table. @@ -893,7 +892,7 @@ Another optimization technique that we use to reduce the size of the resulting p "values": [100, 200] ``` -Explanation: in `normalized` representation samples are a collection of references to other messages plus a value. The standard way of representing those is to put each [Samples](#message-sample) into a separate message, and link from [Samples](#message-sample) to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second `arrays` representation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. +Explanation: in `normalized` representation samples are a collection of references to other messages plus a value. The standard way of representing those is to put each [Samples](#sample-structure) into a separate message, and link from [Samples](#sample-structure) to other messages. Parsing / generating such payloads creates many individual objects that runtime has to track. The second `arrays` representation puts values of the same kind into separate arrays. This reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse / generate such payload. Benchmarking shows that this approach is significantly more efficient in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. See [Prior art and alternatives](#prior-art-and-alternatives) for more details. diff --git a/text/profiles/images/otep0237/profiles-data-model.png b/text/profiles/images/otep0237/profiles-data-model.png index 3c35d8135d39276a62b89d43dfca2061fc883c91..1e000b4e73a16f370b1fc1584c86ceef3cd5a613 100644 GIT binary patch literal 86711 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 KElx{4e*ZrT>42{Q From 308f2bfe77fa850c61a456a3cb5aaa9655376738 Mon Sep 17 00:00:00 2001 From: Dmitry Filimonov Date: Mon, 11 Sep 2023 17:03:27 -0700 Subject: [PATCH 17/17] adds a section about pprof --- text/profiles/0237-profiles-data-model.md | 52 +++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/text/profiles/0237-profiles-data-model.md b/text/profiles/0237-profiles-data-model.md index 477494e0b..9cdcd5331 100644 --- a/text/profiles/0237-profiles-data-model.md +++ b/text/profiles/0237-profiles-data-model.md @@ -32,6 +32,13 @@ Introduces Data Model for Profiles signal to OpenTelemetry. * [Arrays of Integers vs Arrays of Structures](#arrays-of-integers-vs-arrays-of-structures) * [Trade-offs and mitigations](#trade-offs-and-mitigations) * [Prior art and alternatives](#prior-art-and-alternatives) + * [pprof](#pprof) + * [Divergence of Objectives](#divergence-of-objectives) + * [Technical Reasons](#technical-reasons) + * [Non-Technical Reasons](#non-technical-reasons) + * [Additional Considerations](#additional-considerations) + * [Interoperability between OTLP and pprof](#interoperability-between-otlp-and-pprof) + * [Performance implications in Go ecosystem](#performance-implications-in-go-ecosystem) * [Benchmarking](#benchmarking) * [Average profile](#average-profile) * [Average profile with timestamps added to each sample](#average-profile-with-timestamps-added-to-each-sample) @@ -914,6 +921,51 @@ The specification presented here was heavily inspired by pprof. Multiple alterna * `denormalized` representation, where all messages are embedded and no references by index are used. This is the simplest representation, but it is also the least efficient (by a huge margin) in terms of CPU utilization, memory consumption and size of the resulting protobuf payload. * `normalized` representation, where messages that repeat often are stored in separate tables and are referenced by indices. See [this chapter](#relationships-between-messages) for more details. This technique reduces the size of the resulting protobuf payload and the number of objects that need to be allocated to parse such payload. * `arrays` representation, which is based on `normalized` representation, but uses arrays of integers instead of arrays of structures to represent messages. See [this chapter](#arrays-of-integers-vs-arrays-of-structures) for more details. It further reduces the number of allocations, and the size of the resulting protobuf payload. +* `pprof` itself. More on that in the next section + +### pprof + +pprof itself was also considered as one of the options. It is a very efficient and very popular format, but it is not a good fit for OTLP for the combination of technical and non-technical reasons: + +#### Divergence of Objectives + +Before we dive into the actual reasons, it's important to recognize the differing objectives between the pprof format and the proposed OTLP profiles format: + +* The pprof format, well-established in the Go ecosystem, primarily serves as a means to visualize and analyze profiling data. Users often share pprof files and use various tools for visualization. Interoperability is a key feature, given the extensive ecosystem that produces and consumes pprof files. + +* On the other hand, OpenTelemetry has a broader mission, encompassing the collection and management of telemetry data across various languages and platforms. This mission emphasizes cross-linking between various signals (traces, metrics, logs, profiles), vendor-neutrality, and extensibility. OpenTelemetry aims to provide not only the wire format and a reference implementation for one runtime but also comprehensive tooling for various languages and runtimes, including client SDKs and collectors. + +* It's important to note that pprof primarily serves as a file format, with users directly interacting with pprof files. In contrast, OTLP serves as a wire format, and users don't interact directly with OTLP data. Moreover, OTLP format may evolve over time without affecting user experience. + +* OTLP profiles are not intended to replace pprof. Instead, they serve as a means to transport profiling data, linked to other signals, across the wire. + +#### Technical Reasons + +**Support for Linking Between Signals**: While it is possible to express links between signals in pprof using labels, the format is not optimized for this use-case within the broader telemetry ecosystem. + +**Support for Timestamps**: Similar to the previous point, pprof can handle timestamps, but doing so efficiently would require representing each timestamp as a separate Sample, which is inefficient due to the format's lack of optimization for this use-case. For more context, see [this PR from @felixge](https://github.com/google/pprof/pull/728). + +**Miscellaneous Improvements**: The OTLP profiles format introduces several improvements, such as the use of arrays-of-integers instead of arrays-of-structs representation (which reduces memory allocations), the use of indices instead of IDs to refer to structs (eliminating confusion and reducing payload size), and the use of semantic conventions to define profile types and units, among others. + +#### Non-Technical Reasons + +There are also non-technical considerations at play: + +**Interoperability and Backwards Compatibility**: Interoperability is a key strength of pprof. Tools that read pprof files from a decade ago still work with files generated today and vice versa. Introducing changes to pprof to align with OTLP's objectives could disrupt this longstanding interoperability. + +**Ability to Make Changes to the Format**: While using the same format would be ideal, the divergence in objectives between pprof and OTLP profiles could hinder effective collaboration and progress in introducing profiling support to OpenTelemetry. + +#### Additional Considerations + +##### Interoperability between OTLP and pprof + +One of the stated requirements in this OTEP is that existing profiling formats (pprof) can be unambiguously mapped to this data model. This means that existing tools that generate pprof files are automatically compatible with any OTLP backend. + +It works in the opposite direction as well — any OTLP backend should be able to generate pprof files, albeit some functionality (like timestamps support) may be limited. This is important because it allows users to use existing tools to visualize profiles generated by OpenTelemetry. + +##### Performance implications in Go ecosystem + +There are concerns that using OTLP profiles will have a negative impact on performance in the Go ecosystem. We discussed this with Go runtime team in one of the meetings and the direction we landed on is that the Go runtime could provide lower level APIs that would allow us to avoid the overhead of parsing pprof and encoding it into OTLP. FWIW There's already APIs like that for memory profiles. ### Benchmarking