func()

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
}