Semantic conventions for V8 JS engine runtime metrics

Status: Development

This document describes semantic conventions for V8 JS Engine Runtime metrics in OpenTelemetry. This engine is used in some javascript runtime such as Node.js and Deno.

Description: In-development V8 JS Engine Runtime metrics captured under v8js.

Metric: v8js.gc.duration

This metric is recommended.

This metric SHOULD be specified with ExplicitBucketBoundaries of [ 0.01, 0.1, 1, 10 ].

NameInstrument TypeUnit (UCUM)DescriptionStability
v8js.gc.durationHistogramsGarbage collection duration. [1]Development

[1]: The values can be retrieve from perf_hooks.PerformanceObserver(...).observe({ entryTypes: ['gc'] })

AttributeTypeDescriptionExamplesRequirement LevelStability
v8js.gc.typestringThe type of garbage collection.major; minor; incrementalRequiredDevelopment

v8js.gc.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
incrementalIncremental (Incremental Marking).Development
majorMajor (Mark Sweep Compact).Development
minorMinor (Scavenge).Development
weakcbWeak Callbacks (Process Weak Callbacks).Development

Metric: v8js.memory.heap.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStability
v8js.memory.heap.limitUpDownCounterByTotal heap memory size pre-allocated. [1]Development

[1]: The value can be retrieved from value space_size of v8.getHeapSpaceStatistics()

AttributeTypeDescriptionExamplesRequirement LevelStability
v8js.heap.space.namestringThe name of the space type of heap memory. [1]new_space; old_space; code_spaceRequiredDevelopment

[1] v8js.heap.space.name: Value can be retrieved from value space_name of v8.getHeapSpaceStatistics()


v8js.heap.space.name has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
code_spaceCode memory space.Development
large_object_spaceLarge object memory space.Development
map_spaceMap memory space.Development
new_spaceNew memory space.Development
old_spaceOld memory space.Development

Metric: v8js.memory.heap.used

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStability
v8js.memory.heap.usedUpDownCounterByHeap Memory size allocated. [1]Development

[1]: The value can be retrieved from value space_used_size of v8.getHeapSpaceStatistics()

AttributeTypeDescriptionExamplesRequirement LevelStability
v8js.heap.space.namestringThe name of the space type of heap memory. [1]new_space; old_space; code_spaceRequiredDevelopment

[1] v8js.heap.space.name: Value can be retrieved from value space_name of v8.getHeapSpaceStatistics()


v8js.heap.space.name has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
code_spaceCode memory space.Development
large_object_spaceLarge object memory space.Development
map_spaceMap memory space.Development
new_spaceNew memory space.Development
old_spaceOld memory space.Development

Metric: v8js.heap.space.available_size

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStability
v8js.heap.space.available_sizeUpDownCounterByHeap space available size. [1]Development

[1]: Value can be retrieved from value space_available_size of v8.getHeapSpaceStatistics()

AttributeTypeDescriptionExamplesRequirement LevelStability
v8js.heap.space.namestringThe name of the space type of heap memory. [1]new_space; old_space; code_spaceRequiredDevelopment

[1] v8js.heap.space.name: Value can be retrieved from value space_name of v8.getHeapSpaceStatistics()


v8js.heap.space.name has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
code_spaceCode memory space.Development
large_object_spaceLarge object memory space.Development
map_spaceMap memory space.Development
new_spaceNew memory space.Development
old_spaceOld memory space.Development

Metric: v8js.heap.space.physical_size

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStability
v8js.heap.space.physical_sizeUpDownCounterByCommitted size of a heap space. [1]Development

[1]: Value can be retrieved from value physical_space_size of v8.getHeapSpaceStatistics()

AttributeTypeDescriptionExamplesRequirement LevelStability
v8js.heap.space.namestringThe name of the space type of heap memory. [1]new_space; old_space; code_spaceRequiredDevelopment

[1] v8js.heap.space.name: Value can be retrieved from value space_name of v8.getHeapSpaceStatistics()


v8js.heap.space.name has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
code_spaceCode memory space.Development
large_object_spaceLarge object memory space.Development
map_spaceMap memory space.Development
new_spaceNew memory space.Development
old_spaceOld memory space.Development