[libvirt] [RFC] [PATCH v3 5/6] make /proc/meminfo isolate with host through fuse

Gao feng gaofeng at cn.fujitsu.com
Mon Oct 8 01:00:12 UTC 2012


于 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 at 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!




More information about the libvir-list mailing list