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.

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

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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.