对于CPUSET子系统我们主要解释对cpuset.cpus的操作。Read操作根据《cgroup学习(三)——伪文件》可以很容易的跟踪到代码,并解读,所以我们这里就不赘述,直接解释write及attach操作。首先我们看一下write操作的bt(使用systemtap见《使用systemtap获得内核函数的局部变量》):
sudo sh -c "echo 0-3 > cpuset.cpus"
13219 (sh) cpuset_change_cpumask call trace:
0xffffffff810c2fc0 :cpuset_change_cpumask+0x0/0x20 [kernel]
0xffffffff810bfc6b :cgroup_scan_tasks+0x17b/0x270 [kernel]
0xffffffff810c4c2c :cpuset_write_resmask+0x17c/0x350 [kernel]
0xffffffff810be14f :cgroup_file_write+0x16f/0x320 [kernel]
0xffffffff81177e68 :vfs_write+0