package perf import ( "context" "time" "github.com/mostlygeek/llama-swap/internal/logmon" "github.com/shirou/gopsutil/v4/cpu" "github.com/shirou/gopsutil/v4/load" "github.com/shirou/gopsutil/v4/mem" ) func getGpuStats(ctx context.Context, every time.Duration, logger *logmon.Monitor) (chan []GpuStat, error) { return nil, ErrNotImplemented } func readSysStats() (SysStat, error) { cpuPcts, err := cpu.Percent(0, true) if err != nil { return SysStat{}, err } vmStat, err := mem.VirtualMemory() if err != nil { return SysStat{}, err } const toMB = 1024 * 1024 var swapTotalMB, swapUsedMB int if swapStat, err := mem.SwapMemory(); err == nil { swapTotalMB = int(swapStat.Total / toMB) swapUsedMB = int(swapStat.Used / toMB) } var loadAvg1, loadAvg5, loadAvg15 float64 if loadStat, err := load.Avg(); err == nil { loadAvg1 = loadStat.Load1 loadAvg5 = loadStat.Load5 loadAvg15 = loadStat.Load15 } return SysStat{ Timestamp: time.Now(), CpuUtilPerCore: cpuPcts, MemTotalMB: int(vmStat.Total / toMB), MemUsedMB: int(vmStat.Used / toMB), MemFreeMB: int(vmStat.Free / toMB), SwapTotalMB: swapTotalMB, SwapUsedMB: swapUsedMB, LoadAvg1: loadAvg1, LoadAvg5: loadAvg5, LoadAvg15: loadAvg15, }, nil }