Order of parameters usually doesn't matter, but that's not the case with memory.limit_in_bytes and memory.memsw.limit_in_bytes. When the latter is first in the list of parameters, the resulting configuration is not loadable with cgconfigparser.
This happens because when a cgroup is created, both memory.limit_in_bytes and memory.memsw.limit_in_bytes parameters are initialized to highest value possible (RESOURCE_MAX). And because memory.memsw.limit_in_bytes must be always higher or equal to memory.limit_in_bytes, it's impossible to change its value first. Make sure that after constructing parameter list of memory subsystem, the mentioned parameters are in correct order. Signed-off-by: Nikola Forró <nfo...@redhat.com> --- src/api.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/api.c b/src/api.c index 0bf0615..f5da553 100644 --- a/src/api.c +++ b/src/api.c @@ -2651,6 +2651,30 @@ int cgroup_get_cgroup(struct cgroup *cgroup) } } closedir(dir); + + if (! strcmp(cgc->name, "memory")) { + /* + * Make sure that memory.limit_in_bytes is placed before + * memory.memsw.limit_in_bytes in the list of values + */ + int memsw_limit = -1; + int mem_limit = -1; + + for (j = 0; j < cgc->index; j++) { + if (! strcmp(cgc->values[j]->name, + "memory.memsw.limit_in_bytes")) + memsw_limit = j; + else if (! strcmp(cgc->values[j]->name, + "memory.limit_in_bytes")) + mem_limit = j; + } + + if (memsw_limit >= 0 && memsw_limit < mem_limit) { + struct control_value *val = cgc->values[memsw_limit]; + cgc->values[memsw_limit] = cgc->values[mem_limit]; + cgc->values[mem_limit] = val; + } + } } /* Check if the group really exists or not */ -- 2.4.11 ------------------------------------------------------------------------------ Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z _______________________________________________ Libcg-devel mailing list Libcg-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libcg-devel