I think looking at the source code will show you, cgroup_free is required to cleanup internal stuff. Ideally try this
1. For writing you should be able to fill multiple controller values, no problem - please check, I think we should have a test for this too 2. Don't fill any controller info for reading, ideally reading should fill all controllers corresponding to that group, provided the relative path is correct Balbir Singh On Fri, Dec 19, 2014 at 10:22 PM, Alexandre LAURENT <pro.laurent.alexan...@gmail.com> wrote: > 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