mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
lxc: Use virCgroupGetMemoryStat
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
901d2b9c87
commit
e634c7cd0d
@ -220,64 +220,13 @@ static int virLXCCgroupGetMemTotal(virCgroupPtr cgroup,
|
|||||||
static int virLXCCgroupGetMemStat(virCgroupPtr cgroup,
|
static int virLXCCgroupGetMemStat(virCgroupPtr cgroup,
|
||||||
virLXCMeminfoPtr meminfo)
|
virLXCMeminfoPtr meminfo)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
return virCgroupGetMemoryStat(cgroup,
|
||||||
FILE *statfd = NULL;
|
&meminfo->cached,
|
||||||
char *statFile = NULL;
|
&meminfo->inactive_anon,
|
||||||
char *line = NULL;
|
&meminfo->active_anon,
|
||||||
size_t n;
|
&meminfo->inactive_file,
|
||||||
|
&meminfo->active_file,
|
||||||
ret = virCgroupPathOfController(cgroup, VIR_CGROUP_CONTROLLER_MEMORY,
|
&meminfo->unevictable);
|
||||||
"memory.stat", &statFile);
|
|
||||||
if (ret != 0) {
|
|
||||||
virReportSystemError(-ret, "%s",
|
|
||||||
_("cannot get the path of MEMORY cgroup controller"));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
statfd = fopen(statFile, "r");
|
|
||||||
if (statfd == NULL) {
|
|
||||||
ret = -errno;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (getline(&line, &n, statfd) > 0) {
|
|
||||||
|
|
||||||
char *value = strchr(line, ' ');
|
|
||||||
char *nl = value ? strchr(line, '\n') : NULL;
|
|
||||||
unsigned long long stat_value;
|
|
||||||
|
|
||||||
if (!value)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (nl)
|
|
||||||
*nl = '\0';
|
|
||||||
|
|
||||||
*value = '\0';
|
|
||||||
|
|
||||||
if (virStrToLong_ull(value + 1, NULL, 10, &stat_value) < 0) {
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (STREQ(line, "cache"))
|
|
||||||
meminfo->cached = stat_value >> 10;
|
|
||||||
else if (STREQ(line, "inactive_anon"))
|
|
||||||
meminfo->inactive_anon = stat_value >> 10;
|
|
||||||
else if (STREQ(line, "active_anon"))
|
|
||||||
meminfo->active_anon = stat_value >> 10;
|
|
||||||
else if (STREQ(line, "inactive_file"))
|
|
||||||
meminfo->inactive_file = stat_value >> 10;
|
|
||||||
else if (STREQ(line, "active_file"))
|
|
||||||
meminfo->active_file = stat_value >> 10;
|
|
||||||
else if (STREQ(line, "unevictable"))
|
|
||||||
meminfo->unevictable = stat_value >> 10;
|
|
||||||
}
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(line);
|
|
||||||
VIR_FREE(statFile);
|
|
||||||
VIR_FORCE_FCLOSE(statfd);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user