ฉันจะสร้างและใช้ Linux cgroups เป็นผู้ใช้ที่ไม่ใช่รูทได้อย่างไร?


21

ฉันจะสร้างและใช้กลุ่มcgเป็นผู้ใช้ที่ไม่ใช่รูทได้อย่างไร?

ตัวอย่างเช่นฉันเป็นผู้ใช้ที่ไม่ใช่รูททั้งหมดได้หรือไม่:

  • สร้าง cgroup ด้วยการเข้าถึง CPU หนึ่งตัว
  • สร้างกระบวนการใหม่ใน cgroup นั้น

?

ฉันถามครั้งแรกที่นี่แต่ฉันไม่ได้รับคำตอบที่สมบูรณ์ ฉันยังถามเกี่ยวกับ stackoverflowแต่คำถามถูกปิดเป็นหัวข้อปิด

คำตอบ:


18

คุณไม่สามารถทำได้ในฐานะผู้ใช้ปกติ แต่คุณสามารถตั้งค่ากลุ่ม cgroup เป็น root และทำให้ผู้ใช้ของคุณสามารถกำหนดค่าได้

หากคุณยังไม่ได้ติดตั้งคอนโทรลเลอร์กลุ่มเริ่มต้นไว้เช่น 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

สร้าง cgroup:

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

ตอนนี้คุณสามารถแก้ไขการกำหนดค่าของ cgroup ได้ในฐานะผู้ใช้ปกติ:

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

เพิ่มกระบวนการในกลุ่มนั้น:

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

หรือสร้างกลุ่มย่อย:

$ 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

คุณจะลบกลุ่มย่อยอย่างไร? rm -rล้มเหลวสำหรับฉัน
hbogert

1
rm -rจะพยายามลบไฟล์ก่อนซึ่งล้มเหลว ใช้rmdirเพื่อลบ cgroup
Dennis B.

คุณไม่สามารถrmdirจนกว่าtasksไฟล์จะว่างเปล่า รูตจะต้องดูไฟล์งานในกลุ่มย่อยและสะท้อนแต่ละ pid ที่นั่นลงในไฟล์งานของรูท cgroup ( /dev/cpuset/tasksในกล่อง RHEL 6.7 [เคอร์เนล 2.6.32-358] ของฉัน แต่ดูเหมือนว่า/sys/fs/cgroup/cpuset/tasksอาจเหมาะสมตามที่นี่)
Mike S

1

หากคุณใช้ Ubuntu คุณ (ผู้ใช้รูท) สามารถติดตั้งcgroup-liteและเพิ่มสิ่งที่คุณต้องการใน /etc/cgconfig.conf รวมถึงผู้ใช้คนใดที่สามารถเปลี่ยนการกำหนดค่าของ cgroup ได้ มันทำงานในการบูต

ความล้มเหลวที่คุณ (ผู้ใช้รูท) สามารถเพิ่มสคริปต์ของคุณเองให้ทำงานในระหว่างการบูต


0

มีบทความเกี่ยวกับLWNในกลุ่ม cg ดูส่วนที่ 1หรือดูจากการค้นหาที่นั่น Systemdรวมถึงชุดของผู้ช่วยในการจัดการ (กระบวนการกรงโดย) กลุ่ม cg


ลิงก์สำหรับส่วนที่ 1 น่าจะชี้ไปที่lwn.net/Articles/531114แทน
Chris

บทความ LWN ที่ลิงก์เป็นเรื่องเกี่ยวกับเนมสเปซlwn.net/Articles/604609เป็นเรื่องเกี่ยวกับ cgroups
Dennis B.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.