...

Package pgo

import "cmd/internal/pgo"
Overview
Index

Overview ▾

Package pgo contains the compiler-agnostic portions of PGO profile handling. Notably, parsing pprof profiles and serializing/deserializing from a custom intermediate representation.

Package pgo contains the compiler-agnostic portions of PGO profile handling. Notably, parsing pprof profiles and serializing/deserializing from a custom intermediate representation.

func IsSerialized

func IsSerialized(r *bufio.Reader) (bool, error)

IsSerialized returns true if r is a serialized Profile.

IsSerialized only peeks at r, so seeking back after calling is not necessary.

func WeightInPercentage

func WeightInPercentage(value int64, total int64) float64

WeightInPercentage converts profile weights to a percentage.

type NamedCallEdge

NamedCallEdge identifies a call edge by linker symbol names and call site offset.

type NamedCallEdge struct {
    CallerName     string
    CalleeName     string
    CallSiteOffset int // Line offset from function start line.
}

type NamedEdgeMap

NamedEdgeMap contains all unique call edges in the profile and their edge weight.

type NamedEdgeMap struct {
    Weight map[NamedCallEdge]int64

    // ByWeight lists all keys in Weight, sorted by edge weight from
    // highest to lowest.
    ByWeight []NamedCallEdge
}

type Profile

Profile contains the processed data from the PGO profile.

type Profile struct {
    // TotalWeight is the aggregated edge weights across the profile. This
    // helps us determine the percentage threshold for hot/cold
    // partitioning.
    TotalWeight int64

    // NamedEdgeMap contains all unique call edges in the profile and their
    // edge weight.
    NamedEdgeMap NamedEdgeMap
}

func FromPProf

func FromPProf(r io.Reader) (*Profile, error)

FromPProf parses Profile from a pprof profile.

func FromSerialized

func FromSerialized(r io.Reader) (*Profile, error)

FromSerialized parses a profile from serialization output of Profile.WriteTo.

func (*Profile) WriteTo

func (d *Profile) WriteTo(w io.Writer) (int64, error)

WriteTo writes a serialized representation of Profile to w.

FromSerialized can parse the format back to Profile.

WriteTo implements io.WriterTo.Write.