Documentation
¶
Index ¶
- func BumpMemlock(cur, max uint64) (syscall.Rlimit, error)
- func ConvertToPprof(captureTime time.Time, periodNS int64, prs ...*Profile) (*profile.Profile, error)
- func HumanizeRLimit(val uint64) string
- type DebugInfoManager
- type EfficientBuffer
- type FileProfileWriter
- type LabelsManager
- type NoopProfiler
- type Normalizer
- type ObjectFileCache
- type PID
- type ProcessMapCache
- type Profile
- type ProfileWriter
- type RemoteProfileWriter
- type StackID
- type Symbolizer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BumpMemlock ¶ added in v0.10.0
BumpMemlock increases the current memlock limit to a value more reasonable for the profiler's needs.
func ConvertToPprof ¶ added in v0.10.0
func ConvertToPprof(captureTime time.Time, periodNS int64, prs ...*Profile) (*profile.Profile, error)
ConvertToPprof converts several per process Profile to a pprof Profile.
func HumanizeRLimit ¶ added in v0.10.1
Types ¶
type DebugInfoManager ¶ added in v0.10.0
type DebugInfoManager interface {
EnsureUploaded(ctx context.Context, objFiles []*objectfile.MappedObjectFile)
}
type EfficientBuffer ¶ added in v0.13.0
type EfficientBuffer []byte
func (*EfficientBuffer) PutInt16 ¶ added in v0.13.0
func (eb *EfficientBuffer) PutInt16(v int16)
PutInt16 writes the passed int16 in little endian and advances the current slice.
func (*EfficientBuffer) PutUint16 ¶ added in v0.13.0
func (eb *EfficientBuffer) PutUint16(v uint16)
PutUint16 writes the passed uint16 in little endian and advances the current slice.
func (*EfficientBuffer) PutUint32 ¶ added in v0.13.0
func (eb *EfficientBuffer) PutUint32(v uint32)
PutUint32 writes the passed uint32 in little endian and advances the current slice.
func (*EfficientBuffer) PutUint64 ¶ added in v0.13.0
func (eb *EfficientBuffer) PutUint64(v uint64)
PutUint64 writes the passed uint64 in little endian and advances the current slice.
func (*EfficientBuffer) PutUint8 ¶ added in v0.13.0
func (eb *EfficientBuffer) PutUint8(v uint8)
PutUint8 writes the passed uint8 in little endian and advances the current slice.
func (*EfficientBuffer) Slice ¶ added in v0.13.0
func (eb *EfficientBuffer) Slice(size int) EfficientBuffer
Slice returns a slice re-sliced from the original EfficientBuffer. This is useful to efficiently write byte by byte, for example, when setting BPF maps without incurring in extra allocations in the writing methods, or changing the capacity of the underlying memory buffer.
Callers are responsible to ensure that there is enough capacity left for the passed size.
type FileProfileWriter ¶ added in v0.10.0
type FileProfileWriter struct {
// contains filtered or unexported fields
}
FileProfileWriter writes profiles to a local file.
func NewFileProfileWriter ¶ added in v0.10.0
func NewFileProfileWriter(dirPath string) *FileProfileWriter
NewFileProfileWriter creates a new FileProfileWriter.
type LabelsManager ¶ added in v0.10.0
type NoopProfiler ¶ added in v0.10.0
type NoopProfiler struct{}
NoopProfiler does nothing. It serves as a skeleton of what other will have to be implemented when adding a new profiler.
func (*NoopProfiler) LastError ¶ added in v0.10.0
func (p *NoopProfiler) LastError() error
func (*NoopProfiler) LastProfileStartedAt ¶ added in v0.10.0
func (p *NoopProfiler) LastProfileStartedAt() time.Time
func (*NoopProfiler) Name ¶ added in v0.10.0
func (p *NoopProfiler) Name() string
func (*NoopProfiler) ProcessLastErrors ¶ added in v0.10.0
func (p *NoopProfiler) ProcessLastErrors() map[int]error
func (*NoopProfiler) Stop ¶ added in v0.10.0
func (p *NoopProfiler) Stop()
type Normalizer ¶ added in v0.10.0
type ObjectFileCache ¶ added in v0.10.0
type ObjectFileCache interface {
ObjectFileForProcess(pid int, m *profile.Mapping) (*objectfile.MappedObjectFile, error)
}
type PID ¶ added in v0.10.0
type PID int32
PID is the process ID of the profiling target. See https://ftp.gnu.org/old-gnu/Manuals/glibc-2.2.3/html_node/libc_554.html
type ProcessMapCache ¶ added in v0.10.0
type Profile ¶ added in v0.10.0
type Profile struct {
ID StackID
Samples []*profile.Sample
Locations []*profile.Location
UserLocations []*profile.Location
KernelLocations []*profile.Location
UserMappings []*profile.Mapping
KernelMapping *profile.Mapping
// Only available after symbolization.
Functions []*profile.Function
}
Profile represents a capture profile of a process.
type ProfileWriter ¶ added in v0.10.0
type RemoteProfileWriter ¶ added in v0.10.0
type RemoteProfileWriter struct {
// contains filtered or unexported fields
}
RemoteProfileWriter is a profile writer that writes profiles to a remote profile store.
func NewRemoteProfileWriter ¶ added in v0.10.0
func NewRemoteProfileWriter(logger log.Logger, profileStoreClient profilestorepb.ProfileStoreServiceClient, isNormalized bool) *RemoteProfileWriter
NewRemoteProfileWriter creates a new RemoteProfileWriter.
type StackID ¶ added in v0.10.0
StackID consists of two parts: the first part is the process ID of the profiling target, the second part is the thread ID of the stack trace has been collected from.