henrygd/beszel · warning
no valid GPU data found
Error message
no valid GPU data found
What it means
errNoValidData is the sentinel error of the GPU collectors: a collector (nvidia-smi/nvtop via start, rocm/amd, powermetrics, macmon pipe, intel_gpu_top) ran but its parser never saw a line it recognized as valid GPU data. It signals 'this collector yielded nothing usable' rather than a hard failure, so the manager can fall back to other collectors.
Source
Thrown at agent/gpu.go:85
Name string `json:"Card series"`
Temperature string `json:"Temperature (Sensor edge) (C)"`
MemoryUsed string `json:"VRAM Total Used Memory (B)"`
MemoryTotal string `json:"VRAM Total Memory (B)"`
Usage string `json:"GPU use (%)"`
PowerPackage string `json:"Average Graphics Package Power (W)"`
PowerSocket string `json:"Current Socket Graphics Package Power (W)"`
}
// gpuCollector defines a collector for a specific GPU management utility (nvidia-smi or rocm-smi)
type gpuCollector struct {
name string
cmdArgs []string
parse func([]byte) bool // returns true if valid data was found
buf []byte
bufSize uint16
}
var errNoValidData = fmt.Errorf("no valid GPU data found") // Error for missing data
// collectorSource identifies a selectable GPU collector in GPU_COLLECTOR.
type collectorSource string
const (
collectorSourceNVTop collectorSource = collectorSource(nvtopCmd)
collectorSourceNVML collectorSource = "nvml"
collectorSourceNvidiaSMI collectorSource = collectorSource(nvidiaSmiCmd)
collectorSourceIntelGpuTop collectorSource = collectorSource(intelGpuStatsCmd)
collectorSourceIntelSysfs collectorSource = "intel_sysfs"
collectorSourceAmdSysfs collectorSource = "amd_sysfs"
collectorSourceRocmSMI collectorSource = collectorSource(rocmSmiCmd)
collectorSourceMacmon collectorSource = collectorSource(macmonCmd)
collectorSourcePowermetrics collectorSource = collectorSource(powermetricsCmd)
collectorGroupNvidia string = "nvidia"
collectorGroupIntel string = "intel"
collectorGroupAmd string = "amd"
collectorGroupApple string = "apple"View on GitHub (pinned to b38fb7dafa)
Solutions
- Verify the underlying tool works manually (nvidia-smi, intel_gpu_top, cat tegrastats output)
- Install the matching GPU tool/driver for the hardware present
- Fix permissions (run agent with access to perf counters or sudo for powermetrics)
- Set GPU_COLLECTOR to force the correct collector for your hardware
- Update beszel if a tool version changed its output format
Defensive patterns
Strategy: fallback
Validate before calling
// check the tool works before enabling its collector
if _, err := exec.LookPath("nvidia-smi"); err != nil {
log.Info("nvidia-smi not installed; skipping nvidia collector")
} Try / catch
if err := gm.collect(); err != nil {
if errors.Is(err, errNoValidData) {
log.Debug("no valid GPU data this cycle; trying next collector")
} else {
log.Error("gpu collect failed", "err", err)
}
} Prevention
- Install the GPU tool matching the hardware (nvidia-smi, intel-gpu-tools, rocm-smi)
- Fix permissions (perf counters for intel_gpu_top, sudo for powermetrics)
- Keep drivers/tools at versions whose output the parsers expect
- Use GPU_COLLECTOR to pin the correct collector
When it happens
Trigger: A collector command runs to completion but its output never satisfies the parse function — GPU driver not present, nvidia-smi/intel_gpu_top not installed, permission denied producing empty output, or the parsing format changed between driver/tool versions.
Common situations: Missing intel_gpu_top permissions (needs perf access / root); nvidia-smi present but no NVIDIA GPU on the host; macOS powermetrics requiring sudo; updated amdgpu/nvtop output format no longer matching regexes; Jetson tegrastats absent.
Related errors
- scanner error: %w
- no configured GPU collectors are available
- no GPU found - see https://beszel.dev/guide/gpu
- no sysfs values found
- failed to load %s: %w
AI-assisted analysis of henrygd/beszel@b38fb7dafa (2026-08-31).
Data as JSON: /api/errors/0f658cc35c9fbe23.
Report an issue: GitHub.