वर्चुअलबॉक्स की मेमोरी उपयोग को सीमित करने के लिए cgroup का उपयोग करें


9

मैं cgroupवर्चुअलबॉक्स की मेमोरी उपयोग को सीमित करने के लिए (कंट्रोल ग्रुप) का उपयोग करने की कोशिश कर रहा हूं , लेकिन यह काम नहीं करता है।

मेरी मशीन है:

$ uname -a
Linux fc.bgi 2.6.40-4.fc15.i686 #1 SMP Fri Jul 29 18:54:39 UTC 2011 i686 i686 i386 GNU/Linux

मैंने इसे इस तरह काम करने की कोशिश की:

  1. स्मृति पदानुक्रम के तहत नए समूह बनाना:

    $ cgcreate -g memory:vbox
    
  2. Vbox के लिए मैमोरी सेट करना .limit_in_bytes:

    $ cgset -r memory.limit_in_bytes=512M vbox
    
  3. Vbox चलाने वाले vbox को vbox में समूहीकृत करना:

    $ cgclassify -g memory:vbox 20015
    

क्या कोई समझा सकता है कि यह काम क्यों नहीं कर रहा है?

जवाबों:


3

आप इस फ़ाइल में /etc/security/limits.conf के साथ मेमोरी उपयोग को सीमित कर सकते हैं:

domain type item value

जहां domainहै @groupname, typeवह है hardया वह सीमा softकहां hardहै जिसे किसी भी परिस्थिति में पार नहीं किया जा सकता है।

itemआइटम फ़ील्ड निर्दिष्ट करता है कि किस प्रकार का आइटम सीमित किया जा रहा है। उदाहरणों में कोर (कोर फ़ाइलों का आकार), डेटा (प्रोग्राम के डेटा क्षेत्र का आकार), fsize (उपयोगकर्ता द्वारा बनाई गई फ़ाइलों का आकार), nofile (खुले डेटा फ़ाइलों की संख्या), rss (निवासी सेट) आकार), स्टैक (स्टैक आकार), सीपीयू (मिनटों में एक ही प्रक्रिया का सीपीयू समय), एनप्रो (समवर्ती प्रक्रियाओं की संख्या), मैक्सोलोगिन (एक साथ लॉगिन की संख्या), और प्राथमिकता (प्रक्रिया प्राथमिकता)। डेटा, आरएसएस, और स्टैक आइटम सभी एक समर्थक ग्राम द्वारा खपत स्मृति से संबंधित हैं। डेटा क्षमता के इन और अन्य उपायों को किलोबाइट में मापा जाता है।

और valueउस itemक्षेत्र से संबंधित है जिसे आपने चुना है, उदाहरण के लिए यदि आपने फ़ील्ड cpuमें चुना है itemऔर तत्कालीन स्थिति में डाल दिया 2है (तो आप VirtualBox के समूह) को cpu समय से अधिक समय लगता है इसे समाप्त कर दिया जाएगा।valuedomain2

आप भी उपयोग कर सकते हैं ulimit, लेकिन यह केवल बैश शेल तक ही सीमित है।

आशा है कि यह आपको लक्ष्य में मदद करेगा, हालाँकि यह आपके द्वारा पूछे गए तरीके से नहीं किया गया है।


1

मुझे लगता है कि आपकी /etc/cgconfig.confफ़ाइल में कुछ गड़बड़ है । यह सेटअप मेरे लिए काम करता है:

[root@localhost cgroup]# cat /etc/cgconfig.conf
mount {
    memory  = /cgroup/memory;
}

[root@localhost cgroup]# service cgconfig start
Starting cgconfig service:                                 [  OK  ]
[root@localhost cgroup]# ls
memory
[root@localhost cgroup]# ls memory/
cgroup.event_control  memory.limit_in_bytes        memory.memsw.max_usage_in_bytes  memory.soft_limit_in_bytes  memory.use_hierarchy
cgroup.procs          memory.max_usage_in_bytes    memory.memsw.usage_in_bytes      memory.stat                 notify_on_release
memory.failcnt        memory.memsw.failcnt         memory.move_charge_at_immigrate  memory.swappiness           release_agent
memory.force_empty    memory.memsw.limit_in_bytes  memory.oom_control               memory.usage_in_bytes       tasks
[root@localhost cgroup]# cgcreate -g memory:vbox
[root@localhost cgroup]# cgset -r memory.limit_in_bytes=512M vbox
[root@localhost cgroup]# cgclassify -g memory:vbox 11727
[root@localhost cgroup]# cat memory/vbox/tasks 
11727

हालाँकि, आदेशों cgreateऔर cgsetआदेशों का उपयोग करने के बजाय , मैं आपको सलाह दूंगा कि आप एक ऐसी /etc/cgconfig.confफाइल बनाएं जिसमें ये सेटिंग्स शामिल हों ताकि आपको हर रिबूट के बाद प्रक्रिया को दोहराना न पड़े। आपके मामले में, फ़ाइल इस तरह दिखाई देगी:

[root@localhost cgroup]# cat /etc/cgconfig.conf
mount {
    memory  = /cgroup/memory;
}

group vbox {
    memory {
        memory.limit_in_bytes="536870912";
    }
}

अब, हर बार जब आप cgconfigसेवा शुरू करते हैं , तो आप अपना vbox cgroup तैयार करेंगे। सभी की जरूरत है /cgroups/memory/vbox/tasksया तो वर्चुअलबॉक्स के पीआईडी ​​को फ़ाइल में स्थानांतरित करना हैcgclassify या या केवल echoउस फ़ाइल में नंबर स्थानांतरित करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.