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