in providers/aix/host_aix_ppc64.go [94:127]
func (*host) Memory() (*types.HostMemoryInfo, error) {
var mem types.HostMemoryInfo
pagesize := uint64(os.Getpagesize())
meminfo := C.perfstat_memory_total_t{}
_, err := C.perfstat_memory_total(nil, &meminfo, C.sizeof_perfstat_memory_total_t, 1)
if err != nil {
return nil, fmt.Errorf("perfstat_memory_total failed: %w", err)
}
mem.Total = uint64(meminfo.real_total) * pagesize
mem.Free = uint64(meminfo.real_free) * pagesize
mem.Used = uint64(meminfo.real_inuse) * pagesize
// There is no real equivalent to memory available in AIX.
mem.Available = mem.Free
mem.VirtualTotal = uint64(meminfo.virt_total) * pagesize
mem.VirtualFree = mem.Free + uint64(meminfo.pgsp_free)*pagesize
mem.VirtualUsed = mem.VirtualTotal - mem.VirtualFree
mem.Metrics = map[string]uint64{
"bytes_coalesced": uint64(meminfo.bytes_coalesced),
"bytes_coalesced_mempool": uint64(meminfo.bytes_coalesced_mempool),
"real_pinned": uint64(meminfo.real_pinned) * pagesize,
"pgins": uint64(meminfo.pgins),
"pgouts": uint64(meminfo.pgouts),
"pgsp_free": uint64(meminfo.pgsp_free) * pagesize,
"pgsp_rsvd": uint64(meminfo.pgsp_rsvd) * pagesize,
}
return &mem, nil
}