Jak mogę utworzyć i używać grup cG Linux jako użytkownik inny niż root?

21

Jak mogę tworzyć i używać cgroups jako użytkownik inny niż root?

Na przykład, czy mogę, jako użytkownik inny niż root:

  • utwórz grupę z dostępem do jednego procesora
  • utwórz nowy proces w tej grupie

?

Najpierw zapytałem tutaj, ale nie otrzymałem pełnej odpowiedzi. Zapytałem również o stackoverflow , ale pytanie zostało zamknięte jako nie na temat.

Adam Monsen
źródło

Odpowiedzi:

18

Nie możesz tego zrobić jako zwykły użytkownik. Ale możesz skonfigurować cgroup jako root i ustawić ją jako konfigurowalną przez użytkownika.

Jeśli nie masz jeszcze domyślnych kontrolerów cgroups podłączonych np. Przez systemd:

$ sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ sudo mkdir /sys/fs/cgroup/cpuset
$ sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

Utwórz grupę cgroup:

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

Możesz teraz zmodyfikować konfigurację swojej grupy cgroup jako zwykły użytkownik:

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

Dodaj proces do tej grupy:

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

Lub utwórz podgrupę:

$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks
Chris
źródło
jak usunąłbyś podgrupę? rm -rmi się nie udaje
hbogert,
1
rm -rspróbuje najpierw usunąć pliki, co się nie powiedzie. Użyj, rmdiraby usunąć grupę.
Dennis B.
Nie możesz, rmdirdopóki tasksplik nie będzie pusty. root musiałby spojrzeć na plik zadań w podgrupie i wysłać echo każdego pid tam do pliku zadań głównej grupy cgroup ( /dev/cpuset/tasksna moim polu RHEL 6.7 [jądro 2.6.32-358], ale wygląda na to, /sys/fs/cgroup/cpuset/tasksże tutaj może być właściwe).
Mike S
1

Jeśli używasz Ubuntu, możesz (użytkownik root) zainstalować cgroup-lite i dodać to, czego potrzebujesz do /etc/cgconfig.conf, w tym także, którzy użytkownicy mogą zmienić konfigurację grupy. Działa podczas rozruchu.

W przeciwnym razie (użytkownik root) możesz dodać własny skrypt do uruchomienia podczas rozruchu.

Ken Sharp
źródło