const CommonStyle = `
/* See https://github.com/golang/pkgsite/blob/master/static/shared/typography/typography.css */
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
font-size: 1rem;
line-height: normal;
max-width: 9in;
margin: 1em;
}
h1 { font-size: 1.5rem; }
h2 { font-size: 1.375rem; }
h1,h2 {
font-weight: 600;
line-height: 1.25em;
word-break: break-word;
}
p { color: grey85; font-size:85%; }
code,
pre,
textarea.code {
font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
font-size: 0.875rem;
line-height: 1.5em;
}
pre,
textarea.code {
background-color: var(--color-background-accented);
border: var(--border);
border-radius: var(--border-radius);
color: var(--color-text);
overflow-x: auto;
padding: 0.625rem;
tab-size: 4;
white-space: pre;
}
`
func BuildProfile(prof []ProfileRecord) *profile.Profile
func MMUHandlerFunc(ranges []Range, f MutatorUtilFunc) http.HandlerFunc
func MainHandler(views []View) http.Handler
func SVGProfileHandlerFunc(f ProfileFunc) http.HandlerFunc
SVGProfileHandlerFunc serves pprof-like profile generated by prof as svg.
func StaticHandler() http.Handler
func TraceHandler() http.Handler
func WalkStackFrames(allFrames map[string]format.Frame, id int, fn func(id int))
WalkStackFrames calls fn for id and all of its parent frames from allFrames.
type ArrowEvent struct { Name string Start time.Duration End time.Duration FromResource uint64 FromStack int ToResource uint64 }
type AsyncSliceEvent struct { SliceEvent Category string Scope string TaskColorIndex uint64 // Take on the same color as the task with this ID. }
type Emitter struct {
// contains filtered or unexported fields
}
func NewEmitter(c TraceConsumer, rangeStart, rangeEnd time.Duration) *Emitter
NewEmitter returns a new Emitter that writes to c. The rangeStart and rangeEnd args are used for splitting large traces.
func (e *Emitter) Arrow(a ArrowEvent)
func (e *Emitter) AsyncSlice(s AsyncSliceEvent)
func (e *Emitter) Err() error
Err returns an error if the emitter is in an invalid state.
func (e *Emitter) Event(ev *format.Event)
func (e *Emitter) Flush()
func (e *Emitter) Focus(id uint64)
func (e *Emitter) Gomaxprocs(v uint64)
func (e *Emitter) GoroutineTransition(ts time.Duration, from, to GState)
func (e *Emitter) HeapAlloc(ts time.Duration, v uint64)
func (e *Emitter) HeapGoal(ts time.Duration, v uint64)
func (e *Emitter) IncThreadStateCount(ts time.Duration, state ThreadState, delta int64)
func (e *Emitter) Instant(i InstantEvent)
func (e *Emitter) OptionalEvent(ev *format.Event)
OptionalEvent emits ev if it's within the time range of of the consumer, i.e. the selected trace split range.
func (e *Emitter) Resource(id uint64, name string)
func (e *Emitter) SetResourceFilter(filter func(uint64) bool)
func (e *Emitter) SetResourceType(name string)
func (e *Emitter) Slice(s SliceEvent)
func (e *Emitter) Stack(stk []*trace.Frame) int
Stack emits the given frames and returns a unique id for the stack. No pointers to the given data are being retained beyond the call to Stack.
func (e *Emitter) Task(id uint64, name string, sortIndex int)
func (e *Emitter) TaskArrow(a ArrowEvent)
func (e *Emitter) TaskSlice(s SliceEvent)
type GState int
const ( GDead GState = iota GRunnable GRunning GWaiting GWaitingGC )
type InstantEvent struct { Ts time.Duration Name string Category string Resource uint64 Stack int Arg any }
type Mode int
const ( ModeGoroutineOriented Mode = 1 << iota ModeTaskOriented ModeThreadOriented // Mutually exclusive with ModeGoroutineOriented. )
type MutatorUtilFunc func(trace.UtilFlags) ([][]trace.MutatorUtil, error)
type ProfileFunc func(r *http.Request) ([]ProfileRecord, error)
type ProfileRecord struct { Stack []*trace.Frame Count uint64 Time time.Duration }
type Range struct { Name string Start int End int StartTime int64 EndTime int64 }
func (r Range) URL(viewType ViewType) string
type SliceEvent struct { Name string Ts time.Duration Dur time.Duration Resource uint64 Stack int EndStack int Arg any }
type ThreadState int
const ( ThreadStateInSyscall ThreadState = iota ThreadStateInSyscallRuntime ThreadStateRunning )
TimeHistogram is an high-dynamic-range histogram for durations.
type TimeHistogram struct { Count int Buckets []int MinBucket, MaxBucket int }
func (h *TimeHistogram) Add(d time.Duration)
Add adds a single sample to the histogram.
func (h *TimeHistogram) BucketMin(bucket int) time.Duration
BucketMin returns the minimum duration value for a provided bucket.
func (h *TimeHistogram) ToHTML(urlmaker func(min, max time.Duration) string) template.HTML
ToHTML renders the histogram as HTML.
type TraceConsumer struct { ConsumeTimeUnit func(unit string) ConsumeViewerEvent func(v *format.Event, required bool) ConsumeViewerFrame func(key string, f format.Frame) Flush func() }
func SplittingTraceConsumer(max int) (*splitter, TraceConsumer)
func ViewerDataTraceConsumer(w io.Writer, startIdx, endIdx int64) TraceConsumer
ViewerDataTraceConsumer returns a TraceConsumer that writes to w. The startIdx and endIdx are used for splitting large traces. They refer to indexes in the traceEvents output array, not the events in the trace input.
type View struct { Type ViewType Ranges []Range }
func (v View) URL(rangeIdx int) string
type ViewType string
const ( ViewProc ViewType = "proc" ViewThread ViewType = "thread" )
Name | Synopsis |
---|---|
.. |