model

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2023 License: AGPL-3.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LabelNameProfileType = "__profile_type__"
	LabelNameType        = "__type__"
	LabelNameUnit        = "__unit__"
	LabelNamePeriodType  = "__period_type__"
	LabelNamePeriodUnit  = "__period_unit__"
	LabelNameDelta       = "__delta__"
	LabelNameProfileName = pmodel.MetricNameLabel
	LabelNameServiceName = "service_name"
	LabelNameSessionID   = "__session_id__"

	LabelNameServiceNameK8s = "__meta_kubernetes_pod_annotation_pyroscope_io_service_name"
)
View Source
const MaxNodes = 8192

Variables

This section is empty.

Functions

func CloneLabelPairs

func CloneLabelPairs(lbs []*typesv1.LabelPair) []*typesv1.LabelPair

CloneLabelPairs clones the label pairs.

func CompareLabelPairs

func CompareLabelPairs(a []*typesv1.LabelPair, b []*typesv1.LabelPair) int

Compare compares the two label sets. The result will be 0 if a==b, <0 if a < b, and >0 if a > b.

func CompareProfile

func CompareProfile(a, b *ingestv1.Profile) int64

CompareProfile compares the two profiles.

func DropGoTypeParameters added in v1.1.0

func DropGoTypeParameters(input string) string

func ExportToFlamebearer

func ExportToFlamebearer(fg *querierv1.FlameGraph, profileType *typesv1.ProfileType) *flamebearer.FlamebearerProfile

ExportToFlamebearer exports the flamegraph to a Flamebearer struct.

func IsLabelAllowedForIngestion added in v1.1.0

func IsLabelAllowedForIngestion(name string) bool

func LabelPairsString

func LabelPairsString(lbs []*typesv1.LabelPair) string

LabelPairsString returns a string representation of the label pairs.

func NewFlameGraph

func NewFlameGraph(t *Tree, maxNodes int64) *querierv1.FlameGraph

func NewFlamegraphDiff

func NewFlamegraphDiff(left, right *Tree, maxNodes int) (*querierv1.FlameGraphDiff, error)

NewFlamegraphDiff generates a FlameGraphDiff from 2 trees. It also prunes the final tree based on the maxNodes parameter Notice that the resulting FlameGraph can't be used interchangeably with a 'single' Flamegraph Due to many differences: * Nodes * It's structure is different

i+0 = x offset, left  tree
i+1 = total   , left  tree
i+2 = self    , left  tree
i+3 = x offset, right tree
i+4 = total   , right tree
i+5 = self    , right tree
i+6 = index in the names array

func ParseProfileTypeSelector

func ParseProfileTypeSelector(id string) (*typesv1.ProfileType, error)

ParseProfileTypeSelector parses the profile selector string.

func SelectorFromProfileType

func SelectorFromProfileType(profileType *typesv1.ProfileType) *labels.Matcher

SelectorFromProfileType builds a *label.Matcher from an profile type struct

func SetProfileMetadata

func SetProfileMetadata(p *profile.Profile, ty *typesv1.ProfileType)

SetProfileMetadata sets the metadata on the profile.

func StableHash added in v1.1.0

func StableHash(ls labels.Labels) uint64

StableHash is a labels hashing implementation which is guaranteed to not change over time. This function should be used whenever labels hashing backward compatibility must be guaranteed.

func StacktracePartitionFromProfile

func StacktracePartitionFromProfile(lbls []Labels, p *profilev1.Profile) uint64

func StringToLabelsPairs

func StringToLabelsPairs(s string) ([]*typesv1.LabelPair, error)

StringToLabelsPairs converts a string representation of label pairs to a slice of label pairs.

func SumSeries

func SumSeries(series ...[]*typesv1.Series) []*typesv1.Series

Types

type FlameGraphMerger

type FlameGraphMerger struct {
	// contains filtered or unexported fields
}

func NewFlameGraphMerger

func NewFlameGraphMerger() *FlameGraphMerger

func (*FlameGraphMerger) FlameGraph

func (m *FlameGraphMerger) FlameGraph(maxNodes int64) *querierv1.FlameGraph

func (*FlameGraphMerger) MergeFlameGraph

func (m *FlameGraphMerger) MergeFlameGraph(src *querierv1.FlameGraph)

MergeFlameGraph adds the flame graph stack traces to the resulting flame graph. The call is thread-safe, but the resulting flame graph or tree should be only accessed after all the samples are merged.

func (*FlameGraphMerger) Tree

func (m *FlameGraphMerger) Tree() *Tree

type Labels

type Labels []*typesv1.LabelPair

Labels is a sorted set of labels. Order has to be guaranteed upon instantiation.

func LabelsFromStrings

func LabelsFromStrings(ss ...string) Labels

LabelsFromStrings creates new labels from pairs of strings.

func (Labels) BytesWithLabels

func (ls Labels) BytesWithLabels(buf []byte, names ...string) []byte

BytesWithLabels is just as Bytes(), but only for labels matching names. 'names' have to be sorted in ascending order. It uses an byte invalid character as a separator and so should not be used for printing.

func (Labels) Clone

func (ls Labels) Clone() Labels

func (Labels) Delete added in v1.1.0

func (ls Labels) Delete(name string) Labels

Delete removes the first label encountered with the name given. A copy of the label set without the label is returned.

func (Labels) Get

func (ls Labels) Get(name string) string

Get returns the value for the label with the given name. Returns an empty string if the label doesn't exist.

func (Labels) GetLabel added in v1.1.0

func (ls Labels) GetLabel(name string) (*typesv1.LabelPair, bool)

GetLabel returns the label with the given name.

func (Labels) Hash

func (ls Labels) Hash() uint64

Hash returns a hash value for the label set.

func (Labels) HashForLabels

func (ls Labels) HashForLabels(b []byte, names ...string) (uint64, []byte)

HashForLabels returns a hash value for the labels matching the provided names. 'names' have to be sorted in ascending order.

func (Labels) HashWithoutLabels

func (ls Labels) HashWithoutLabels(b []byte, names ...string) (uint64, []byte)

HashWithoutLabels returns a hash value for all labels except those matching the provided names. 'names' have to be sorted in ascending order.

func (Labels) Len

func (ls Labels) Len() int

func (Labels) Less

func (ls Labels) Less(i, j int) bool

func (Labels) Swap

func (ls Labels) Swap(i, j int)

func (Labels) ToPrometheusLabels

func (ls Labels) ToPrometheusLabels() labels.Labels

func (Labels) Unique added in v1.1.0

func (ls Labels) Unique() Labels

Unique returns a set labels with unique keys. Labels expected to be sorted: underlying capacity is reused and the original order is preserved: the first key takes precedence over duplicates. Method receiver should not be used after the call.

func (Labels) WithLabels

func (ls Labels) WithLabels(names ...string) Labels

WithLabels returns a subset of Labels that matches match with the provided label names.

func (Labels) WithoutPrivateLabels

func (ls Labels) WithoutPrivateLabels() Labels

type LabelsBuilder

type LabelsBuilder struct {
	// contains filtered or unexported fields
}

LabelsBuilder allows modifying Labels.

func NewLabelsBuilder

func NewLabelsBuilder(base Labels) *LabelsBuilder

NewLabelsBuilder returns a new LabelsBuilder.

func (*LabelsBuilder) Del

func (b *LabelsBuilder) Del(ns ...string) *LabelsBuilder

Del deletes the label of the given name.

func (*LabelsBuilder) Labels

func (b *LabelsBuilder) Labels() Labels

Labels returns the labels from the builder. If no modifications were made, the original labels are returned.

func (*LabelsBuilder) Reset

func (b *LabelsBuilder) Reset(base Labels)

Reset clears all current state for the builder.

func (*LabelsBuilder) Set

func (b *LabelsBuilder) Set(n, v string) *LabelsBuilder

Set the name/value pair as a label.

type SeriesMerger

type SeriesMerger struct {
	// contains filtered or unexported fields
}

func NewSeriesMerger

func NewSeriesMerger(sum bool) *SeriesMerger

NewSeriesMerger creates a new series merger. If sum is set, samples with matching timestamps are summed, otherwise duplicates are discarded.

func (*SeriesMerger) MergeSeries

func (m *SeriesMerger) MergeSeries(s []*typesv1.Series)

func (*SeriesMerger) Series

func (m *SeriesMerger) Series() []*typesv1.Series

type SessionID added in v1.1.0

type SessionID uint64

func ParseSessionID added in v1.1.0

func ParseSessionID(s string) (SessionID, error)

func (SessionID) String added in v1.1.0

func (s SessionID) String() string

type Stack

type Stack[T any] struct {
	// contains filtered or unexported fields
}

Stack is a stack of values. Pushing and popping values is O(1).

func NewStack

func NewStack[T any]() *Stack[T]

func (*Stack[T]) Pop

func (s *Stack[T]) Pop() (result T, ok bool)

Pop removes and returns the top value from the stack.

func (*Stack[T]) Push

func (s *Stack[T]) Push(v T)

Push adds a value to the top of the stack.

func (*Stack[T]) Reset

func (s *Stack[T]) Reset()

Reset releases the stack's resources.

func (*Stack[T]) Slice

func (s *Stack[T]) Slice() []T

Slice returns a slice of the values in the stack. The top value of the stack is at the beginning of the slice.

type StacktraceMerger

type StacktraceMerger struct {
	// contains filtered or unexported fields
}

func NewStackTraceMerger

func NewStackTraceMerger() *StacktraceMerger

NewStackTraceMerger merges collections of StacktraceSamples. The result is a byte tree representation of the merged samples.

func (*StacktraceMerger) MergeStackTraces

func (m *StacktraceMerger) MergeStackTraces(stacks []*ingestv1.StacktraceSample, names []string)

MergeStackTraces adds the stack traces to the resulting tree. The call is thread-safe, but the resulting tree bytes should be only build after all the samples are merged. Note that the function may reuse the capacity of the names slice.

func (*StacktraceMerger) Size

func (m *StacktraceMerger) Size() int

func (*StacktraceMerger) TreeBytes

func (m *StacktraceMerger) TreeBytes(maxNodes int64) []byte

type StacktraceNode

type StacktraceNode struct {
	FirstChild  int32
	NextSibling int32
	Parent      int32
	Location    int32
	Value       int64
	Total       int64
}

type StacktraceTree

type StacktraceTree struct{ Nodes []StacktraceNode }

func NewStacktraceTree

func NewStacktraceTree(size int) *StacktraceTree

func (*StacktraceTree) Bytes

func (t *StacktraceTree) Bytes(dst io.Writer, maxNodes int64, funcs []string)

func (*StacktraceTree) Insert

func (t *StacktraceTree) Insert(locations []int32, value int64)

func (*StacktraceTree) MinValue

func (t *StacktraceTree) MinValue(maxNodes int64) int64

MinValue returns the minimum "total" value a node in a tree has to have.

func (*StacktraceTree) Traverse

func (t *StacktraceTree) Traverse(maxNodes int64, fn StacktraceTreeTraverseFn) error

type StacktraceTreeTraverseFn

type StacktraceTreeTraverseFn = func(index int32, children []int32) error

type Tree

type Tree struct {
	// contains filtered or unexported fields
}

func UnmarshalTree

func UnmarshalTree(b []byte) (*Tree, error)

func (*Tree) Fix added in v1.1.0

func (t *Tree) Fix()

Fix re-establishes order of nodes and merges duplicates.

func (*Tree) FormatNodeNames added in v1.1.0

func (t *Tree) FormatNodeNames(fn func(string) string)

func (*Tree) InsertStack

func (t *Tree) InsertStack(v int64, stack ...string)

func (*Tree) IterateStacks

func (t *Tree) IterateStacks(cb func(name string, self int64, stack []string))

func (*Tree) MarshalTruncate

func (t *Tree) MarshalTruncate(w io.Writer, maxNodes int64) (err error)

MarshalTruncate writes tree byte representation to the writer provider, the number of nodes is limited to maxNodes. The function modifies the tree: truncated nodes are removed from the tree.

func (*Tree) Merge

func (t *Tree) Merge(src *Tree)

func (*Tree) String

func (t *Tree) String() string

func (*Tree) Total

func (t *Tree) Total() (v int64)

func (*Tree) WriteCollapsed

func (t *Tree) WriteCollapsed(dst io.Writer)

type TreeMerger

type TreeMerger struct {
	// contains filtered or unexported fields
}

func NewTreeMerger

func NewTreeMerger() *TreeMerger

func (*TreeMerger) MergeTreeBytes

func (m *TreeMerger) MergeTreeBytes(b []byte) error

func (*TreeMerger) Tree

func (m *TreeMerger) Tree() *Tree

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL