func getMemoryStats(domain *libvirtgo.VirDomain) (types.MemoryStats, error) { stats := types.MemoryStats{} memStats, err := domain.MemoryStats(VIR_DOMAIN_MEMORY_STAT_NR, 0) if err != nil { return stats, err } var unused, available uint64 for _, stat := range memStats { if stat.Tag == VIR_DOMAIN_MEMORY_STAT_UNUSED { unused = stat.Val } else if stat.Tag == VIR_DOMAIN_MEMORY_STAT_AVAILABLE { available = stat.Val } } if available > unused { stats.Usage = (available - unused) * 1024 } return stats, nil }