Bagaimana saya bisa membuat dan menggunakan Linux cgroups sebagai pengguna non-root?

21

Bagaimana saya bisa membuat dan menggunakan cgroup sebagai pengguna non-root?

Misalnya, bisakah saya, sepenuhnya sebagai pengguna non-root:

  • buat cgroup dengan akses ke satu CPU
  • buat proses baru di cgroup itu

?

Saya pertama kali bertanya di sini tetapi saya tidak menerima jawaban yang lengkap. Saya juga bertanya di stackoverflow , tetapi pertanyaan itu ditutup sebagai off topic.

Adam Monsen
sumber

Jawaban:

18

Anda tidak dapat melakukan itu sebagai pengguna biasa. Tetapi Anda dapat mengatur cgroup sebagai root, dan membuatnya dapat dikonfigurasi oleh pengguna Anda.

Jika Anda belum memiliki pengontrol cgroup default yang dipasang oleh eg 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

Buat cgroup:

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

Anda sekarang dapat mengubah konfigurasi cgroup Anda sebagai pengguna normal:

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

Tambahkan proses ke grup itu:

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

Atau buat subkelompok:

$ 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
sumber
bagaimana Anda menghapus subkelompok? rm -rgagal untuk saya
hbogert
1
rm -rakan mencoba untuk menghapus file terlebih dahulu, yang gagal. Gunakan rmdiruntuk menghapus cgroup.
Dennis B.
Anda tidak bisa rmdirsampai tasksfile tersebut kosong. root akan perlu melihat file tugas di subkelompok, dan menggemakan setiap pid di sana ke dalam file tugas root cgroup ( /dev/cpuset/taskspada kotak RHEL 6.7 [kernel 2.6.32-358] saya, tetapi sepertinya /sys/fs/cgroup/cpuset/tasksmungkin sesuai di sini).
Mike S
1

Jika Anda menggunakan Ubuntu, Anda (pengguna root) dapat menginstal cgroup-lite dan menambahkan apa yang Anda butuhkan ke /etc/cgconfig.conf, termasuk pengguna mana yang dapat mengubah konfigurasi cgroup. Ini berjalan saat boot.

Gagal bahwa Anda (pengguna root) dapat menambahkan skrip Anda sendiri untuk dijalankan saat boot.

Ken Sharp
sumber
0

Ada serangkaian artikel tentang LWN di cgroups, lihat bagian 1 , atau lihat pencarian di sana. Systemd mencakup seperangkat pembantu untuk mengelola (proses yang dikurung oleh) grup.

vonbrand
sumber
Tautan untuk bagian 1 mungkin seharusnya mengarah ke lwn.net/Articles/531114 .
chris
Artikel LWN yang ditautkan adalah tentang namespaces, lwn.net/Articles/604609 adalah tentang cgroups.
Dennis B.