Documentation
¶
Index ¶
- Variables
- func NewMergeProfilesRowReader(rowGroups []parquet.RowReader) parquet.RowReader
- type FunctionPersister
- func (*FunctionPersister) Deconstruct(row parquet.Row, _ uint64, fn *InMemoryFunction) parquet.Row
- func (*FunctionPersister) Name() string
- func (*FunctionPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryFunction, error)
- func (*FunctionPersister) Schema() *parquet.Schema
- func (*FunctionPersister) SortingColumns() parquet.SortingOption
- type InMemoryFunction
- type InMemoryLine
- type InMemoryLocation
- type InMemoryMapping
- type InMemoryProfile
- type LocationPersister
- func (*LocationPersister) Deconstruct(row parquet.Row, _ uint64, loc *InMemoryLocation) parquet.Row
- func (*LocationPersister) Name() string
- func (*LocationPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryLocation, error)
- func (*LocationPersister) Schema() *parquet.Schema
- func (*LocationPersister) SortingColumns() parquet.SortingOption
- type MappingPersister
- func (*MappingPersister) Deconstruct(row parquet.Row, _ uint64, m *InMemoryMapping) parquet.Row
- func (*MappingPersister) Name() string
- func (*MappingPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryMapping, error)
- func (*MappingPersister) Schema() *parquet.Schema
- func (*MappingPersister) SortingColumns() parquet.SortingOption
- type Persister
- type PersisterName
- type Profile
- type ProfilePersister
- func (*ProfilePersister) Deconstruct(row parquet.Row, id uint64, s *Profile) parquet.Row
- func (*ProfilePersister) Name() string
- func (*ProfilePersister) Reconstruct(row parquet.Row) (id uint64, s *Profile, err error)
- func (*ProfilePersister) Schema() *parquet.Schema
- func (*ProfilePersister) SortingColumns() parquet.SortingOption
- type ProfileRow
- type ReadWriter
- type Sample
- type Samples
- type SliceRowReader
- type Stacktrace
- type StacktracePersister
- func (*StacktracePersister) Deconstruct(row parquet.Row, id uint64, s *Stacktrace) parquet.Row
- func (*StacktracePersister) Name() string
- func (*StacktracePersister) Reconstruct(row parquet.Row) (id uint64, s *Stacktrace, err error)
- func (*StacktracePersister) Schema() *parquet.Schema
- func (*StacktracePersister) SortingColumns() parquet.SortingOption
- type StringPersister
- func (*StringPersister) Deconstruct(row parquet.Row, id uint64, s string) parquet.Row
- func (*StringPersister) Name() string
- func (*StringPersister) Reconstruct(row parquet.Row) (id uint64, s string, err error)
- func (*StringPersister) Schema() *parquet.Schema
- func (*StringPersister) SortingColumns() parquet.SortingOption
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ProfilesSchema = parquet.NewSchema("Profile", phlareparquet.Group{ phlareparquet.NewGroupField("ID", parquet.UUID()), phlareparquet.NewGroupField("SeriesIndex", parquet.Encoded(parquet.Uint(32), &parquet.DeltaBinaryPacked)), phlareparquet.NewGroupField("StacktracePartition", parquet.Encoded(parquet.Uint(64), &parquet.DeltaBinaryPacked)), phlareparquet.NewGroupField("TotalValue", parquet.Encoded(parquet.Uint(64), &parquet.DeltaBinaryPacked)), phlareparquet.NewGroupField("Samples", parquet.List(sampleField)), phlareparquet.NewGroupField("DropFrames", parquet.Optional(stringRef)), phlareparquet.NewGroupField("KeepFrames", parquet.Optional(stringRef)), phlareparquet.NewGroupField("TimeNanos", parquet.Timestamp(parquet.Nanosecond)), phlareparquet.NewGroupField("DurationNanos", parquet.Optional(parquet.Int(64))), phlareparquet.NewGroupField("Period", parquet.Optional(parquet.Int(64))), phlareparquet.NewGroupField("Comments", parquet.List(stringRef)), phlareparquet.NewGroupField("DefaultSampleType", parquet.Optional(parquet.Int(64))), }) )
Functions ¶
func NewMergeProfilesRowReader ¶
func NewMergeProfilesRowReader(rowGroups []parquet.RowReader) parquet.RowReader
Types ¶
type FunctionPersister ¶
type FunctionPersister struct{}
func (*FunctionPersister) Deconstruct ¶
func (*FunctionPersister) Deconstruct(row parquet.Row, _ uint64, fn *InMemoryFunction) parquet.Row
func (*FunctionPersister) Name ¶
func (*FunctionPersister) Name() string
func (*FunctionPersister) Reconstruct ¶
func (*FunctionPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryFunction, error)
func (*FunctionPersister) Schema ¶
func (*FunctionPersister) Schema() *parquet.Schema
func (*FunctionPersister) SortingColumns ¶
func (*FunctionPersister) SortingColumns() parquet.SortingOption
type InMemoryFunction ¶
type InMemoryFunction struct {
// Unique nonzero id for the function.
Id uint64
// Name of the function, in human-readable form if available.
Name uint32
// Name of the function, as identified by the system.
// For instance, it can be a C++ mangled name.
SystemName uint32
// Source file containing the function.
Filename uint32
// Line number in source file.
StartLine uint32
}
type InMemoryLine ¶
type InMemoryLocation ¶
type InMemoryLocation struct {
// Unique nonzero id for the location. A profile could use
// instruction addresses or any integer sequence as ids.
Id uint64
// 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.
Address uint64
// 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.
MappingId uint32
// Provides an indication that multiple symbols map to this location's
// address, for example due to identical code folding by the linker. In that
// case the line information above represents one of the multiple
// symbols. This field must be recomputed when the symbolization state of the
// profile changes.
IsFolded bool
// 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"
Line []InMemoryLine
}
type InMemoryMapping ¶
type InMemoryMapping struct {
// Unique nonzero id for the mapping.
Id uint64
// Address at which the binary (or DLL) is loaded into memory.
MemoryStart uint64
// The limit of the address range occupied by this mapping.
MemoryLimit uint64
// Offset in the binary that corresponds to the first mapped address.
FileOffset uint64
// 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]".
Filename uint32
// 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.
BuildId uint32
// The following fields indicate the resolution of symbolic info.
HasFunctions bool
HasFilenames bool
HasLineNumbers bool
HasInlineFrames bool
}
type InMemoryProfile ¶
type InMemoryProfile struct {
// A unique UUID per ingested profile
ID uuid.UUID
// SeriesIndex references the underlying series and is generated when
// writing the TSDB index. The SeriesIndex is different from block to
// block.
SeriesIndex uint32
// StacktracePartition is the partition ID of the stacktrace table that this profile belongs to.
StacktracePartition uint64
// TotalValue is the sum of all values in the profile.
TotalValue uint64
// SeriesFingerprint references the underlying series and is purely based
// on the label values. The value is consistent for the same label set (so
// also between different blocks).
SeriesFingerprint model.Fingerprint
// frames with Function.function_name fully matching the following
// regexp will be dropped from the samples, along with their successors.
DropFrames int64
// frames with Function.function_name fully matching the following
// regexp will be kept, even if it matches drop_frames.
KeepFrames int64
// Time of collection (UTC) represented as nanoseconds past the epoch.
TimeNanos int64
// Duration of the profile, if a duration makes sense.
DurationNanos int64
// The number of events between sampled occurrences.
Period int64
// Freeform text associated to the profile.
Comments []int64
// Index into the string table of the type of the preferred sample
// value. If unset, clients should default to the last sample value.
DefaultSampleType int64
Samples Samples
}
func (InMemoryProfile) Timestamp ¶
func (p InMemoryProfile) Timestamp() model.Time
func (InMemoryProfile) Total ¶
func (p InMemoryProfile) Total() int64
type LocationPersister ¶
type LocationPersister struct{}
func (*LocationPersister) Deconstruct ¶
func (*LocationPersister) Deconstruct(row parquet.Row, _ uint64, loc *InMemoryLocation) parquet.Row
func (*LocationPersister) Name ¶
func (*LocationPersister) Name() string
func (*LocationPersister) Reconstruct ¶
func (*LocationPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryLocation, error)
func (*LocationPersister) Schema ¶
func (*LocationPersister) Schema() *parquet.Schema
func (*LocationPersister) SortingColumns ¶
func (*LocationPersister) SortingColumns() parquet.SortingOption
type MappingPersister ¶
type MappingPersister struct{}
func (*MappingPersister) Deconstruct ¶
func (*MappingPersister) Deconstruct(row parquet.Row, _ uint64, m *InMemoryMapping) parquet.Row
func (*MappingPersister) Name ¶
func (*MappingPersister) Name() string
func (*MappingPersister) Reconstruct ¶
func (*MappingPersister) Reconstruct(row parquet.Row) (uint64, *InMemoryMapping, error)
func (*MappingPersister) Schema ¶
func (*MappingPersister) Schema() *parquet.Schema
func (*MappingPersister) SortingColumns ¶
func (*MappingPersister) SortingColumns() parquet.SortingOption
type Persister ¶
type Persister[T any] interface { PersisterName Schema() *parquet.Schema Deconstruct(parquet.Row, uint64, T) parquet.Row Reconstruct(parquet.Row) (uint64, T, error) SortingColumns() parquet.SortingOption }
type PersisterName ¶
type PersisterName interface {
Name() string
}
type Profile ¶
type Profile struct {
// A unique UUID per ingested profile
ID uuid.UUID `parquet:",uuid"`
// SeriesIndex references the underlying series and is generated when
// writing the TSDB index. The SeriesIndex is different from block to
// block.
SeriesIndex uint32 `parquet:",delta"`
// StacktracePartition is the partition ID of the stacktrace table that this profile belongs to.
StacktracePartition uint64 `parquet:",delta"`
// TotalValue is the sum of all values in the profile.
TotalValue uint64 `parquet:",delta"`
// SeriesFingerprint references the underlying series and is purely based
// on the label values. The value is consistent for the same label set (so
// also between different blocks).
SeriesFingerprint model.Fingerprint `parquet:"-"`
// The set of samples recorded in this profile.
Samples []*Sample `parquet:",list"`
// frames with Function.function_name fully matching the following
// regexp will be dropped from the samples, along with their successors.
DropFrames int64 `parquet:",optional"` // Index into string table.
// frames with Function.function_name fully matching the following
// regexp will be kept, even if it matches drop_frames.
KeepFrames int64 `parquet:",optional"` // Index into string table.
// Time of collection (UTC) represented as nanoseconds past the epoch.
TimeNanos int64 `parquet:",delta,timestamp(nanosecond)"`
// Duration of the profile, if a duration makes sense.
DurationNanos int64 `parquet:",delta,optional"`
// The number of events between sampled occurrences.
Period int64 `parquet:",optional"`
// Freeform text associated to the profile.
Comments []int64 `parquet:",list"` // Indices into string table.
// Index into the string table of the type of the preferred sample
// value. If unset, clients should default to the last sample value.
DefaultSampleType int64 `parquet:",optional"`
}
type ProfilePersister ¶
type ProfilePersister struct{}
func (*ProfilePersister) Deconstruct ¶
func (*ProfilePersister) Deconstruct(row parquet.Row, id uint64, s *Profile) parquet.Row
func (*ProfilePersister) Name ¶
func (*ProfilePersister) Name() string
func (*ProfilePersister) Reconstruct ¶
func (*ProfilePersister) Reconstruct(row parquet.Row) (id uint64, s *Profile, err error)
func (*ProfilePersister) Schema ¶
func (*ProfilePersister) Schema() *parquet.Schema
func (*ProfilePersister) SortingColumns ¶
func (*ProfilePersister) SortingColumns() parquet.SortingOption
type ProfileRow ¶
type ProfileRow parquet.Row
func (ProfileRow) ForStacktraceIDsValues ¶
func (p ProfileRow) ForStacktraceIDsValues(fn func([]parquet.Value))
func (ProfileRow) SeriesIndex ¶
func (p ProfileRow) SeriesIndex() uint32
func (ProfileRow) SetSeriesIndex ¶
func (p ProfileRow) SetSeriesIndex(v uint32)
func (ProfileRow) StacktracePartitionID ¶
func (p ProfileRow) StacktracePartitionID() uint64
func (ProfileRow) TimeNanos ¶
func (p ProfileRow) TimeNanos() int64
type ReadWriter ¶
func (*ReadWriter[T, P]) ReadParquetFile ¶
func (*ReadWriter[T, P]) ReadParquetFile(file io.ReaderAt) ([]T, error)
func (*ReadWriter[T, P]) WriteParquetFile ¶
func (*ReadWriter[T, P]) WriteParquetFile(file io.Writer, elements []T) error
type SliceRowReader ¶
type SliceRowReader[T any] struct { // contains filtered or unexported fields }
func NewInMemoryProfilesRowReader ¶
func NewInMemoryProfilesRowReader(slice []InMemoryProfile) *SliceRowReader[InMemoryProfile]
func NewProfilesRowReader ¶
func NewProfilesRowReader(slice []*Profile) *SliceRowReader[*Profile]
func (*SliceRowReader[T]) ReadRows ¶
func (r *SliceRowReader[T]) ReadRows(rows []parquet.Row) (n int, err error)
type Stacktrace ¶
type Stacktrace struct {
LocationIDs []uint64 `parquet:",list"`
}
type StacktracePersister ¶
type StacktracePersister struct{}
func (*StacktracePersister) Deconstruct ¶
func (*StacktracePersister) Deconstruct(row parquet.Row, id uint64, s *Stacktrace) parquet.Row
func (*StacktracePersister) Name ¶
func (*StacktracePersister) Name() string
func (*StacktracePersister) Reconstruct ¶
func (*StacktracePersister) Reconstruct(row parquet.Row) (id uint64, s *Stacktrace, err error)
func (*StacktracePersister) Schema ¶
func (*StacktracePersister) Schema() *parquet.Schema
func (*StacktracePersister) SortingColumns ¶
func (*StacktracePersister) SortingColumns() parquet.SortingOption
type StringPersister ¶
type StringPersister struct{}
func (*StringPersister) Deconstruct ¶
func (*StringPersister) Deconstruct(row parquet.Row, id uint64, s string) parquet.Row
func (*StringPersister) Name ¶
func (*StringPersister) Name() string
func (*StringPersister) Reconstruct ¶
func (*StringPersister) Reconstruct(row parquet.Row) (id uint64, s string, err error)
func (*StringPersister) Schema ¶
func (*StringPersister) Schema() *parquet.Schema
func (*StringPersister) SortingColumns ¶
func (*StringPersister) SortingColumns() parquet.SortingOption
Click to show internal directories.
Click to hide internal directories.