//go:build aix // +build aix package mem import ( "context" "github.com/power-devops/perfstat" ) func VirtualMemory() (*VirtualMemoryStat, error) { return VirtualMemoryWithContext(context.Background()) } func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { m, err := perfstat.MemoryTotalStat() if err != nil { return nil, err } pagesize := uint64(4096) ret := VirtualMemoryStat{ Total: uint64(m.RealTotal) * pagesize, Available: uint64(m.RealAvailable) * pagesize, Free: uint64(m.RealFree) * pagesize, Used: uint64(m.RealInUse) * pagesize, UsedPercent: 100 * float64(m.RealInUse) / float64(m.RealTotal), Active: uint64(m.VirtualActive) * pagesize, SwapTotal: uint64(m.PgSpTotal) * pagesize, SwapFree: uint64(m.PgSpFree) * pagesize, } return &ret, nil } func SwapMemory() (*SwapMemoryStat, error) { return SwapMemoryWithContext(context.Background()) } func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { m, err := perfstat.MemoryTotalStat() if err != nil { return nil, err } pagesize := uint64(4096) swapUsed := uint64(m.PgSpTotal-m.PgSpFree-m.PgSpRsvd) * pagesize swapTotal := uint64(m.PgSpTotal) * pagesize ret := SwapMemoryStat{ Total: swapTotal, Free: uint64(m.PgSpFree) * pagesize, Used: swapUsed, UsedPercent: float64(100*swapUsed) / float64(swapTotal), Sin: uint64(m.PgSpIn), Sout: uint64(m.PgSpOut), PgIn: uint64(m.PageIn), PgOut: uint64(m.PageOut), PgFault: uint64(m.PageFaults), } return &ret, nil }