0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-13 15:44:44 +02:00
gitea/modules/gtprof/gtprof.go
wxiaoguang 3a65611487 fix
2025-03-17 14:51:30 +08:00

42 lines
1.3 KiB
Go

// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package gtprof
import (
"sync/atomic"
"time"
)
// This is a Gitea-specific profiling package,
// the name is chosen to distinguish it from the standard pprof tool and "GNU gprof"
// LabelGracefulLifecycle is a label marking manager lifecycle phase
// Making it compliant with prometheus key regex https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels
// would enable someone interested to be able to continuously gather profiles into pyroscope.
// Other labels for pprof should also follow this rule.
const LabelGracefulLifecycle = "graceful_lifecycle"
// LabelPid is a label set on goroutines that have a process attached
const LabelPid = "pid"
// LabelPpid is a label set on goroutines that have a process attached
const LabelPpid = "ppid"
// LabelProcessType is a label set on goroutines that have a process attached
const LabelProcessType = "process_type"
// LabelProcessDescription is a label set on goroutines that have a process attached
const LabelProcessDescription = "process_description"
type TracerOptions struct {
ServiceName, AppVer string
BuiltinThreshold time.Duration
}
var tracerOptions atomic.Pointer[TracerOptions]
func EnableTracer(opts *TracerOptions) {
tracerOptions.Store(opts)
}