profiler

package module
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2024 License: Apache-2.0 Imports: 27 Imported by: 507

README

Cloud Profiler

Go Reference

The Go Agent for Cloud Profiler.

For instructions on how to use this agent, checkout profiling Go applications.

Install

go get cloud.google.com/go/profiler

Stability

The stability of this module is indicated by SemVer.

However, a v1 module may have breaking changes in two scenarios:

  • Packages with alpha or beta in the import path
  • The GoDoc has an explicit stability disclaimer (for example, for an experimental feature).

Go Version Support

See the Go Versions Supported section in the root directory's README.

Authorization

See the Authorization section in the root directory's README.

Contributing

Contributions are welcome. Please, see the CONTRIBUTING document for details.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Contributor Code of Conduct for more information.

Documentation

Overview

Package profiler is a client for the Cloud Profiler service.

Usage example:

import "cloud.google.com/go/profiler"
...
if err := profiler.Start(profiler.Config{Service: "my-service"}); err != nil {
    // TODO: Handle error.
}

Calling Start will start a goroutine to collect profiles and upload to the profiler server, at the rhythm specified by the server.

The caller must provide the service string in the config, and may provide other information as well. See Config for details.

Profiler has CPU, heap and goroutine profiling enabled by default. Mutex profiling can be enabled in the config. Note that goroutine and mutex profiles are shown as "threads" and "contention" profiles in the profiler UI.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Start

func Start(cfg Config, options ...option.ClientOption) error

Start starts a goroutine to collect and upload profiles. The caller must provide the service string in the config. See Config for details. Start should only be called once. Any additional calls will be ignored.

Example
package main

import (
	"cloud.google.com/go/profiler"
)

func main() {
	if err := profiler.Start(profiler.Config{Service: "my-service", ServiceVersion: "v1"}); err != nil {
		//TODO: Handle error.
	}
}
Output:

Types

type Config

type Config struct {
	// Service must be provided to start the profiler. It specifies the name of
	// the service under which the profiled data will be recorded and exposed at
	// the Profiler UI for the project. You can specify an arbitrary string, but
	// see Deployment.target at
	// https://github.com/googleapis/googleapis/blob/master/google/devtools/cloudprofiler/v2/profiler.proto
	// for restrictions. If the parameter is not set, the agent will probe
	// GAE_SERVICE environment variable which is present in Google App Engine
	// environment.
	// NOTE: The string should be the same across different replicas of
	// your service so that the globally constant profiling rate is
	// maintained. Do not put things like PID or unique pod ID in the name.
	Service string

	// ServiceVersion is an optional field specifying the version of the
	// service. It can be an arbitrary string. Profiler profiles
	// once per minute for each version of each service in each zone.
	// ServiceVersion defaults to GAE_VERSION environment variable if that is
	// set, or to empty string otherwise.
	ServiceVersion string

	// DebugLogging enables detailed debug logging from profiler. It
	// defaults to false.
	DebugLogging bool

	// DebugLoggingOutput is where the logger will write debug logs to, if enabled.
	// It defaults to os.Stderr.
	DebugLoggingOutput io.Writer

	// MutexProfiling enables mutex profiling. It defaults to false.
	// Note that mutex profiling is not supported by Go versions older
	// than Go 1.8.
	MutexProfiling bool

	// When true, collecting the CPU profiles is disabled.
	NoCPUProfiling bool

	// When true, collecting the allocation profiles is disabled.
	NoAllocProfiling bool

	// AllocForceGC forces garbage collection before the collection of each heap
	// profile collected to produce the allocation profile. This increases the
	// accuracy of allocation profiling. It defaults to false.
	AllocForceGC bool

	// When true, collecting the heap profiles is disabled.
	NoHeapProfiling bool

	// When true, collecting the goroutine profiles is disabled.
	NoGoroutineProfiling bool

	// When true, the agent sends all telemetries via OpenCensus exporter, which
	// can be viewed in Cloud Trace and Cloud Monitoring.
	// Default is false.
	EnableOCTelemetry bool

	// ProjectID is the Cloud Console project ID to use instead of the one set by
	// GOOGLE_CLOUD_PROJECT environment variable or read from the VM metadata
	// server.
	//
	// Set this if you are running the agent in your local environment
	// or anywhere else outside of Google Cloud Platform.
	ProjectID string

	// APIAddr is the HTTP endpoint to use to connect to the profiler
	// agent API. Defaults to the production environment, overridable
	// for testing.
	APIAddr string

	// Instance is the name of Compute Engine instance the profiler agent runs
	// on. This is normally determined from the Compute Engine metadata server
	// and doesn't need to be initialized. It needs to be set in rare cases where
	// the metadata server is present but is flaky or otherwise misbehave.
	Instance string

	// Zone is the zone of Compute Engine instance the profiler agent runs
	// on. This is normally determined from the Compute Engine metadata server
	// and doesn't need to be initialized. It needs to be set in rare cases where
	// the metadata server is present but is flaky or otherwise misbehave.
	Zone string
	// contains filtered or unexported fields
}

Config is the profiler configuration.

Directories

Path Synopsis
Busybench is a tool that runs a benchmark with the profiler enabled.
Busybench is a tool that runs a benchmark with the profiler enabled.
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL