于 2012年09月26日 02:46, Daniel P. Berrange 写道:
On Tue, Sep 11, 2012 at 10:54:51AM +0800, Gao feng wrote:
> with this patch,container's meminfo will be shown based on
> containers' mem cgroup.
>
> Right now,it's impossible to virtualize all values in meminfo,
> I collect some values such as MemTotal,MemFree,Cached,Active,
> Inactive,Active(anon),Inactive(anon),Active(file),Inactive(anon),
> Active(file),Inactive(file),Unevictable,SwapTotal,SwapFree.
>
> if I miss something, please let me know.
>
> Signed-off-by: Gao feng <gaofeng(a)cn.fujitsu.com>
> +int virLXCCgroupGetMeminfo(unsigned long long *meminfo)
> +{
> + int ret;
> + virCgroupPtr cgroup;
> +
> + ret = virCgroupGetAppRoot(&cgroup);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get cgroup for container"));
> + return ret;
> + }
> +
> + ret = virLXCCgroupGetMemStat(cgroup, meminfo);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get memory cgroup stat info"));
> + goto out;
> + }
> +
> + ret = virLXCCgroupGetMemTotal(cgroup, &meminfo[MEMTOTAL]);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get memory cgroup total"));
> + goto out;
> + }
> +
> + ret = virLXCCgroupGetMemUsage(cgroup, &meminfo[MEMUSAGE]);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get memory cgroup stat
usage"));
> + goto out;
> + }
> +
> + ret = virLXCCgroupGetMemSwapTotal(cgroup, &meminfo[SWAPTOTAL]);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get memory cgroup stat
swaptotal"));
> + goto out;
> + }
> +
> + ret = virLXCCgroupGetMemSwapUsage(cgroup, &meminfo[SWAPUSAGE]);
> + if (ret < 0) {
> + virReportSystemError(-ret, "%s",
> + _("Unable to get memory cgroup stat
swapusage"));
> + goto out;
> + }
When I tested these patches on a 3.4 kernel, these last two calls
always fail because the corresponding cgroup file does not exist.
I had to remove them to make this work at all.
Yes,it shouldn't return error when the swap cgroup file doesn't exist.
I will fix this.
thanks!