diff options
author | Ivana Hutarova Varekova <varekova@redhat.com> | 2010-02-08 13:32:41 +0100 |
---|---|---|
committer | Balbir Singh <balbir@linux.vnet.ibm.com> | 2010-02-10 16:43:37 +0530 |
commit | 6a7cfad855f7dc0c0a030dc0cc812c5fa9fdeb53 (patch) | |
tree | 895fbe94050424400bebfd5acf15f7844da7fc57 | |
parent | a2167e206bf6062e1a2388d54ca14df0389b872f (diff) | |
download | libcg-6a7cfad855f7dc0c0a030dc0cc812c5fa9fdeb53.tar.gz libcg-6a7cfad855f7dc0c0a030dc0cc812c5fa9fdeb53.tar.xz libcg-6a7cfad855f7dc0c0a030dc0cc812c5fa9fdeb53.zip |
fix cgroup_get_value_string problem with *.stat output
fix cgroup_get_value_string problem with *.stat output
the problem was in the low limit for value for the output of stat variables - now there are used the functions cgroup_read_stats_{begin/next/end} for this purpose
bogus output:
./src/tools/cgget -r memory.stat /
/:
memory.stat=cache 1024561152
rss 291270656
pgpgin 1209259
pgpgout 888011
inactive_anon 8192
active_anon 2976481
fixed output:
$ ./src/tools/cgget -r memory.stat /
/:
memory.stat=cache 1024610304
rss 291270656
pgpgin 1209271
pgpgout 888011
inactive_anon 8192
active_anon 297648128
inactive_file 619126784
active_file 399073280
unevictable 24576
hierarchical_memory_limit 9223372036854775807
hierarchical_memsw_limit 9223372036854775807
total_cache 1024610304
total_rss 291270656
total_pgpgin 1209271
total_pgpgout 888011
total_inactive_anon 8192
total_active_anon 297648128
total_inactive_file 619126784
total_active_file 399073280
total_unevictable 24576
Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
-rw-r--r-- | include/libcgroup.h | 1 | ||||
-rw-r--r-- | src/tools/cgget.c | 23 |
2 files changed, 23 insertions, 1 deletions
diff --git a/include/libcgroup.h b/include/libcgroup.h index ce75d2e..c8f1240 100644 --- a/include/libcgroup.h +++ b/include/libcgroup.h @@ -141,6 +141,7 @@ struct cgroup_file_info { #define CG_NV_MAX 100 #define CG_CONTROLLER_MAX 100 +/* this is NOT ENOUGH for stat variables */ #define CG_VALUE_MAX 100 /* Max number of mounted hierarchies. Event if one controller is mounted per * hier, it can not exceed CG_CONTROLLER_MAX diff --git a/src/tools/cgget.c b/src/tools/cgget.c index 4ca064e..f4feb4f 100644 --- a/src/tools/cgget.c +++ b/src/tools/cgget.c @@ -43,7 +43,28 @@ int display_one_record(char *name, struct cgroup_controller *group_controller, if (mode & MODE_SHOW_NAMES) printf("%s=", name); - printf("%s\n", value); + if (strcmp(strchr(name, '.')+1, "stat")) + printf("%s\n", value); + + else { + void *handle; + struct cgroup_stat stat; + + cgroup_read_stats_begin(group_controller->name, + "/", &handle, &stat); + if (ret != 0) { + fprintf(stderr, "stats read failed\n"); + return ret; + } + printf("%s %s", stat.name, stat.value); + + while ((ret = cgroup_read_stats_next(&handle, &stat)) != + ECGEOF) { + printf("\t%s %s", stat.name, stat.value); + } + + cgroup_read_stats_end(&handle); + } free(value); return ret; |