Ian Downes created MESOS-1282:
---------------------------------

             Summary: Support unprivileged access to cgroups
                 Key: MESOS-1282
                 URL: https://issues.apache.org/jira/browse/MESOS-1282
             Project: Mesos
          Issue Type: Improvement
    Affects Versions: 0.19.0
            Reporter: Ian Downes
            Priority: Minor
             Fix For: 0.19.0


Supporting this would allow running tests with cgroup isolators on CI machines 
where sudo access is unavailable.

This could be achieved by having the subsystems mounted and the mesos (or 
mesos_test) cgroup created and owned by the unprivileged user.

{noformat}
[vagrant@mesos cpu]$ cat /proc/mounts | grep cgroup
tmpfs /sys/fs/cgroup tmpfs rw,relatime 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,relatime,cpuset,clone_children 0 0
cgroup /sys/fs/cgroup/cpu cgroup rw,relatime,cpu,clone_children 0 0
cgroup /sys/fs/cgroup/cpuacct cgroup rw,relatime,cpuacct,clone_children 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,relatime,memory,clone_children 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices,clone_children 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,relatime,freezer,clone_children 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,relatime,net_cls,clone_children 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio,clone_children 0 0

[vagrant@mesos cpu]$ pwd
/sys/fs/cgroup/cpu

[vagrant@mesos cpu]$ ls -la
total 0
drwxr-xr-x  2 root root   0 May  1 22:11 .
drwxrwxrwt 10 root root 200 Apr 30 23:09 ..
-rw-r--r--  1 root root   0 Apr 30 23:14 cgroup.clone_children
--w--w--w-  1 root root   0 Apr 30 23:09 cgroup.event_control
-rw-r--r--  1 root root   0 Apr 30 23:09 cgroup.procs
-rw-r--r--  1 root root   0 Apr 30 23:09 cpu.cfs_period_us
-rw-r--r--  1 root root   0 Apr 30 23:09 cpu.cfs_quota_us
-rw-r--r--  1 root root   0 Apr 30 23:09 cpu.rt_period_us
-rw-r--r--  1 root root   0 Apr 30 23:09 cpu.rt_runtime_us
-rw-r--r--  1 root root   0 Apr 30 23:09 cpu.shares
-r--r--r--  1 root root   0 Apr 30 23:09 cpu.stat
-rw-r--r--  1 root root   0 Apr 30 23:09 notify_on_release
-rw-r--r--  1 root root   0 Apr 30 23:09 release_agent
-rw-r--r--  1 root root   0 Apr 30 23:09 tasks
{noformat}

User is unprivileged:
{noformat}
[vagrant@mesos cpu]$ id
uid=500(vagrant) gid=500(vagrant) groups=500(vagrant),10(wheel)

[vagrant@mesos cpu]$ mkdir mesos
mkdir: cannot create directory `mesos': Permission denied
{noformat}

Create a cgroup and chown to the unprivileged user.
{noformat}
[vagrant@mesos cpu]$ sudo mkdir mesos && sudo chown -R vagrant:vagrant mesos

[vagrant@mesos cpu]$ ls -la
total 0
drwxr-xr-x  3 root    root      0 May  1 22:11 .
drwxrwxrwt 10 root    root    200 Apr 30 23:09 ..
-rw-r--r--  1 root    root      0 Apr 30 23:14 cgroup.clone_children
--w--w--w-  1 root    root      0 Apr 30 23:09 cgroup.event_control
-rw-r--r--  1 root    root      0 Apr 30 23:09 cgroup.procs
-rw-r--r--  1 root    root      0 Apr 30 23:09 cpu.cfs_period_us
-rw-r--r--  1 root    root      0 Apr 30 23:09 cpu.cfs_quota_us
-rw-r--r--  1 root    root      0 Apr 30 23:09 cpu.rt_period_us
-rw-r--r--  1 root    root      0 Apr 30 23:09 cpu.rt_runtime_us
-rw-r--r--  1 root    root      0 Apr 30 23:09 cpu.shares
-r--r--r--  1 root    root      0 Apr 30 23:09 cpu.stat
drwxr-xr-x  2 vagrant vagrant   0 May  1 22:12 mesos
-rw-r--r--  1 root    root      0 Apr 30 23:09 notify_on_release
-rw-r--r--  1 root    root      0 Apr 30 23:09 release_agent
-rw-r--r--  1 root    root      0 Apr 30 23:09 tasks
{noformat}

The unprivileged user can now create nested cgroups and move processes into/out 
of cgroups it owns.
{noformat}
[vagrant@mesos cpu]$ echo $$
2877

[vagrant@mesos cpu]$ echo $$ > mesos/cgroup.procs

[vagrant@mesos cpu]$ cat mesos/cgroup.procs
2877
2957

[vagrant@mesos cpu]$ mkdir mesos/test

[vagrant@mesos cpu]$ echo $$ > mesos/test/cgroup.procs

[vagrant@mesos cpu]$ cat mesos/test/cgroup.procs
2877
2960
[vagrant@mesos cpu]$ echo $$ > mesos/cgroup.procs
[vagrant@mesos cpu]$ cat mesos/cgroup.procs
2877
2977
{noformat}




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to