I did the test you asked and it gave me better results, but still not
perfect.
Actually, it is working, when I am enabling only one controller. I can't
properly get values from controller when using two controller in a row.
Moreover, and this is looking really weird to me, I have to :
- cgroup_new_cgroup
- cgroup_add_controller
- cgroup_create_cgroup
- cgroup_free

for each controller. And when I need to read some value, I have to :
- cgroup_new_cgroup
- cgroup_get_cgroup
- cgroup_get_value_*
- cgroup_free

Why do I have to always free my group pointer ?
Am I doing something wrong ?



2014-12-18 17:55 GMT+01:00 Alexandre LAURENT <
pro.laurent.alexan...@gmail.com>:
>
> 1. -> Yes, it is failing. Here the log from the application :
> ---
> Error with cgroup_load_config() function : Cgroup mounting failed
> lalexandre@albert:~/Work/cgroup_test/bug_memory$ sudo ./test
> found cpu in rw,relatime,cpu
> Found cgroup option rw,relatime,cpu, count 0
> found freezer in rw,relatime,freezer
> Found cgroup option rw,relatime,freezer, count 1
> creating all cgroups now, error=0
> found cpu in rw,relatime,cpu
> Found cgroup option rw,relatime,cpu, count 0
> found freezer in rw,relatime,freezer
> Found cgroup option rw,relatime,freezer, count 1
> Changing ownership of /cgroup/freezer/grp_0/
> chown: path is /cgroup/freezer/grp_0/
> chown: seeing file /cgroup/freezer/grp_0/
> chown: seeing file /cgroup/freezer/grp_0/freezer.state
> chown: seeing file /cgroup/freezer/grp_0/cgroup.clone_children
> chown: seeing file /cgroup/freezer/grp_0/cgroup.event_control
> chown: seeing file /cgroup/freezer/grp_0/notify_on_release
> chown: seeing file /cgroup/freezer/grp_0/cgroup.procs
> chown: seeing file /cgroup/freezer/grp_0/tasks
> chown: seeing file /cgroup/freezer/grp_0/
> Warning: fts_read failed
> chmod: path is /cgroup/freezer/grp_0/
> chmod: seeing file /cgroup/freezer/grp_0/
> chmod: seeing file /cgroup/freezer/grp_0/freezer.state
> chmod: seeing file /cgroup/freezer/grp_0/cgroup.clone_children
> chmod: seeing file /cgroup/freezer/grp_0/cgroup.event_control
> chmod: seeing file /cgroup/freezer/grp_0/notify_on_release
> chmod: seeing file /cgroup/freezer/grp_0/cgroup.procs
> chmod: seeing file /cgroup/freezer/grp_0/
> Changing ownership of /cgroup/freezer/grp_1/
> chown: path is /cgroup/freezer/grp_1/
> chown: seeing file /cgroup/freezer/grp_1/
> chown: seeing file /cgroup/freezer/grp_1/freezer.state
> chown: seeing file /cgroup/freezer/grp_1/cgroup.clone_children
> chown: seeing file /cgroup/freezer/grp_1/cgroup.event_control
> chown: seeing file /cgroup/freezer/grp_1/notify_on_release
> chown: seeing file /cgroup/freezer/grp_1/cgroup.procs
> chown: seeing file /cgroup/freezer/grp_1/tasks
> chown: seeing file /cgroup/freezer/grp_1/
> Warning: fts_read failed
> chmod: path is /cgroup/freezer/grp_1/
> chmod: seeing file /cgroup/freezer/grp_1/
> chmod: seeing file /cgroup/freezer/grp_1/freezer.state
> chmod: seeing file /cgroup/freezer/grp_1/cgroup.clone_children
> chmod: seeing file /cgroup/freezer/grp_1/cgroup.event_control
> chmod: seeing file /cgroup/freezer/grp_1/notify_on_release
> chmod: seeing file /cgroup/freezer/grp_1/cgroup.procs
> chmod: seeing file /cgroup/freezer/grp_1/
> *Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
> (error 50011)*
> Error with cgroup_get_value_string(group0, freezer.state) function :
> Cgroup, requested group parameter does not exist
> FREEZER value group0 : (null)
> FREEZER value group0 : THAWED
> Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
> (error 50011)
> Error with cgroup_get_value_string(group0, freezer.state) function :
> Cgroup, requested group parameter does not exist
> FREEZER value group0 : (null)
> FREEZER value group0 : THAWED
> Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
> (error 50011)
> Error with cgroup_get_value_string(group0, freezer.state) function :
> Cgroup, requested group parameter does not exist
> FREEZER value group0 : (null)
> FREEZER value group0 : THAWED
> Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
> (error 50011)
> Error with cgroup_get_value_string(group0, freezer.state) function :
> Cgroup, requested group parameter does not exist
> FREEZER value group0 : (null)
> FREEZER value group0 : THAWED
> Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
> (error 50011)
> Error with cgroup_get_value_string(group0, freezer.state) function :
> Cgroup, requested group parameter does not exist
> FREEZER value group0 : (null)
> FREEZER value group0 : THAWED
> path is /cgroup/freezer/grp_1/
> parent's name is /cgroup/freezer/grp_1//..
> group name is grp_1
> parent's group name is .
> Removing group freezer:grp_1
> path is /cgroup/freezer/grp_0/
> parent's name is /cgroup/freezer/grp_0//..
> group name is grp_0
> parent's group name is .
> Removing group freezer:grp_0
> cgroup_config_unload_config: parsing ./cgconfig.conf
> unmounting cpu
> path is /
> seeing file /cgroup/cpu/
> seeing file /cgroup/cpu/grp_1
> won't unmount cpu: hieararchy is not empty
> unmounting freezer
> path is /
> seeing file /cgroup/freezer/
> seeing file /cgroup/freezer/release_agent
> seeing file /cgroup/freezer/cgroup.clone_children
> seeing file /cgroup/freezer/cgroup.event_control
> seeing file /cgroup/freezer/notify_on_release
> seeing file /cgroup/freezer/cgroup.procs
> seeing file /cgroup/freezer/tasks
> seeing file /cgroup/freezer/
> unmounting freezer at /cgroup/freezer
> Error with cgroup_config_unload_config() function : Device or resource busy
> ---
>
> 2 ->
> Yes, cgroup_config_load_config() does succeed. Here my conf file :
> ---
> mount {
> #    cpuset = /cgroup/cpuset;
>     cpu = /cgroup/cpu;
>     freezer = /cgroup/freezer;
> #    net_cls = /cgroup/net_cls;
> #    blkio = /cgroup/blkio;
> #    memory = /cgroup/memory;
> }
> ---
>
> Here the hierarchy mounter/available :
> ---
> /cgroup
> ├── blkio
> ├── cpu
> │   ├── cgroup.clone_children
> │   ├── cgroup.event_control
> │   ├── cgroup.procs
> │   ├── cpu.shares
> │   ├── grp_1
> │   │   ├── cgroup.clone_children
> │   │   ├── cgroup.event_control
> │   │   ├── cgroup.procs
> │   │   ├── cpu.shares
> │   │   ├── notify_on_release
> │   │   └── tasks
> │   ├── notify_on_release
> │   ├── release_agent
> │   └── tasks
> ├── cpuset
> ├── freezer
> │   ├── cgroup.clone_children
> │   ├── cgroup.event_control
> │   ├── cgroup.procs
> │   ├── grp_0
> │   │   ├── cgroup.clone_children
> │   │   ├── cgroup.event_control
> │   │   ├── cgroup.procs
> │   │   ├── freezer.state
> │   │   ├── notify_on_release
> │   │   └── tasks
> │   ├── grp_1
> │   │   ├── cgroup.clone_children
> │   │   ├── cgroup.event_control
> │   │   ├── cgroup.procs
> │   │   ├── freezer.state
> │   │   ├── notify_on_release
> │   │   └── tasks
> │   ├── notify_on_release
> │   ├── release_agent
> │   └── tasks
> ├── memory
> └── net_cls
> ---
> (I suspect a bug with grp_0 and cpu controller in my code, but I could not
> spot it yet.)
>
> Effectively, in my test code, I mount CPU/FREEZER, but only use FREEZER
> for this test.
> I will do your last test tomorrow and give you the result.
>
> Best regards,
>
>
>
> 2014-12-17 18:33 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>:
>>
>> OK.. This looks harder than I thought, it needs some debugging. I
>> looked at your code and logs and have some questions
>>
>> 1. I presume this line
>>       err = cgroup_get_cgroup(group0); fails for you
>> 2. Your cgroup_config_load_config() has succeeded, which I thought was
>> the original problem. If this step did succeed, what wa the mount
>> hierarchy it created?
>>   a. I can see a reference to CPU/FREEZER being mounted together and
>> groups rw/realtime/.. within that
>> 3. Your sample seems to add more controllers than those that are mounted
>>
>> For step1, I would recommend freeing group0 after creation and do a
>> cgroup_new_cgroup("grp_0"), don't add any controllers, then try to get
>> the cgroup with the API
>>
>> Balbir Singh.
>>
>> On Wed, Dec 17, 2014 at 4:16 PM, Alexandre LAURENT
>> <pro.laurent.alexan...@gmail.com> wrote:
>> > No problem.
>> >
>> > Here the complete results from the tests available in libcgroups :
>> > ---
>> > grep: @abs_top_srcdir@/config.h: Aucun fichier ou dossier de ce type
>> >
>> > Running first set of testcases
>> > ==============================
>> > TEST 1:PASS : cgroup_init() Ret Value = 50001
>> > Warning: libcgroup is not initialized
>> > TEST 2:PASS : cgroup_attach_task() Ret Value = 50014 Parameter
>> nullcgroup
>> > TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST 4:PASS : cgroup_create_cgroup() Ret Value = 50014
>> > TEST 5:PASS : cgroup_delete_cgroup() Ret Value = 50014
>> > TEST 6:PASS : cgroup_create_cgroup() Ret Value = 50014
>> > TEST 7:PASS : cgroup_delete_cgroup() Ret Value = 50014
>> > TEST 8:PASS : cgroup_add_controller() Ret Value = 0
>> > TEST 9:PASS : cgroup_add_controller() Ret Value = 0
>> > TEST10:PASS : cgroup_add_controller() Ret Value = 0
>> >
>> > Running second set of testcases
>> > ==============================
>> > sanity check pass. cgroup
>> > TEST 1:PASS : cgroup_attach_task() Ret Value = 50014 Parameter
>> nullcgroup
>> > found cpu in rw,relatime,memory,cpu
>> > Found cgroup option rw,relatime,memory,cpu, count 0
>> > found memory in rw,relatime,memory,cpu
>> > Found cgroup option rw,relatime,memory,cpu, count 1
>> > TEST 2:PASS : cgroup_init() Ret Value = 0
>> > TEST 3:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > Warning: cannot write tid -1 to /dev/cgroup_controllers-1//tasks:Invalid
>> > argument
>> > TEST 4:PASS : cgroup_attach_task_pid() Ret Value = 50016
>> > TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0
>> > setting /dev/cgroup_controllers-1/group1/cpu.shares to "260000",
>> pathlen 43
>> > TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > TEST 7:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > TEST 8:PASS : cgroup_modify_cgroup() Ret Value = 0 Parameter same cgroup
>> > TEST 9:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST10:PASS : cgroup_modify_cgroup() Ret Value = 0
>> > TEST11:PASS : cgroup_modify_cgroup() Ret Value = 50007
>> > TEST12:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0
>> > TEST14:PASS : cgroup_get_cgroup() Ret Value = 50007 Parameter nullcgroup
>> > TEST15:PASS : cgroup_get_cgroup() Ret Value = 50002 Parameter not
>> created
>> > group
>> > TEST16:PASS : cgroup_get_cgroup() Ret Value = 0
>> > TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0
>> > setting /dev/cgroup_controllers-1/group_a/cpu.shares to "260000",
>> pathlen 44
>> > TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > TEST17:FAIL : cgroup_get_cgroup() Ret Value = 50017
>> > path is /dev/cgroup_controllers-1/group_a/
>> > parent's name is /dev/cgroup_controllers-1/group_a//..
>> > group name is group_a
>> > parent's group name is .
>> > Removing group cpu:group_a
>> > TEST 0:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > path is /dev/cgroup_controllers-1/group1/
>> > parent's name is /dev/cgroup_controllers-1/group1//..
>> > group name is group1
>> > parent's group name is .
>> > Removing group cpu:group1
>> > TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > TEST17:PASS : cgroup_create_cgroup() Ret Value = 50007
>> > TEST18:PASS : cgroup_delete_cgroup() Ret Value = 50007
>> > TEST19:PASS : cgroup_compare_cgroup() Ret Value = 50011 Parameter
>> nullcgroup
>> > TEST20:PASS : cgroup_compare_cgroup() Ret Value = 0
>> > TEST21:PASS : cgroup_compare_cgroup() Ret Value = 50017
>> > Cleanup done
>> >
>> > Running third set of testcases
>> > ==============================
>> > sanity check pass. cgroup
>> > found cpu in rw,relatime,cpu
>> > Found cgroup option rw,relatime,cpu, count 0
>> > found memory in rw,relatime,memory
>> > Found cgroup option rw,relatime,memory, count 1
>> > TEST 1:PASS : cgroup_init() Ret Value = 0
>> > TEST 2:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0
>> > setting /dev/cgroup_controllers-1/ctl1_group1/cpu.shares to "260000",
>> > pathlen 48
>> > TEST 4:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0
>> > setting /dev/cgroup_controllers-2/ctl2_group1/memory.limit_in_bytes to
>> > "7000064", pathlen 59
>> > TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > setting /dev/cgroup_controllers-2/ctl2_group1/memory.limit_in_bytes to
>> > "7000064", pathlen 59
>> > TEST 7:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > TEST 8:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > TEST 9:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > TEST10:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST11:PASS : cgroup_attach_task() Ret Value = 50002 Parameter not
>> created
>> > group
>> > TEST12:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0
>> > TEST14:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST15:PASS : cgroup_modify_cgroup() Ret Value = 0
>> > path is /dev/cgroup_controllers-1/ctl1_group1/
>> > parent's name is /dev/cgroup_controllers-1/ctl1_group1//..
>> > group name is ctl1_group1
>> > parent's group name is .
>> > Removing group cpu:ctl1_group1
>> > TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > path is /dev/cgroup_controllers-2/ctl2_group1/
>> > parent's name is /dev/cgroup_controllers-2/ctl2_group1//..
>> > group name is ctl2_group1
>> > parent's group name is .
>> > Removing group memory:ctl2_group1
>> > TEST17:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > TEST18:PASS : cgroup_new_cgroup() Ret Value = 0
>> > setting /dev/cgroup_controllers-1/commongroup/cpu.shares to "260000",
>> > pathlen 48
>> > TEST19:PASS : cgroup_create_cgroup() Ret Value = 0 group found under
>> both
>> > controllers
>> > TEST20:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s
>> > TEST21:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST22:PASS : cgroup_modify_cgroup() Ret Value = 0 group modified under
>> both
>> > controllers
>> > path is /dev/cgroup_controllers-1/commongroup/
>> > parent's name is /dev/cgroup_controllers-1/commongroup//..
>> > group name is commongroup
>> > parent's group name is .
>> > Removing group cpu:commongroup
>> > path is /dev/cgroup_controllers-2/commongroup/
>> > parent's name is /dev/cgroup_controllers-2/commongroup//..
>> > group name is commongroup
>> > parent's group name is .
>> > Removing group memory:commongroup
>> > TEST23:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0
>> > TEST24:PASS : cgroup_cgroup_add_controller() Ret Value = 0
>> > setting /dev/cgroup_controllers-1/group_a/cpu.shares to "260000",
>> pathlen 44
>> > TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in
>> filesystem
>> > TEST25:FAIL : cgroup_get_cgroup() Ret Value = 50018
>> > path is /dev/cgroup_controllers-1/group_a/
>> > parent's name is /dev/cgroup_controllers-1/group_a//..
>> > group name is group_a
>> > parent's group name is .
>> > Removing group cpu:group_a
>> > path is /dev/cgroup_controllers-2/group_a/
>> > parent's name is /dev/cgroup_controllers-2/group_a//..
>> > group name is group_a
>> > parent's group name is .
>> > Removing group memory:group_a
>> > TEST 0:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from
>> > filesystem
>> > Cleanup done
>> > ---
>> >
>> >
>> > Also, I have done this test program (also attached) :
>> > ---
>> > #include <iostream>
>> > #include <unistd.h>
>> >
>> > #include <libcgroup.h>
>> >
>> > #define USE_CPU 0
>> > #define USE_BLKIO 0
>> > #define USE_MEMORY 0
>> > #define CGROUP_CONF_FILE "./cgconfig.conf"
>> >
>> > int main()
>> > {
>> >    int err = 0;
>> >    cgroup* group0 = NULL;
>> >    cgroup_controller* grp0_cpu_ctrl = NULL;
>> >    cgroup_controller* grp0_memory_ctrl = NULL;
>> >    cgroup_controller* grp0_blkio_ctrl = NULL;
>> >    cgroup_controller* grp0_freezer_ctrl = NULL;
>> >    cgroup* group1 = NULL;
>> >    cgroup_controller* grp1_cpu_ctrl = NULL;
>> >    cgroup_controller* grp1_memory_ctrl = NULL;
>> >    cgroup_controller* grp1_blkio_ctrl = NULL;
>> >    cgroup_controller* grp1_freezer_ctrl = NULL;
>> >
>> >    unsigned int i = 0;
>> >    char* freezerValue = NULL;
>> >    int64_t cpuValue = 0;
>> >    uint64_t memoryValue = 0;
>> >
>> > #if USE_CPU
>> >    fprintf(stdout, "Use cpu controller\n");
>> > #endif
>> > #if USE_BLKIO
>> >    fprintf(stdout, "Use blkio controller\n");
>> > #endif
>> > #if USE_MEMORY
>> >    fprintf(stdout, "Use memory controller\n");
>> > #endif
>> >
>> >    err = cgroup_config_load_config (CGROUP_CONF_FILE);
>> >    if(err != 0)
>> >    {
>> >       fprintf(stderr,"Error with cgroup_load_config() function :
>> > %s\n",cgroup_strerror(err));
>> >       exit(EXIT_FAILURE);
>> >    }
>> >
>> >    err = cgroup_init();
>> >    if(err != 0)
>> >    {
>> >       fprintf(stderr,"Error with cgroup_init() function :
>> > %s\n",cgroup_strerror(err));
>> >       goto unload;
>> >    }
>> >
>> >    // Create groups
>> >    group0 = cgroup_new_cgroup ("grp_0");
>> >    if ( group0 == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_new_cgroup('grp_0') function :
>> > %s\n",cgroup_strerror(err));
>> >       goto clean_groups;
>> >    }
>> >
>> >    // Place controler
>> >    // Group 0
>> > #if USE_CPU
>> >    grp0_cpu_ctrl = cgroup_add_controller (group0,"cpu" );
>> >    if (grp0_cpu_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group0,'cpu')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> > #if USE_BLKIO
>> >    grp0_blkio_ctrl = cgroup_add_controller (group0, "blkio");
>> >    if (grp0_blkio_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group0,'blkio')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> >    grp0_freezer_ctrl = cgroup_add_controller (group0, "freezer");
>> >    if (grp0_freezer_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group0,'freezer')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> >
>> > #if USE_MEMORY
>> >    grp0_memory_ctrl = cgroup_add_controller (group0, "memory");
>> >    if (grp0_memory_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group0,'memory')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> >       // Physically add cgroups
>> >    err = cgroup_create_cgroup (group0, 0);
>> >    if(err != 0)
>> >    {
>> >       fprintf(stderr,"Error with cgroup_create_cgroup(group0) function :
>> > %s\n",cgroup_strerror(err));
>> >       goto delete_groups;
>> >    }
>> >
>> >
>> >
>> >    group1 = cgroup_new_cgroup("grp_1");
>> >    if ( group1 == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_new_cgroup('grp_0') function :
>> > %s\n",cgroup_strerror(err));
>> >       goto clean_groups;
>> >    }
>> >
>> >    // Group 1
>> > #if USE_CPU
>> >    grp1_cpu_ctrl = cgroup_add_controller (group1,"cpu" );
>> >    if (grp1_cpu_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group1,'cpu')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> > #if USE_BLKIO
>> >    grp1_blkio_ctrl = cgroup_add_controller (group1, "blkio");
>> >    if (grp1_blkio_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group1,'blkio')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> >    grp1_freezer_ctrl = cgroup_add_controller (group1, "freezer");
>> >    if (grp1_freezer_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group1,'freezer')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> >
>> > #if USE_MEMORY
>> >    grp1_memory_ctrl = cgroup_add_controller (group1, "memory");
>> >    if (grp1_memory_ctrl == NULL )
>> >    {
>> >       fprintf(stderr,"Error with cgroup_add_controller(group1,'memory')
>> > function : %s\n",cgroup_strerror(err));
>> >       goto clean_ctrl;
>> >    }
>> > #endif
>> >
>> >    err = cgroup_create_cgroup (group1, 0);
>> >    if(err != 0)
>> >    {
>> >       fprintf(stderr,"Error with cgroup_create_cgroup(group1) function :
>> > %s\n",cgroup_strerror(err));
>> >       goto delete_groups;
>> >    }
>> >
>> >    // We can start playing with cgroups
>> >    for (i = 0 ; i < 10 ; i++)
>> >    {
>> >       err = cgroup_get_cgroup(group0);
>> >       if ( err != 0 )
>> >       {
>> >          fprintf(stderr,"Error with cgroup_get_cgroup(group0) function
>> : %s
>> > (error %d)\n",cgroup_strerror(err),err);
>> >       }
>> >
>> >       err = cgroup_get_value_string(grp0_freezer_ctrl, "freezer.state",
>> > &freezerValue);
>> >       if ( err != 0 )
>> >       {
>> >          fprintf(stderr,"Error with cgroup_get_value_string(group0,
>> > freezer.state) function : %s\n",cgroup_strerror(err));
>> >       }
>> >       fprintf(stdout,"FREEZER value group0 : %s\n",freezerValue);
>> >       free(freezerValue);
>> >
>> >
>> > #if USE_CPU
>> >       err = cgroup_get_value_int64(grp0_cpu_ctrl, "cpu.shares",
>> &cpuValue);
>> >       if ( err != 0 )
>> >       {
>> >          fprintf(stderr,"Error with cgroup_get_value_uint64(group0,
>> > cpu.shares) function : %s\n",cgroup_strerror(err));
>> >       }
>> >       fprintf(stdout,"CPU value group0 : %ld\n",memoryValue);
>> > #endif
>> >
>> > #if USE_MEMORY
>> >       err = cgroup_get_value_uint64(grp0_memory_ctrl, "memory.failcnt",
>> > &memoryValue);
>> >       if ( err != 0 )
>> >       {
>> >          fprintf(stderr,"Error with cgroup_get_value_uint64(group0,
>> > memory.failcnt) function : %s\n",cgroup_strerror(err));
>> >       }
>> >       fprintf(stdout,"Memory value group0 : %ld\n",memoryValue);
>> >
>> >       err = cgroup_get_value_uint64(grp1_memory_ctrl, "memory.failcnt",
>> > &memoryValue);
>> >       if ( err != 0 )
>> >       {
>> >          fprintf(stderr,"Error with cgroup_get_value_uint64(group1,
>> > memory.failcnt) function : %s\n",cgroup_strerror(err));
>> >       }
>> >       fprintf(stdout,"Memory value group1 : %ld\n",memoryValue);
>> > #endif
>> >
>> >       usleep(2000000);
>> >    }
>> >
>> > delete_groups:
>> >    if (group1)
>> >    {
>> >       err = cgroup_delete_cgroup (group1, 0);
>> >    }
>> >    if (group0)
>> >    {
>> >       err = cgroup_delete_cgroup (group0, 0);
>> >    }
>> > clean_ctrl:
>> > clean_groups:
>> >    if (group1)
>> >    {
>> >       cgroup_free(&group1);
>> >    }
>> >    if (group0)
>> >    {
>> >       cgroup_free(&group0);
>> >    }
>> >
>> > unload:
>> >    err = cgroup_config_unload_config(CGROUP_CONF_FILE,
>> > CGFLAG_DELETE_IGNORE_MIGRATION);
>> >    if(err != 0)
>> >    {
>> >       fprintf(stderr,"Error with cgroup_config_unload_config() function
>> :
>> > %s\n",cgroup_strerror(err));
>> >       exit(EXIT_FAILURE);
>> >    }
>> >
>> >    return 0;
>> > }
>> > ----
>> >
>> > It outputs this :
>> > ----
>> > found cpu in rw,relatime,cpu
>> > Found cgroup option rw,relatime,cpu, count 0
>> > found freezer in rw,relatime,freezer
>> > Found cgroup option rw,relatime,freezer, count 1
>> > creating all cgroups now, error=0
>> > found cpu in rw,relatime,cpu
>> > Found cgroup option rw,relatime,cpu, count 0
>> > found freezer in rw,relatime,freezer
>> > Found cgroup option rw,relatime,freezer, count 1
>> > Changing ownership of /cgroup/freezer/grp_0/
>> > chown: path is /cgroup/freezer/grp_0/
>> > chown: seeing file /cgroup/freezer/grp_0/
>> > chown: seeing file /cgroup/freezer/grp_0/freezer.state
>> > chown: seeing file /cgroup/freezer/grp_0/cgroup.clone_children
>> > chown: seeing file /cgroup/freezer/grp_0/cgroup.event_control
>> > chown: seeing file /cgroup/freezer/grp_0/notify_on_release
>> > chown: seeing file /cgroup/freezer/grp_0/cgroup.procs
>> > chown: seeing file /cgroup/freezer/grp_0/tasks
>> > chown: seeing file /cgroup/freezer/grp_0/
>> > Warning: fts_read failed
>> > chmod: path is /cgroup/freezer/grp_0/
>> > chmod: seeing file /cgroup/freezer/grp_0/
>> > chmod: seeing file /cgroup/freezer/grp_0/freezer.state
>> > chmod: seeing file /cgroup/freezer/grp_0/cgroup.clone_children
>> > chmod: seeing file /cgroup/freezer/grp_0/cgroup.event_control
>> > chmod: seeing file /cgroup/freezer/grp_0/notify_on_release
>> > chmod: seeing file /cgroup/freezer/grp_0/cgroup.procs
>> > chmod: seeing file /cgroup/freezer/grp_0/
>> > Changing ownership of /cgroup/freezer/grp_1/
>> > chown: path is /cgroup/freezer/grp_1/
>> > chown: seeing file /cgroup/freezer/grp_1/
>> > chown: seeing file /cgroup/freezer/grp_1/freezer.state
>> > chown: seeing file /cgroup/freezer/grp_1/cgroup.clone_children
>> > chown: seeing file /cgroup/freezer/grp_1/cgroup.event_control
>> > chown: seeing file /cgroup/freezer/grp_1/notify_on_release
>> > chown: seeing file /cgroup/freezer/grp_1/cgroup.procs
>> > chown: seeing file /cgroup/freezer/grp_1/tasks
>> > chown: seeing file /cgroup/freezer/grp_1/
>> > Warning: fts_read failed
>> > chmod: path is /cgroup/freezer/grp_1/
>> > chmod: seeing file /cgroup/freezer/grp_1/
>> > chmod: seeing file /cgroup/freezer/grp_1/freezer.state
>> > chmod: seeing file /cgroup/freezer/grp_1/cgroup.clone_children
>> > chmod: seeing file /cgroup/freezer/grp_1/cgroup.event_control
>> > chmod: seeing file /cgroup/freezer/grp_1/notify_on_release
>> > chmod: seeing file /cgroup/freezer/grp_1/cgroup.procs
>> > chmod: seeing file /cgroup/freezer/grp_1/
>> > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
>> > (error 50011)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
>> > (error 50011)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
>> > (error 50011)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
>> > (error 50011)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_cgroup(group0) function : Cgroup invalid operation
>> > (error 50011)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > Error with cgroup_get_value_string(group0, freezer.state) function :
>> Cgroup,
>> > requested group parameter does not exist
>> > FREEZER value group0 : (null)
>> > path is /cgroup/freezer/grp_1/
>> > parent's name is /cgroup/freezer/grp_1//..
>> > group name is grp_1
>> > parent's group name is .
>> > Removing group freezer:grp_1
>> > path is /cgroup/cpu/grp_0/
>> > parent's name is /cgroup/cpu/grp_0//..
>> > group name is grp_0
>> > parent's group name is .
>> > Removing group cpu:grp_0
>> > path is /cgroup/freezer/grp_0/
>> > parent's name is /cgroup/freezer/grp_0//..
>> > group name is grp_0
>> > parent's group name is .
>> > Removing group freezer:grp_0
>> > cgroup_config_unload_config: parsing ./cgconfig.conf
>> > unmounting cpu
>> > path is /
>> > seeing file /cgroup/cpu/
>> > seeing file /cgroup/cpu/grp_1
>> > won't unmount cpu: hieararchy is not empty
>> > unmounting freezer
>> > path is /
>> > seeing file /cgroup/freezer/
>> > seeing file /cgroup/freezer/release_agent
>> > seeing file /cgroup/freezer/cgroup.clone_children
>> > seeing file /cgroup/freezer/cgroup.event_control
>> > seeing file /cgroup/freezer/notify_on_release
>> > seeing file /cgroup/freezer/cgroup.procs
>> > seeing file /cgroup/freezer/tasks
>> > seeing file /cgroup/freezer/
>> > unmounting freezer at /cgroup/freezer
>> > Error with cgroup_config_unload_config() function : Device or resource
>> busy
>> > ----
>> >
>> > And finally, the strace of this program.
>> > Strangely, running the program in strace brings a different result.
>> >
>> > ----
>> >
>> > execve("./test", ["./test"], [/* 17 vars */]) = 0
>> > brk(0)                                  = 0x237b000
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752b000
>> > access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/etc/ld.so.cache", O_RDONLY)      = 3
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=134190, ...}) = 0
>> > mmap(NULL, 134190, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdd5750a000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY) = 3
>> > read(3,
>> > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220!\0\0\0\0\0\0"...,
>> 832) =
>> > 832
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=31744, ...}) = 0
>> > mmap(NULL, 2128856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd57106000
>> > mprotect(0x7fdd5710d000, 2093056, PROT_NONE) = 0
>> > mmap(0x7fdd5730c000, 8192, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fdd5730c000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY) = 3
>> > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@
>> \\\0\0\0\0\0\0"...,
>> > 832) = 832
>> > fstat(3, {st_mode=S_IFREG|0755, st_size=131107, ...}) = 0
>> > mmap(NULL, 2208672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd56eea000
>> > mprotect(0x7fdd56f01000, 2093056, PROT_NONE) = 0
>> > mmap(0x7fdd57100000, 8192, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fdd57100000
>> > mmap(0x7fdd57102000, 13216, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd57102000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY) = 3
>> > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@
>> \6\6\0\0\0\0\0"...,
>> > 832) = 832
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=991600, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57509000
>> > mmap(NULL, 3171520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd56be3000
>> > mprotect(0x7fdd56ccb000, 2097152, PROT_NONE) = 0
>> > mmap(0x7fdd56ecb000, 40960, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7fdd56ecb000
>> > mmap(0x7fdd56ed5000, 83136, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd56ed5000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY) = 3
>> > read(3,
>> > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360>\0\0\0\0\0\0"...,
>> 832) =
>> > 832
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=530736, ...}) = 0
>> > mmap(NULL, 2625768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd56961000
>> > mprotect(0x7fdd569e2000, 2093056, PROT_NONE) = 0
>> > mmap(0x7fdd56be1000, 8192, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x80000) = 0x7fdd56be1000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY) = 3
>> > read(3,
>> "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p.\0\0\0\0\0\0"...,
>> > 832) = 832
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=89056, ...}) = 0
>> > mmap(NULL, 2184824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd5674b000
>> > mprotect(0x7fdd56760000, 2097152, PROT_NONE) = 0
>> > mmap(0x7fdd56960000, 4096, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fdd56960000
>> > close(3)                                = 0
>> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
>> > directory)
>> > open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
>> > read(3,
>> > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\357\1\0\0\0\0\0"...,
>> > 832) = 832
>> > fstat(3, {st_mode=S_IFREG|0755, st_size=1603600, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57508000
>> > mmap(NULL, 3717176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) =
>> > 0x7fdd563bf000
>> > mprotect(0x7fdd56541000, 2097152, PROT_NONE) = 0
>> > mmap(0x7fdd56741000, 20480, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x182000) = 0x7fdd56741000
>> > mmap(0x7fdd56746000, 18488, PROT_READ|PROT_WRITE,
>> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdd56746000
>> > close(3)                                = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57507000
>> > mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57505000
>> > arch_prctl(ARCH_SET_FS, 0x7fdd57505b40) = 0
>> > mprotect(0x7fdd56741000, 16384, PROT_READ) = 0
>> > mprotect(0x7fdd56be1000, 4096, PROT_READ) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57504000
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57503000
>> > mprotect(0x7fdd56ecb000, 32768, PROT_READ) = 0
>> > mprotect(0x7fdd57100000, 4096, PROT_READ) = 0
>> > mprotect(0x7fdd5730c000, 4096, PROT_READ) = 0
>> > mprotect(0x7fdd5752d000, 4096, PROT_READ) = 0
>> > munmap(0x7fdd5750a000, 134190)          = 0
>> > set_tid_address(0x7fdd57505e10)         = 8389
>> > set_robust_list(0x7fdd57505e20, 0x18)   = 0
>> > futex(0x7fff3b48224c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1,
>> > NULL, 7fdd57505b40) = -1 EAGAIN (Resource temporarily unavailable)
>> > rt_sigaction(SIGRTMIN, {0x7fdd56eefad0, [], SA_RESTORER|SA_SIGINFO,
>> > 0x7fdd56ef90a0}, NULL, 8) = 0
>> > rt_sigaction(SIGRT_1, {0x7fdd56eefb60, [],
>> > SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fdd56ef90a0}, NULL, 8) = 0
>> > rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
>> > getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) =
>> 0
>> > futex(0x7fdd56ee79e4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
>> > futex(0x7fdd56ee79f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
>> > brk(0)                                  = 0x237b000
>> > brk(0x239c000)                          = 0x239c000
>> > open("./cgconfig.conf", O_RDONLY|O_CLOEXEC) = 3
>> > mmap(NULL, 319488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd574b5000
>> > mmap(NULL, 319488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57467000
>> > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481710) = -1 ENOTTY
>> > (Inappropriate ioctl for device)
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=184, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "mount {\n#    cpuset = /cgroup/cp"..., 8192) = 184
>> > read(3, "", 4096)                       = 0
>> > read(3, "", 8192)                       = 0
>> > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481710) = -1 ENOTTY
>> > (Inappropriate ioctl for device)
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/cpu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
>> > mount("cgroup", "/cgroup/cpu", "cgroup", 0, "cpu") = 0
>> > stat("/cgroup/freezer", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
>> > mount("cgroup", "/cgroup/freezer", "cgroup", 0, "freezer") = 0
>> > open("/proc/cgroups", O_RDONLY|O_CLOEXEC) = 3
>> > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "#subsys_name\thierarchy\tnum_cgrou"..., 1024) = 168
>> > read(3, "", 1024)                       = 0
>> > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57529000
>> > read(4, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024
>> > read(4, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162
>> > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 12), ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57528000
>> > write(1, "found cpu in rw,relatime,cpu\n", 29) = 29
>> > write(1, "Found cgroup option rw,relatime,"..., 45) = 45
>> > write(1, "found freezer in rw,relatime,fre"..., 37) = 37
>> > write(1, "Found cgroup option rw,relatime,"..., 49) = 49
>> > read(4, "", 1024)                       = 0
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd57529000, 4096)            = 0
>> > write(1, "creating all cgroups now, error="..., 34) = 34
>> > munmap(0x7fdd574b5000, 319488)          = 0
>> > munmap(0x7fdd57467000, 319488)          = 0
>> > open("/proc/cgroups", O_RDONLY|O_CLOEXEC) = 3
>> > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "#subsys_name\thierarchy\tnum_cgrou"..., 1024) = 168
>> > read(3, "", 1024)                       = 0
>> > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd57529000
>> > read(4, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024
>> > read(4, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162
>> > write(1, "found cpu in rw,relatime,cpu\n", 29) = 29
>> > write(1, "Found cgroup option rw,relatime,"..., 45) = 45
>> > write(1, "found freezer in rw,relatime,fre"..., 37) = 37
>> > write(1, "Found cgroup option rw,relatime,"..., 49) = 49
>> > read(4, "", 1024)                       = 0
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd57529000, 4096)            = 0
>> > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 3
>> > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024
>> > read(3, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > mkdir("/cgroup", 0775)                  = -1 EEXIST (File exists)
>> > mkdir("/cgroup/freezer", 0775)          = -1 EEXIST (File exists)
>> > mkdir("/cgroup/freezer/grp_0", 0775)    = -1 EEXIST (File exists)
>> > write(1, "Changing ownership of /cgroup/fr"..., 45) = 45
>> > write(1, "chown: path is /cgroup/freezer/g"..., 38) = 38
>> > lstat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/", 0, 0)   = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 55) = 55
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/freezer.state", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 63) = 63
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/cgroup.clone_children", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 62) = 62
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/cgroup.event_control", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 59) = 59
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/notify_on_release", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 54) = 54
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/cgroup.procs", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 47) = 47
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/tasks", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0/", 0, 0)   = 0
>> > write(1, "Warning: fts_read failed\n", 25) = 25
>> > write(1, "chmod: path is /cgroup/freezer/g"..., 38) = 38
>> > lstat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "chmod: seeing file /cgroup/freez"..., 55) = 55
>> > write(1, "chmod: seeing file /cgroup/freez"..., 63) = 63
>> > write(1, "chmod: seeing file /cgroup/freez"..., 62) = 62
>> > write(1, "chmod: seeing file /cgroup/freez"..., 59) = 59
>> > write(1, "chmod: seeing file /cgroup/freez"..., 54) = 54
>> > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_0//tasks", 0, 0) = 0
>> > open("/proc/mounts", O_RDONLY|O_CLOEXEC) = 3
>> > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "rootfs / rootfs rw 0 0\nsysfs /sy"..., 1024) = 1024
>> > read(3, ",fd=13,pgrp=3146,timeout=300,min"..., 1024) = 162
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > mkdir("/cgroup", 0775)                  = -1 EEXIST (File exists)
>> > mkdir("/cgroup/freezer", 0775)          = -1 EEXIST (File exists)
>> > mkdir("/cgroup/freezer/grp_1", 0775)    = -1 EEXIST (File exists)
>> > write(1, "Changing ownership of /cgroup/fr"..., 45) = 45
>> > write(1, "chown: path is /cgroup/freezer/g"..., 38) = 38
>> > lstat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/", 0, 0)   = 0
>> > open("/cgroup/freezer/grp_1/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 55) = 55
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/freezer.state", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 63) = 63
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/cgroup.clone_children", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 62) = 62
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/cgroup.event_control", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 59) = 59
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/notify_on_release", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 54) = 54
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/cgroup.procs", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 47) = 47
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/tasks", 0, 0) = 0
>> > write(1, "chown: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1/", 0, 0)   = 0
>> > write(1, "Warning: fts_read failed\n", 25) = 25
>> > write(1, "chmod: path is /cgroup/freezer/g"..., 38) = 38
>> > lstat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42
>> > open("/cgroup/freezer/grp_1/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "chmod: seeing file /cgroup/freez"..., 55) = 55
>> > write(1, "chmod: seeing file /cgroup/freez"..., 63) = 63
>> > write(1, "chmod: seeing file /cgroup/freez"..., 62) = 62
>> > write(1, "chmod: seeing file /cgroup/freez"..., 59) = 59
>> > write(1, "chmod: seeing file /cgroup/freez"..., 54) = 54
>> > write(1, "chmod: seeing file /cgroup/freez"..., 42) = 42
>> > getuid()                                = 0
>> > getgid()                                = 0
>> > chown("/cgroup/freezer/grp_1//tasks", 0, 0) = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87
>> > write(2, "Error with cgroup_get_value_stri"..., 118) = 118
>> > write(1, "FREEZER value group0 : (null)\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "THAWED\n", 4096)               = 7
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.clone_children",
>> {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.event_control",
>> {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "FREEZER value group0 : THAWED\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87
>> > write(2, "Error with cgroup_get_value_stri"..., 118) = 118
>> > write(1, "FREEZER value group0 : (null)\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "THAWED\n", 4096)               = 7
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.clone_children",
>> {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.event_control",
>> {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "FREEZER value group0 : THAWED\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87
>> > write(2, "Error with cgroup_get_value_stri"..., 118) = 118
>> > write(1, "FREEZER value group0 : (null)\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "THAWED\n", 4096)               = 7
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.clone_children",
>> {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.event_control",
>> {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "FREEZER value group0 : THAWED\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87
>> > write(2, "Error with cgroup_get_value_stri"..., 118) = 118
>> > write(1, "FREEZER value group0 : (null)\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "THAWED\n", 4096)               = 7
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.clone_children",
>> {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.event_control",
>> {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "FREEZER value group0 : THAWED\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > write(2, "Error with cgroup_get_cgroup(gro"..., 87) = 87
>> > write(2, "Error with cgroup_get_value_stri"..., 118) = 118
>> > write(1, "FREEZER value group0 : (null)\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > access("/cgroup/cpu/grp_0", F_OK)       = -1 ENOENT (No such file or
>> > directory)
>> > access("/cgroup/freezer/grp_0", F_OK)   = 0
>> > stat("/cgroup/freezer/grp_0//tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > open("/cgroup/freezer/grp_0/",
>> O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) =
>> > 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/grp_0/freezer.state", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > open("/cgroup/freezer/grp_0/freezer.state", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "THAWED\n", 4096)               = 7
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.clone_children",
>> {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.event_control",
>> {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/notify_on_release", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/grp_0/cgroup.procs", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/grp_0/tasks", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "FREEZER value group0 : THAWED\n", 30) = 30
>> > nanosleep({2, 0}, NULL)                 = 0
>> > write(1, "path is /cgroup/freezer/grp_1/\n", 31) = 31
>> > write(1, "parent's name is /cgroup/freezer"..., 43) = 43
>> > stat("/cgroup/freezer/grp_1/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > stat("/cgroup/freezer/grp_1//..", {st_mode=S_IFDIR|0755, st_size=0,
>> ...}) =
>> > 0
>> > write(1, "group name is grp_1\n", 20)   = 20
>> > write(1, "parent's group name is .\n", 25) = 25
>> > open("/cgroup/freezer/.//tasks", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC,
>> 0666) =
>> > 3
>> > write(1, "Removing group freezer:grp_1\n", 29) = 29
>> > open("/cgroup/freezer/grp_1/tasks", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > rmdir("/cgroup/freezer/grp_1/")         = 0
>> > close(3)                                = 0
>> > write(1, "path is /cgroup/freezer/grp_0/\n", 31) = 31
>> > write(1, "parent's name is /cgroup/freezer"..., 43) = 43
>> > stat("/cgroup/freezer/grp_0/", {st_mode=S_IFDIR|0755, st_size=0, ...})
>> = 0
>> > stat("/cgroup/freezer/grp_0//..", {st_mode=S_IFDIR|0755, st_size=0,
>> ...}) =
>> > 0
>> > write(1, "group name is grp_0\n", 20)   = 20
>> > write(1, "parent's group name is .\n", 25) = 25
>> > open("/cgroup/freezer/.//tasks", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC,
>> 0666) =
>> > 3
>> > write(1, "Removing group freezer:grp_0\n", 29) = 29
>> > open("/cgroup/freezer/grp_0/tasks", O_RDONLY|O_CLOEXEC) = 4
>> > fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(4, "", 4096)                       = 0
>> > close(4)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > rmdir("/cgroup/freezer/grp_0/")         = 0
>> > close(3)                                = 0
>> > write(1, "cgroup_config_unload_config: par"..., 53) = 53
>> > open("./cgconfig.conf", O_RDONLY|O_CLOEXEC) = 3
>> > brk(0x23ed000)                          = 0x23ed000
>> > brk(0x243a000)                          = 0x243a000
>> > fstat(3, {st_mode=S_IFREG|0644, st_size=184, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "mount {\n#    cpuset = /cgroup/cp"..., 8192) = 184
>> > read(3, "", 4096)                       = 0
>> > read(3, "", 8192)                       = 0
>> > ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff3b481760) = -1 ENOTTY
>> > (Inappropriate ioctl for device)
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > open("/proc/meminfo", O_RDONLY)         = 3
>> > fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
>> > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) =
>> > 0x7fdd5752a000
>> > read(3, "MemTotal:       16413660 kB\nMemF"..., 1024) = 1024
>> > close(3)                                = 0
>> > munmap(0x7fdd5752a000, 4096)            = 0
>> > write(1, "unmounting cpu\n", 15)        = 15
>> > write(1, "path is /\n", 10)             = 10
>> > stat("/cgroup/cpu/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
>> > write(1, "seeing file /cgroup/cpu/\n", 25) = 25
>> > open("/cgroup/cpu/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
>> > getdents(3, /* 10 entries */, 32768)    = 344
>> > stat("/cgroup/cpu/grp_1", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
>> > stat("/cgroup/cpu/cpu.shares", {st_mode=S_IFREG|0644, st_size=0, ...})
>> = 0
>> > stat("/cgroup/cpu/release_agent", {st_mode=S_IFREG|0644, st_size=0,
>> ...}) =
>> > 0
>> > stat("/cgroup/cpu/cgroup.clone_children", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/cpu/cgroup.event_control", {st_mode=S_IFREG|0222,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/cpu/notify_on_release", {st_mode=S_IFREG|0644, st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/cpu/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0,
>> ...}) = 0
>> > stat("/cgroup/cpu/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "seeing file /cgroup/cpu/grp_1\n", 30) = 30
>> > write(1, "won't unmount cpu: hieararchy is"..., 43) = 43
>> > write(1, "unmounting freezer\n", 19)    = 19
>> > write(1, "path is /\n", 10)             = 10
>> > stat("/cgroup/freezer/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
>> > write(1, "seeing file /cgroup/freezer/\n", 29) = 29
>> > open("/cgroup/freezer/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
>> > getdents(3, /* 8 entries */, 32768)     = 280
>> > stat("/cgroup/freezer/release_agent", {st_mode=S_IFREG|0644, st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/cgroup.clone_children", {st_mode=S_IFREG|0644,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/cgroup.event_control", {st_mode=S_IFREG|0222,
>> > st_size=0, ...}) = 0
>> > stat("/cgroup/freezer/notify_on_release", {st_mode=S_IFREG|0644,
>> st_size=0,
>> > ...}) = 0
>> > stat("/cgroup/freezer/cgroup.procs", {st_mode=S_IFREG|0644, st_size=0,
>> ...})
>> > = 0
>> > stat("/cgroup/freezer/tasks", {st_mode=S_IFREG|0644, st_size=0, ...}) =
>> 0
>> > getdents(3, /* 0 entries */, 32768)     = 0
>> > close(3)                                = 0
>> > write(1, "seeing file /cgroup/freezer/rele"..., 42) = 42
>> > write(1, "seeing file /cgroup/freezer/cgro"..., 50) = 50
>> > write(1, "seeing file /cgroup/freezer/cgro"..., 49) = 49
>> > write(1, "seeing file /cgroup/freezer/noti"..., 46) = 46
>> > write(1, "seeing file /cgroup/freezer/cgro"..., 41) = 41
>> > write(1, "seeing file /cgroup/freezer/task"..., 34) = 34
>> > write(1, "seeing file /cgroup/freezer/\n", 29) = 29
>> > write(1, "unmounting freezer at /cgroup/fr"..., 38) = 38
>> > umount("/cgroup/freezer", 0)            = -1 EBUSY (Device or resource
>> busy)
>> > brk(0x23a0000)                          = 0x23a0000
>> > write(2, "Error with cgroup_config_unload_"..., 76) = 76
>> > exit_group(1)                           = ?
>> >
>> >
>> > ----
>> >
>> > --
>> > Alexandre LAURENT
>> >
>> > 2014-12-16 17:40 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>:
>> >>
>> >> I'm afraid I've lost the logs (sorry, forced email cleanup). I
>> >> remember seeing a rollback action because an action failed. Would you
>> >> mind resending it?
>> >>
>> >> Balbir Singh.
>> >>
>> >> On Tue, Dec 16, 2014 at 9:50 PM, Alexandre LAURENT
>> >> <pro.laurent.alexan...@gmail.com> wrote:
>> >> > I have continued my investigation about this issue.
>> >> > On all machines that I have access, with different kernels : 3.2,
>> 3.5.5,
>> >> > 3.14, I have always the same issue.
>> >> > I am trying to run the tests available in libcgroups 0.41. TEST17
>> from
>> >> > second pass and TEST25 from third pass are always failing. These
>> tests
>> >> > are
>> >> > related to cgroup_get_cgroup().
>> >> >
>> >> > Can you reproduce and investigate on this, please ?
>> >> >
>> >> > Best regards,
>> >> >
>> >> >
>> >> > 2014-12-09 17:21 GMT+01:00 Alexandre LAURENT
>> >> > <pro.laurent.alexan...@gmail.com>:
>> >> >>
>> >> >> Hello,
>> >> >>
>> >> >> I am attaching the strace from my program.
>> >> >> This segment appears when I am calling cgroup_get_cgroup() :
>> >> >>
>> >> >> access("/cgroup/freezer/grp_1", F_OK)   = 0
>> >> >> stat("/cgroup/freezer/grp_1//tasks", {st_mode=S_IFREG|0644,
>> st_size=0,
>> >> >> ...}) = 0
>> >> >> gettid()                                = 18300
>> >> >> write(2, "E1209 16:57:17.328337 18300 cgro"..., 108) = 108
>> >> >>
>> >> >> (gettid() and write() calls are coming from my logger.)
>> >> >>
>> >> >> Thanks for your help,
>> >> >>
>> >> >>
>> >> >>
>> >> >> 2014-12-08 18:52 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>:
>> >> >>>
>> >> >>> Thanks.. we need the strace logs for the run
>> >> >>>
>> >> >>> Balbir Singh.
>> >> >>>
>> >> >>> On Mon, Dec 8, 2014 at 10:34 PM, Alexandre LAURENT
>> >> >>> <pro.laurent.alexan...@gmail.com> wrote:
>> >> >>> > As far as I know, yes, it is compiled. Memory controller is
>> normally
>> >> >>> > mounted
>> >> >>> > in /cgroup/ and all files are present.
>> >> >>> > Here my kernel config :
>> >> >>> >
>> >> >>> > CONFIG_CGROUPS=y
>> >> >>> > # CONFIG_CGROUP_DEBUG is not set
>> >> >>> > CONFIG_CGROUP_FREEZER=y
>> >> >>> > CONFIG_CGROUP_DEVICE=y
>> >> >>> > CONFIG_CGROUP_CPUACCT=y
>> >> >>> > CONFIG_CGROUP_MEM_RES_CTLR=y
>> >> >>> > CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
>> >> >>> > # CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED is not set
>> >> >>> > CONFIG_CGROUP_PERF=y
>> >> >>> > CONFIG_CGROUP_SCHED=y
>> >> >>> > CONFIG_BLK_CGROUP=y
>> >> >>> > # CONFIG_DEBUG_BLK_CGROUP is not set
>> >> >>> > CONFIG_NET_CLS_CGROUP=y
>> >> >>> >
>> >> >>> > If I disable memory controller everything will work fine with all
>> >> >>> > other
>> >> >>> > controllers. But, when enabling again memory controller, I have
>> >> >>> > problems
>> >> >>> > getting some files like freezer.state or memory.failctn. I guess
>> >> >>> > this
>> >> >>> > is
>> >> >>> > because of the failure of cgroup_get_cgroup().
>> >> >>> >
>> >> >>> > Am I missing something ?
>> >> >>> >
>> >> >>> > Best regards,
>> >> >>> >
>> >> >>> >
>> >> >>> > 2014-12-08 11:32 GMT+01:00 Balbir Singh <bsinghar...@gmail.com>:
>> >> >>> >>
>> >> >>> >> On Mon, Dec 8, 2014 at 3:52 PM, Alexandre LAURENT
>> >> >>> >> <pro.laurent.alexan...@gmail.com> wrote:
>> >> >>> >> > Hello,
>> >> >>> >> >
>> >> >>> >> > I am using libcg 0.41 and Linux Kernel 3.2.0.4 (AMD 64) on
>> Debian
>> >> >>> >> > 7.
>> >> >>> >> > When I am using memory controller (and some others) through
>> the
>> >> >>> >> > following
>> >> >>> >> > config file :
>> >> >>> >> > ---
>> >> >>> >> > mount {
>> >> >>> >> >     cpu = /cgroup/cpu;
>> >> >>> >> >     freezer = /cgroup/freezer;
>> >> >>> >> >     net_cls = /cgroup/net_cls;
>> >> >>> >> >     blkio = /cgroup/blkio;
>> >> >>> >> >     memory = /cgroup/memory;
>> >> >>> >> > }
>> >> >>> >> > ---
>> >> >>> >> >
>> >> >>> >> > the cgroup_get_cgroup() function is returning an error "Cgroup
>> >> >>> >> > invalid
>> >> >>> >> > operation".
>> >> >>> >> > The error seems to be emitted from cgroup_add_controller()
>> which
>> >> >>> >> > will
>> >> >>> >> > return on this case :
>> >> >>> >> > /*
>> >> >>> >> >  * Still not sure how to handle the failure here.
>> >> >>> >> >  */
>> >> >>> >> > for (i = 0; i < cgroup->index; i++) {
>> >> >>> >> >     if (strncmp(name, cgroup->controller[i]->name,
>> >> >>> >> >             sizeof(cgroup->controller[i]->name)) == 0)
>> >> >>> >> >     {
>> >> >>> >> >         return NULL;
>> >> >>> >> >     }
>> >> >>> >> > }
>> >> >>> >> >
>> >> >>> >> >
>> >> >>> >> > When commenting the memory controller line, the error
>> disappear.
>> >> >>> >> > I have also tried to output all debug messages available in
>> >> >>> >> > libcg,
>> >> >>> >> > but
>> >> >>> >> > none
>> >> >>> >> > of these seems related to this issue.
>> >> >>> >> >
>> >> >>> >> > What can cause this issue ?
>> >> >>> >>
>> >> >>> >> Is memory cgroup compiled?
>> >> >>> >>
>> >> >>> >> Balbir Singh.
>> >> >>> >
>> >> >>> >
>> >> >>
>> >> >>
>> >> >
>>
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to