コード例 #1
0
ファイル: stats.go プロジェクト: hyperhq/runv
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
}