diff --git a/pkg/xsysinfo/gpu.go b/pkg/xsysinfo/gpu.go index 17b2ec7834b9..bfcf9a59d191 100644 --- a/pkg/xsysinfo/gpu.go +++ b/pkg/xsysinfo/gpu.go @@ -2,18 +2,29 @@ package xsysinfo import ( "strings" + "sync" "github.com/jaypipes/ghw" "github.com/jaypipes/ghw/pkg/gpu" ) +var ( + gpuCache []*gpu.GraphicsCard + gpuCacheOnce sync.Once + gpuCacheErr error +) + func GPUs() ([]*gpu.GraphicsCard, error) { - gpu, err := ghw.GPU() - if err != nil { - return nil, err - } + gpuCacheOnce.Do(func() { + gpu, err := ghw.GPU() + if err != nil { + gpuCacheErr = err + return + } + gpuCache = gpu.GraphicsCards + }) - return gpu.GraphicsCards, nil + return gpuCache, gpuCacheErr } func TotalAvailableVRAM() (uint64, error) {