मैं एक गैर-रूट उपयोगकर्ता के रूप में लिनक्स cgroups कैसे बना और उपयोग कर सकता हूं?


21

मैं गैर-रूट उपयोगकर्ता के रूप में cgroups कैसे बना और उपयोग कर सकता हूं ?

उदाहरण के लिए, क्या मैं, पूरी तरह से एक गैर-रूट उपयोगकर्ता के रूप में कर सकता हूं:

  • एक सीपीयू तक पहुँच के साथ एक cgroup बनाएँ
  • उस cgroup में एक नई प्रक्रिया बनाएँ

?

मैंने पहली बार यहां पूछा था लेकिन मुझे पूरा जवाब नहीं मिला। मैंने स्टैकओवरफ्लो पर भी पूछा , लेकिन यह विषय बंद विषय के रूप में था।

जवाबों:


18

आप एक सामान्य उपयोगकर्ता के रूप में ऐसा नहीं कर सकते। लेकिन आप एक cgroup को रूट के रूप में सेट कर सकते हैं, और इसे अपने उपयोगकर्ता द्वारा कॉन्फ़िगर करने योग्य बना सकते हैं।

यदि आपके पास पहले से ही डिफ़ॉल्ट cgroups नियंत्रक नहीं है जैसे कि 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

एक समूह बनाएं:

$ 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 हटाने के लिए उपयोग करें ।
डेनिस बी।

आप फ़ाइल खाली rmdirहोने तक नहीं कर सकते tasks। रूट को उपसमूह में /dev/cpuset/tasksफ़ंक्शंस फ़ाइल को देखने की आवश्यकता होगी, और वहां प्रत्येक cid को रूट cgroup के फ़ंक्शंस फ़ाइल ( मेरे RHEL 6.7 [कर्नेल 2.6.32-358] बॉक्स पर) में इको करें, लेकिन ऐसा लगता है कि यह /sys/fs/cgroup/cpuset/tasksयहाँ उपयुक्त है)।
माइक एस

1

यदि आप उबंटू का उपयोग कर रहे हैं तो आप (रूट उपयोगकर्ता) cgroup-lite को इंस्टॉल कर सकते हैं और जोड़ सकते हैं कि आपको /etc/cgconfig.conf में क्या चाहिए, जिसमें उपयोगकर्ता (s) cgroup का कॉन्फ़िगरेशन बदल सकते हैं। यह बूट पर चलता है।

असफल होना कि आप (रूट उपयोगकर्ता) बूट के दौरान चलाने के लिए अपनी खुद की स्क्रिप्ट जोड़ सकते हैं।


0

Lg पर cgroups पर लेखों की एक श्रंखला है , भाग 1 देखें , या फिर देखें कि खोज वहाँ क्यों है। सिस्टमड में cgroups को प्रबंधित करने के लिए सहायकों का एक सेट शामिल है (प्रक्रियाओं का मंचन )।


भाग 1 के लिए यह लिंक संभवतः lwn.net/Articles/531114 के बजाय इंगित करना चाहिए ।
१२:१३ को

लिंक किया गया LWN लेख नामस्थानों के बारे में है, lwn.net/Articles/604609 cgroups के बारे में है।
डेनिस बी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.