attach task
该过程对应于我们上面的实例操作的:echo 512 > tasks的过程,其实质就是先对cgroup下tasks文件进行写操作,建立该进程新的css_set与所有管理它的cgroup的关系;然后再根据各个子系统自己的attach函数进行attach操作。在这里我们先介绍第一个过程,第二个过程在各个子系统中介绍。先看一下bt:
12530 (sh) cpu_cgroup_attach call trace:
0xffffffff81065a20 :cpu_cgroup_attach+0x0/0x60 [kernel]
0xffffffff810c1d3e :cgroup_attach_task+0x26e/0x620 [kernel]
0xffffffff810c214c :cgroup_tasks_write+0x5c/0xf0 [kernel]
0xffffffff810be29a :cgroup_file_write+0x2ba/0x320 [kernel]
0xffffffff81177e68 :vfs_write+0xb8/0x1a0 [kernel]
0xffffffff81178871 : sys_write+0x51/0x90[kernel]
0xffffffff8100b0f2 :system_call_fastpath+0x16/0x1b [kernel]
从该bt可以看到在第一个过程中最终调用的函数为cgroup_attach_task:首先通过task_cgroup_from_root确定该task现在属于该hiera