Documentation ¶
Overview ¶
Package gpu contains code for monitoring of GPUs from system probe. The data flow is as follows:
- The main entry point is the Probe type in probe.go, which sets up the eBPF uprobes for library functions.
- Library uprobes send events each time those functions are called through an event ringbuffer.
- The consumer.go file contains the CUDA event consumer, which reads events from the ringbuffer and sends them to the appropriate stream handler.
- The stream.go file contains the StreamHandler type, which processes events and generates data for a specific stream of GPU commands.
- When the probe receives a data request via the GetAndFlush method, it calls onto the statsGenerator (stags.go) to generate the GPU stats that will be sent.
- The statsGenerator takes the data from all active stream handlers, and distributes them to the appropriate aggregators.
- The aggregators (aggregator.go) process data from multiple streams from a single process, and generate process-level stats.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Probe ¶
type Probe struct{}
Probe is not implemented on non-linux systems
type ProbeDependencies ¶
type ProbeDependencies struct { Telemetry telemetry.Component NvmlLib nvml.Interface ProcessMonitor any // uprobes.ProcessMonitor is only compiled with the linux_bpf build tag, so we need to use type any here WorkloadMeta workloadmeta.Component }
ProbeDependencies holds the dependencies for the probe
Directories ¶
Path | Synopsis |
---|---|
Package config provides the GPU monitoring config.
|
Package config provides the GPU monitoring config. |
Package cuda provides helpers for CUDA binary parsing
|
Package cuda provides helpers for CUDA binary parsing |
Package testutil holds different utilities and stubs for testing
|
Package testutil holds different utilities and stubs for testing |
Click to show internal directories.
Click to hide internal directories.