Come posso creare e usare i cgroup di Linux come utente non root?


21

Come posso creare e usare i cgroup come utente non root?

Ad esempio, posso, interamente come utente non root:

  • creare un cgroup con accesso a una CPU
  • creare un nuovo processo in quel cgroup

?

Ho chiesto prima qui ma non ho ricevuto una risposta completa. Ho anche chiesto su StackOverflow , ma la domanda è stata chiusa come fuori tema.

Risposte:


18

Non puoi farlo come un normale utente. Ma puoi impostare un cgroup come root e renderlo configurabile dal tuo utente.

Se non hai già i controller cgroups predefiniti montati, ad esempio, da 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

Crea un cgroup:

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

Ora puoi modificare la configurazione del tuo cgroup come un normale utente:

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

Aggiungi un processo a quel gruppo:

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

O crea un sottogruppo:

$ 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

come elimineresti il ​​sottogruppo? rm -rfallisce per me
hbogert,

1
rm -rproverebbe prima a eliminare i file, il che non riesce. Utilizzare rmdirper rimuovere un cgroup.
Dennis B.

Non è possibile rmdirfino a quando il tasksfile è vuoto. root avrebbe bisogno di guardare il file delle attività nel sottogruppo e fare eco ogni pid nel file delle attività del cgroup di root ( /dev/cpuset/taskssul mio riquadro RHEL 6.7 [kernel 2.6.32-358], ma sembra che /sys/fs/cgroup/cpuset/taskspotrebbe essere appropriato qui).
Mike S,

1

Se stai usando Ubuntu tu (l'utente root) puoi installare cgroup-lite e aggiungere ciò che ti serve a /etc/cgconfig.conf, incluso quali utenti possono cambiare la configurazione del cgroup. Funziona all'avvio.

In caso contrario (l'utente root) è possibile aggiungere il proprio script da eseguire durante l'avvio.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.